Bloqueo para que no Cancelar Entradas Mercancia

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.

Es una opinión y espero sea de ayuda.
Saludos

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

  1. 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.

  2. 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.

  3. 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

  1. 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.
  2. 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.
  3. 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!

Este tema se cerró automáticamente 7 días después de la última publicación. No se permiten nuevas respuestas.