on 03-06-2014 11:47 PM
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.
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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
User | Count |
---|---|
94 | |
9 | |
8 | |
5 | |
4 | |
3 | |
3 | |
3 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.