cancel
Showing results for 
Search instead for 
Did you mean: 

TN para Impedir Creacion de Recibo de Produccion con costo Mayor o Menor que el promedio actual.

0 Kudos

Buen dia.

Soy muy nuevo en este foro, y estoy tratando de hacer mis primeras TN, hace un par de meses Felipe me apoyo en  ellas, Ahora regreso nuevamente con una problemática similar, he intentado crear mis propias TN, algunas Funcionan y otras no, como el caso que presento.

Tengo la Necesidad de frenar todos los recibos de producción cuando tengan una diferencia de un +- 10% respecto al costo promedio actual del almacén donde se creara dicho recibo de  producción.  he notado que la tabla de Recibo de producción es una tabla compartida con la que esta en (Operaciones de Stock - Entrada de Mercancías).

Tengo esta TN que he desarrollado pero no logro correrla. marca error  incorrect syntax near ','. Espero alguien pueda apoyarme.

IF   @object_type = '59' and  @transaction_type = 'A'

BEGIN

SELECT (( IGN1.Price, OITW.AvgPrice

FROM IGN1 INNER JOIN OITW ON IGN1.ItemCode = OITW.ItemCode AND IGN1.WhsCode = OITW.WhsCode INNER JOIN OIGN ON IGN1.DocEntry = OIGN.DocEntry

WHERE RDN1.DocEntry = @list_of_cols_val_tab_del   AND  IGN1.JrnlMemo like 'recib%%'))

IF  ((IGN1.PRICE) >= ((OITW.AVGPRICE)* 1.10)) or ((IGN1.PRICE) <= ((OITW.AVGPRICE)* .90))

begin

     SET @error = 288

     SET @error_message = 'Recibo de Produccion: Desviacion del 10 Porciento del costo Promedio Actual'

  END

END

Si alguien tienen una sugerencia mejor para controlar los costos en producción, bajo algún tipo de Autorización se aceptan opiniones.

Saludos

Ing. Nelson Mayo Santamaria

Veracruz, Mexico.

Accepted Solutions (1)

Accepted Solutions (1)

javier_facessantos
Contributor
0 Kudos

Hola Nelson

El error que se te está mostrando al intentar ejecutar ese código en el TN dejará de mostrársete si empiezas el query así:

IF  @object_type = '59' and  @transaction_type = 'A'

BEGIN

IF Exists ((SELECT IGN1.DocEntry  FROM IGN1 INNER JOIN.....

Pero si vuelves a intentar ejecutar el código haciendo solamente esa modificación surgirán una serie de errores de indentificación de campos que estaban tapados por el error de la coma:

Mens 4104, Nivel 16, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 1209

The multi-part identifier "RDN1.DocEntry" could not be bound.

Mens 207, Nivel 16, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 1209

Invalid column name 'JrnlMemo'.

Mens 4104, Nivel 16, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 1212

The multi-part identifier "IGN1.PRICE" could not be bound.

Mens 4104, Nivel 16, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 1212

The multi-part identifier "OITW.AVGPRICE" could not be bound.

Mens 4104, Nivel 16, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 1212

The multi-part identifier "IGN1.PRICE" could not be bound.

Mens 4104, Nivel 16, Estado 1, Procedimiento SBO_SP_TransactionNotification, Línea 1212

The multi-part identifier "OITW.AVGPRICE" could not be bound.

Esto es debido a diferentes motivos. Por un lado no está encontrando el campo DocEntry de la tabla RDR1 porque esa tabla no está incluida en el FROM. Supongo que en vez del RDR1.DocEntry querrías capturar el IGN1.DocEntry.

Luego el campo JournalMemo no existe en la tabla IGN1, sino que está ubicado en la OIGN.

Los otros campos que dan error tienen sus tablas bien referenciadas en el FROM y están ubicados en las mismas. Pero he arreglado un poquito la Query aplicándole lo que te acabo de comentar y referenciando las tablas como T0, T1 y T2 y al hacerlo el código ya no da error al correrlo:


IF   @object_type = '59' and  @transaction_type = 'A'

BEGIN

IF Exists (SELECT  T0.DocEntry

FROM IGN1 T0 INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode AND T0.WhsCode = T1.WhsCode

INNER JOIN OIGN T2 ON T0.DocEntry = T2.DocEntry

WHERE T0.DocEntry = @list_of_cols_val_tab_del   AND  T2.JrnlMemo like 'recib%%'

AND ((T0.PRICE) >= ((T1.AVGPRICE)* 1.10)) or ((T0.PRICE) <= ((T1.AVGPRICE)* .90)))

BEGIN

     SET @error = 288

     SET @error_message = 'Recibo de Produccion: Desviacion del 10 Porciento del costo Promedio Actual'

  END

END

Entiendo que debería funcionar. Pruébalo y me comentas.

Un saludo

0 Kudos

Una ultima el duda quiero aplicar esta TN a ciertos usuarios intente hacer la modificación pero no me funciono agregando  And T1.UserSign <> in (1,27,28))

Termine dejando el codigo siguiente que si funciona pero solo para un usuario

IF   @object_type = '59' and  @transaction_type = 'A' 

BEGIN 

IF Exists (SELECT  T0.DocEntry 

FROM IGN1 T0 INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode AND T0.WhsCode = T1.WhsCode 

INNER JOIN OIGN T2 ON T0.DocEntry = T2.DocEntry 

WHERE T0.DocEntry = @list_of_cols_val_tab_del   AND  T2.JrnlMemo like 'recib%%' 

AND (((T0.PRICE) >= ((T1.AVGPRICE)* 1.10)) or ((T0.PRICE) <= ((T1.AVGPRICE)* .90))) And T1.UserSign <> 27) 

BEGIN 

    SET @error = 288 

    SET @error_message = 'Recibo de Produccion: Desviacion del 10% + - del costo Promedio Contacten a Victor' 

  END 

END 

former_member413321
Contributor
0 Kudos

Si lo que necesitas es que no esten en un grupo la instruccion es    not in (1,27,28)

la sintaxis <> es solo para 1.

0 Kudos

Perfecto con esto doy por terminado..

Saludos

Nelson Mayo Santamaria

Veracruz, Mexico

Answers (0)