Hola, me solicitaron realizar un bloque para que no puedan CANCELAR las entradas de mercancías. Realice el siguiente transaction pero no funciona y permite que se creé el documento de cancelación de la entra de mercancia. Me pueden apoyar a revisar si estoy omitiendo algo, por favor.
IF (@object_type = '20' And @transaction_type ='C')
Declare @CO int ;
set @CO = (SELECT COUNT(T0.DocEntry) FROM OPDN T0 WHERE T0.[DocEntry]= @list_of_cols_val_tab_del AND T0.DocStatus='0')
BEGIN
IF (@CO >=1)
BEGIN
set @error = 0911
set @error_message = ' Realizar una DEVOLUCIÓN, no cancelar la Entrada de Mercancias'
END
END
Hola @fernanda_h no es mas fácil que desde la matriz de autorizaciones le quites el permiso al o a los usuarios para cancelar los documento creo que es mas fácil eso que estar creando código en el TN.
Tu lógica parece estar en el camino correcto, pero hay algunos puntos que debes considerar para asegurarte de que el Transaction Notification funcione como esperas. Aquí tienes una versión revisada y ajustada del código:
Código Revisado para Transaction Notification
IF @object_type = '20' AND @transaction_type = 'C'
BEGIN
DECLARE @CO INT;
SELECT @CO = COUNT(T0.DocEntry)
FROM OPDN T0
WHERE T0.DocEntry = @list_of_cols_val_tab_del AND T0.DocStatus = 'C';
IF @CO >= 1
BEGIN
SET @error = 911
SET @error_message = 'Realizar una DEVOLUCIÓN, no cancelar la Entrada de Mercancias';
END
END
Puntos a Considerar
Verificación del Estado del Documento: Asegúrate de que la condición para DocStatus está correcta. En SAP Business One, los estados típicos son:
'O' para abierto (Open)
'C' para cerrado (Closed)
'N' para cancelado (Cancelled)
En tu caso, parece que quieres evitar la cancelación, por lo que deberías verificar si el documento está en estado abierto antes de permitir la cancelación.
Encapsulamiento del Código: Encapsular el código dentro del bloque BEGIN...END es esencial para asegurarte de que las operaciones se realicen correctamente en el contexto adecuado.
Mensajes de Error: Asegúrate de que el código de error y el mensaje sean claros y comprensibles para los usuarios.
Probar el Código
Implementar el Código:
Asegúrate de que el código está implementado correctamente en el procedimiento almacenado de Transaction Notification en la base de datos de SAP Business One.
Probar la Funcionalidad:
Intenta cancelar una entrada de mercancía y verifica si el bloqueo funciona como se espera.
Asegúrate de que el mensaje de error aparece y que no se permite la cancelación.
Verificar Logs y Errores:
Revisa los logs de SAP Business One para asegurarte de que no haya errores adicionales o problemas con el Transaction Notification.
Resumen
El código revisado debería bloquear la cancelación de entradas de mercancías y asegurar que los usuarios realicen una devolución en lugar de una cancelación. Asegúrate de implementar y probar el código adecuadamente en tu entorno de SAP Business One para verificar su efectividad. Si necesitas más detalles o asistencia específica, no dudes en preguntar. ¡Estoy aquí para ayudarte!