cancel
Showing results for 
Search instead for 
Did you mean: 

Transaction Notification error en lineas

Former Member
0 Kudos

Buenas tardes Comunidad.

Ojala puedan apoyarme tengo una codigo en el transaction notification el cual deve de bloquear linea por linea de un pedido de cliente que dependiendo del dia no permita cierto numero de cajas ejemplo:  lunes solo puede vender hasta 1000 cajas de tomate no interesa si pasa las 1000 agregando otra linea solo que si la linea tuviese 1001 no lo dejase crear.

Les adjunto el codigo:

--PROCEDIMIENTO DE PRUEBA PARA QUE EN PEDIDOS SEA NECESARIO LLENAR CAMPO COMENTARIOS

IF  @object_type = '17' AND @transaction_type IN ('A') --PEDIDO  AL CREAR

BEGIN

IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 1 and --fecha domingo

(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%' ) >  1920 SET @error=1

--IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 2 and -- fecha lunes

--(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%' ) >  1900 SET @error=2

IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 3 and --fecha martes

(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%') >  1680 SET @error=3

IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 4 and  --fecha miercoles

(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%') >  1680 SET @error=4

IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 5 and --fecha jueves

(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%') >  1680 SET @error=5

--IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 6 and -- fecha viernes

--(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%') >  741 SET @error=6

IF (SELECT datepart(dw,TaxDate) from ORDR WHERE DOCENTRY = @list_of_cols_val_tab_del) = 7 and -- fecha sabado

(select Quantity FROM RDR1 WHERE DOCENTRY = @list_of_cols_val_tab_del and ItemCode like '3%') >  1920 SET @error=7

END

SET @error_message =

CASE @ERROR

WHEN 1 THEN 'no debe ser mayor a 1920 cajas'

WHEN 2 THEN 'no debe ser mayor a 1900 cajas'

WHEN 3 THEN 'no debe ser mayor a 1680 cajas'

WHEN 4 THEN 'no debe ser mayor a 1680 cajas'

WHEN 5 THEN 'no debe ser mayor a 1680 cajas'

WHEN 6 THEN 'no debe ser mayor a 741 cajas'

WHEN 7 THEN 'no debe ser mayor a 1920 cajas'

END */

----------

El detalle esta en que si agrego una segunda linea esta no la evalua me aparece el error:

Se ha producido un error interno (512) Mensaje 113-183

Ojala puedan ayudarme a saber el error.

Accepted Solutions (0)

Answers (2)

Answers (2)

juancarlos_huerta
Contributor
0 Kudos

Omar, intenta modificar los IF con los que evalúas el día y la cantidad del artículo de manera que se integren en un select. Yo intentaría con esto:

if exists(select 1 from ORDR T0 inner join RDR1 T1 on T0.DocEntry = T1.DocEntry and T0.DOCENTRY = @list_of_cols_val_tab_del

  and datepart(dw,T0.TaxDate) = 1 and T1.ItemCode like '3%' and T1.Quantity > 1920)

  SET @error=1

Aquí lo que evalúa el IF es si existe algún registro con las condiciones para el día Domingo. Si existe al menos una fila, es donde se setea la variable @error igual a 1.

Si te sirve, replícalo hacia los días restantes con sus cantidades correspondientes.

Saludos y suerte,

JC.

former_member188440
Active Contributor
0 Kudos

No puedes usar subquerys sin usar un Select Top 1 en el transaction, aplica Top 1 así te validará línea por línea