Skip to Content

Transaction notification, validación imputaciones

Hola a todos

Estoy intentando definir una consulta en el transaction notification que detecte cuando se esté intentando añadir una entrada de mercancías que tenga definido un proyecto distinto al de su pedido de referencia eimpida añadir el documento mostrando un mensaje de error. Esto es lo que llevo hasta el momento:

IF  @object_type = '20' AND (@transaction_type = N'A' OR @transaction_type = N'U')

BEGIN

                    IF(( SELECT COUNT(1) from [PDN1] T0 INNER JOIN [OPDN] T1 ON T0.[DocEntry] = T1.[DocEntry] LEFT JOIN POR1 T2 ON T2.[DocEntry] = T0.[BaseEntry] AND T2.[BaseType] = '20' AND T2.[LineNum] = T0.[BaseLine] LEFT JOIN OPOR T3 ON T2.[Docentry] = T3.[DocEntry] WHERE T0.[DocEntry] = @list_of_cols_val_tab_del AND (T0.[Project] <> T2.[Project]))!=0)

 

                    BEGIN

 

                                        SELECT @error = 1

                                        SELECT @error_message = 'Mensaje sistema!: No se puede indicar un proyecto distinto al del pedido de referencia'

                    END

END

Tal y como está no tiene ningún efecto, pues sigue permitiendo indicar un proyecto distinto al del pedido. Intuyo que el problema debe estar aquí:

(T0.[Project] <> T2.[Project]))!=0)

Pues no estoy nada seguro de si esta parte de la sentencia es correcta. Probé a cambiarle el !=0 por !=1 y creía que había dado con la tecla, pues al volver a probar el sistema me impedió añadir y me mostró el error, pero entonces probé a indicarle el mismo proyecto que en el pedido y también me impide añadirlo. Con lo indicando !=1 salta la validación siempre.

Un saludo

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

2 Answers

  • Best Answer
    avatar image
    Former Member
    May 03, 2013 at 05:55 PM

    Tienes un problema en la query. Prueba el if de la siguiente manera y me comentas:

    IF(( SELECT COUNT(1)


    from [PDN1] T0 INNER JOIN [OPDN] T1 ON T0.[DocEntry] = T1.[DocEntry]


    LEFT JOIN POR1 T2 ON T2.[baseentry] = T0.[docentry]


    AND T2.[BaseType] = '22' AND T2.[baseline] = T0.[linenum]


    LEFT JOIN OPOR T3 ON T2.[Docentry] = T3.[DocEntry]


    WHERE T0.[DocEntry] = @list_of_cols_val_tab_del AND (T0.[Project] <> T2.[Project]))!=0)

    Add comment
    10|10000 characters needed characters exceeded

    • Hola Fernando

      En primer lugar muchas gracias por la ayuda. A la query creo que le debe faltar algo, puesto que no salta el mensaje de error cuando indicamos un proyecto diferente al del pedido.

      Un saludo

  • May 06, 2013 at 02:20 PM

    Hola a todos

    Desde el foro de SAP Business One en el SCN en inglés me han indicado una query que frunciona exactamente como quiero por un lado y por otro me han propuesto un Workaround que no precisa de Transaction Notification y con el que consigo exactamente lo mismo.

    La consulta que funciona sería la siguiente:

    IF  @object_type = '20' AND @transaction_type IN(N'A',N'U')

    BEGIN

                IF Exists(( SELECT T1.Docentry from [PDN1] T0 INNER JOIN [OPDN] T1 ON T0.[DocEntry] = T1.[DocEntry] LEFT JOIN POR1 T2 ON T2.[DocEntry] = T0.[BaseEntry] AND T0.[BaseType] = '22' AND T2.[LineNum] = T0.[BaseLine]  WHERE (T1.[DocEntry] = @list_of_cols_val_tab_del) AND (T0.[Project]! = T2.[Project])))

               

                BEGIN

               

                            SELECT @error = 1

                            SELECT @error_message = 'Mensaje sistema!: No se puede indicar un proyecto distinto al del pedido de referencia'

                END

    END              

    Y el workaround alternativo consiste en cambiar las parametrizaciones del formulario de entradas de mercancías, dejando el campo "Proyecto" como inactivo pero visible. De esta manera la entrada de mercancías tomará las misma imputación que tuviera el pedido de referencia, no permitirá modificarlo, pero el usuario podrá ver a que proyecto está imputado el documento en cuestión. Casi siempre las mejores soluciones son las mas sencillas.

    Pego el link del post por si a alguien le interesa:

    http://scn.sap.com/thread/3353215

    Un saludo

    Add comment
    10|10000 characters needed characters exceeded