cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction notification para la Nota de Crédito

former_member325322
Participant
0 Kudos

Hola a todos

Estoy intentando incorporar una nueva validación para la nota de crédito pero por aluna razón no está funcionando. La validación es muy simple y procura que el encargado de ventas sea incorporado al documento. Probé el mismo código para una factura de venta y funciona perfecto, pero por alguna razón no funciona en la nota de crédito. Ojalá alguien pudiera ayudarme. Desde ya muchas gracias

IF @object_type = '14' AND @transaction_type = 'A' AND @error = 0

BEGIN

     DECLARE @OPERADORA2 INT

     SET @OPERADORA2 = (SELECT TOP 1 T1.slpcode FROM BELENUS_PRUEBA..RIN1 T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del)

     IF @OPERADORA2 = -1 

     BEGIN

          SET @error = 100

          SET @error_message = 'Debe ingresar la Operadora'

     END

END

select @error, @error_message

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Pudiera ser porque tienes documentos con varias filas y la primera de ellas no tiene seleccionado "Ningún empleado" y el resto sí. Por como tienes tu query (con el TOP 1) no funcionaría siempre la restricción...

Intenta así:

IF @object_type = '14' AND @transaction_type = 'A' AND @error = 0

BEGIN

     DECLARE @OPERADORA2 INT

     SET @OPERADORA2 = (SELECT TOP 1 T1.slpcode FROM RIN1 T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del and T1.SlpCode = -1)

     IF @OPERADORA2 = -1

     BEGIN

          SET @error = 100

          SET @error_message = 'Debe ingresar la Operadora'

     END

END

select @error, @error_message

o así:

IF @object_type = '14' AND @transaction_type = 'A' AND @error = 0

BEGIN

     DECLARE @OPERADORA2 INT

     SET @OPERADORA2 = (SELECT count(T1.slpcode) FROM RIN1 T1 WHERE T1.DocEntry = @list_of_cols_val_tab_del and T1.SlpCode = -1)

     IF @OPERADORA2 >= 1

     BEGIN

          SET @error = 100

          SET @error_message = 'Debe ingresar la Operadora'

     END

END

select @error, @error_message

Ojalá alguno te sirva...

Saludos,

JC

former_member325322
Participant
0 Kudos

Muchas gracias Juan por tu rápida respuesta.

La verdad es que la idea es que si el resultado es -1, es decir no hay encargado de ventas asociado, la idea es que la validación advierta de ello. Estoy trabajando en una base de pruebas y me da la impresión de que no está entrando al transaction, es como si el objeto 14 no correspondiera a la nota de crédito de clientes.

¿Cómo puedo asegurarme de ello?

gerardo_mendez
Active Contributor
0 Kudos

Con algo como esto:


If @transaction_type in ('A') And @object_type = '14'

             Begin

                    SET @error = 9

                    SET @error_message = 'Está a punto de crear una nota de crédito'

             End

Former Member
0 Kudos

Lo que pasa es que si dejas el TOP 1 y la primera fila del documento no es -1 (p. ej. 10, 15, 100, etc.) el TN no va advertir aún y cuando las filas de la 2 en delante sí sean igual a -1. Por eso en el primer TN que te propuse agregué un AND T1.SLPCODE = -1...

Estas intentando con generación de documentos solamente, sin considerar actualizaciones de documento? Te lo pregunto xq el TN lo estás limitando a nuevos documentos ( transaction_type =  'A'). Si quieres también actualizaciones agrega 'U'.

Has intentado poner tu tu código como primer validación de tus TN? O hay alguna limitante por la que necesitas primero evaluar el valor de @error antes de que llegue a la validación de la nota de crédito? Al poner @object_type = '14' es seguro que entre cuando sea nota de crédito, a menos que algo genere que @error no sea igual a cero al llegar a esa validación.

Saludos,

JC.

gerardo_mendez
Active Contributor
0 Kudos

Hola Patricio.

En primer punto quiero pensar que esta validación viene después de alguna otra ya que de lo contrario "AND @error = 0" podría ser la causa.

Otro punto, ¿es correcto que lleve dos puntos?: BELENUS_PRUEBA..RIN1

gerardo_mendez
Active Contributor
0 Kudos

Yo lo haría de la siguiente manera:

       If @transaction_type in ('A') And @object_type = '14'

             Begin

                    If (Select Count(*) FROM RIN1 T0 Where T0.DocEntry = @list_of_cols_val_tab_del and T0.SlpCode = '-1') >= 1

                           Begin

                                  SET @error = 9

                                  SET @error_message = 'Debe ingresar la operadora'

                           END

               End

former_member325322
Participant
0 Kudos

Hola Gerardo

Muchas gracias por tu ayuda

Por alguna razón no entra con el objeto 14. Tienes algun código que me permita validar rápidamente si el Transaction está siento activado por la Nota de crédito (objeto 14).

Saludos

PGR

former_member325322
Participant
0 Kudos

Hola Gerardo

Respecto de tus comentarios:

1) Ya tengo otras validaciones en que @error = 0 funciona. lo quité y el problema persiste.

2) ¿es correcto que lleve dos puntos?: BELENUS_PRUEBA..RIN1  (si es correcto)

Saludos

PGR