cancel
Showing results for 
Search instead for 
Did you mean: 

Restriccion por Stored Procedures a ordenes de fabricacion

jonathanziga
Explorer
0 Kudos

Buenas tardes a todos!!!

Estoy intentando crear una restriccion por Transaction_Notification para que los usuarios no puedan cerrar las órdenes de fabricacion si las líneas no están completamente consumidas; la consulta que estoy usando es la siguiente:

if @object_type in('68') AND @object_type IN ('L') begin

IF (SELECT COUNT(*)

FROM OWOR T0

INNER JOIN WOR1 T1 ON T0.DocEntry = T1.DocEntry

WHERE T1.[IssuedQty] <> T1.PlannedQty AND

T0.DocEntry=@list_of_cols_val_tab_del)>0

BEGIN

Set @error=10

Set @error_message= '**** '

END

end

Ya probé varios cambios en el Query pero no me funciona, me podrían ayudar con ésto? Les agradezco la ayuda.

SALUDOS!!!

Accepted Solutions (1)

Accepted Solutions (1)

former_member188440
Active Contributor
0 Kudos

Cambia tu codigo asi

if @object_type in('68') AND @transaction_type IN ('L')  --es transaction_type
begin  
IF (SELECT COUNT(*)
FROM OWOR T0
INNER JOIN WOR1 T1 ON T0.DocEntry = T1.DocEntry
WHERE T1.IssuedQty T1.PlannedQty AND
T0.DocEntry=@list_of_cols_val_tab_del)>0
BEGIN
Set @error=10
Set @error_message= '**** ' 
END
end

--e intentalo asi tambien

if @object_type in('68') AND @transaction_type IN ('L')  --es transaction_type
begin  
declare @cuenta as char(1)
set @cuenta =(SELECT COUNT(*)
FROM OWOR T0
INNER JOIN WOR1 T1 ON T0.DocEntry = T1.DocEntry
WHERE T1.IssuedQty T1.PlannedQty AND
T0.DocEntry=@list_of_cols_val_tab_del)
if @cuenta>0
BEGIN
Set @error=10
Set @error_message= '**** ' 
END
end

jonathanziga
Explorer
0 Kudos

Muchas Gracias por la respuesta pero sigo con el inconveniente; si paso la orden de planificada a liberada y luego a cerrada (sin consumir ningún producto) La orden de producción sigue cerrándose haciendo caso omiso al SP. Será que no estoy considerando algo?

Gracias por la ayuda que me puedan prestar.

Former Member
0 Kudos

Hola...

En alguna oportunidad me dijeron que se no había ninguna validación de SAP Business One, para aquellos casos en que se podía cerrar una OF, aún cuando puede que no tenga una Entrega de Componentes (Salida de Mercaderías - Materias Primas) o un Recibo de Producción (Entrada del Producto Terminado a Almacén).

Frente a este escenario, se creó el siguiente código en Transaction Notification...

OBJETIVO:

No permitir que pueda cerrarse una Orden de Fabricación que no tenga asociados los procesos de Entrega de Componentes y Recibo de Producción.

IF (@object_type ='202' and @transaction_type = 'U')

u2013-- Objeto 202 corresponde a la orden de Fabricación, U (Update), corresponde al  proceso de actualización de la misma) 

BEGIN 
IF (SELECT Status FROM OWOR WHERE DocEntry = @list_of_cols_val_tab_del) = 'L'

--- Si el estado del documento es Cerrado

BEGIN

IF (((SELECT CmpltQty FROM OWOR WHERE DocEntry = @list_of_cols_val_tab_del)= '0')
or ((SELECT SUM(T0.IssuedQty) FROM WOR1 T0 INNER JOIN OWOR T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del)= '0'))

--- Si la Cantidad Completada (CABCECRA) es igual a cero, o si la Cantidad Consumida (DETALLE) es igual a cero

BEGIN

SET @error=1
SET @error_message = 'Falta algún paso, Entrega de Componentes o Recibo de Producción'

--- Muestre el mensaje indicando que falta algún paso de los señalados

END
END
END

Desconozco si es exactamente lo que necesitas, me parece mucho que si te puede servir, pero si no fuere el caso, puedes tomarlo como base para tu requerimiento.

Apliqué este mismo SP con el Objeto 68, y no lo toma....

Espero te sea de ayuda

Saludos Cordiales,

Former Member
0 Kudos

Hola...

En alguna oportunidad me dijeron que se no había ninguna validación de SAP Business One, para aquellos casos en que se podía cerrar una OF, aún cuando puede que no tenga una Entrega de Componentes (Salida de Mercaderías - Materias Primas) o un Recibo de Producción (Entrada del Producto Terminado a Almacén).

Frente a este escenario, se creó el siguiente código en Transaction Notification...

OBJETIVO:

No permitir que pueda cerrarse una Orden de Fabricación que no tenga asociados los procesos de Entrega de Componentes y Recibo de Producción.

IF (@object_type ='202' and @transaction_type = 'U')

u2013-- Objeto 202 corresponde a la orden de Fabricación, U (Update), corresponde al  proceso de actualización de la misma) 

BEGIN 
IF (SELECT Status FROM OWOR WHERE DocEntry = @list_of_cols_val_tab_del) = 'L'

--- Si el estado del documento es Cerrado

BEGIN

IF (((SELECT CmpltQty FROM OWOR WHERE DocEntry = @list_of_cols_val_tab_del)= '0')
or ((SELECT SUM(T0.IssuedQty) FROM WOR1 T0 INNER JOIN OWOR T1 ON T0.DocEntry = T1.DocEntry WHERE T0.DocEntry = @list_of_cols_val_tab_del)= '0'))

--- Si la Cantidad Completada (CABCECRA) es igual a cero, o si la Cantidad Consumida (DETALLE) es igual a cero

BEGIN

SET @error=1
SET @error_message = 'Falta algún paso, Entrega de Componentes o Recibo de Producción'

--- Muestre el mensaje indicando que falta algún paso de los señalados

END
END
END

Desconozco si es exactamente lo que necesitas, me parece mucho que si te puede servir, pero si no fuere el caso, puedes tomarlo como base para tu requerimiento.

Apliqué este mismo SP con el Objeto 68, y no lo toma....

Espero te sea de ayuda

Saludos Cordiales,

Answers (1)

Answers (1)

jonathanziga
Explorer
0 Kudos

Muchas, pero MUCHAS gracias!!! El inconveniente lo pude resolver y la verdad no sé porqué me aparece en el objects Id la Orden de fabricación como la 68; sin embargo la ayuda fue exacta y valiosa.

Cordial saludo.