cancel
Showing results for 
Search instead for 
Did you mean: 

Validación que no permita hacer recepción de Producción si no existe emisión de Producción

Former Member
0 Kudos

Hola a todos

Alguien me puede ayudar, requiero un query o una validación para Producción con lo siguiente:

Que valide que no pueda hacer Recibo de Producción si previamente no se ha entregado o no se ha efectuado la emisión para producción

Se que se puede hacer en el transaction notification sin embargo no sé como hacer la validación

Agradezco de antemano su ayuda

Saludos

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Más vale tarde que nunca, aquí te dejo unas líneas de código que uso para bloquear la declaración de producción a menos que se haya realizado alguna entrega de componentes.

Esto verifica que se haya entregado al menos algo de todos los componentes:

-- BLOQUEA DECLARACIONES DE PRODUCCION SI NO HA ENTREGADO POR LO MENOS ALGO DE TODOS LOS COMPONENTES

IF @transaction_type = 'A' AND @Object_type = '59'

BEGIN

IF EXISTS (SELECT T0.DOCENTRY FROM dbo.IGN1 T0 WHERE T0.DOCENTRY = @list_of_cols_val_tab_del)

  BEGIN

  DECLARE @entry INT

  SELECT @entry = T0.BASEENTRY FROM dbo.IGN1 T0 WHERE T0.DOCENTRY = @list_of_cols_val_tab_del

  IF EXISTS ( SELECT T1.ITEMCODE, T1.PLANNEDQTY PLANIF, sum(ISNULL(T2.QUANTITY,0)) ENTREGADO, T2.BASEENTRY AS 'DOC BASE'

  FROM dbo.OWOR T0

  INNER JOIN dbo.WOR1 T1 ON T0.DOCENTRY = T1.DOCENTRY

  LEFT OUTER JOIN dbo.IGE1 T2 ON T2.BASEENTRY = T0.DOCENTRY AND T1.ITEMCODE = T2.ITEMCODE

  WHERE T0.DOCENTRY=@entry and T1.ITEMCODE NOT IN ('S00001','S00002','S00003','S00004','S00005','S00006','S00007','S00008','S00009','S00010','S00011','S00012')

  group by t1.itemcode,t1.plannedqty,t2.baseentry

  HAVING sum(ISNULL(T2.QUANTITY,0))<=0)

  BEGIN

  SELECT @Error = 1, @error_message = 'Existen componentes no entregados'

  END

  END

ELSE

  BEGIN

  SELECT @Error = 1, @error_message = 'Existen Componentes no entregados'

  END

END

marco_ramirez
Active Contributor
0 Kudos

Rodrigo

Intenta con esto y nos cuentas

Saludos

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.

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

–-- 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 sum(PlannedQty-CmpltQty) FROM OWOR WHERE DocEntry = @list_of_cols_val_tab_del) > '0') or

((SELECT SUM(T0.PlannedQty-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 (planificada-Completada) (CABCECRA) es igual a cero, o si la diferencia entre planficado y entregado es mayor a 0

BEGIN

SET @error=1

SET @error_message = 'La orden no se puede cerrar. Verifique Artículos para producción y/o Recibo de producción'

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

END

END

END

Former Member
0 Kudos

Muchas gracias Marco

Lo intente pero si me dejo cerrar la Orden de Fabricación

Sin Embargo me equivoque y lo que realmente requiero es que no se pueda crear el recibo de Producción si no existe la emisión para Producción

Saludos

Former Member
0 Kudos

Marco Muchas Gracias

Le hice un pequño Ajuste con eso ya no me deja cerrar la OF

Dejo el script como me funciono

--     ADD     YOUR     CODE     HERE

IF

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

-- Objeto 202 corresponde a la orden de Fabricacin, U (Update), corresponde al proceso de actualizacin 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 sum(PlannedQty-CmpltQty) FROM OWOR WHERE DocEntry = @list_of_cols_val_tab_del) > 0) or


((

SELECT SUM(T0.PlannedQty-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 (planificada-Completada) (CABCECRA) es igual a cero, o si la diferencia entre planficado y entregado es mayor a 0



BEGIN

SET

@error=1

SET

@error_message = 'La orden no se puede cerrar. Verifique Artculos para produccin y/o Recibo de produccin'

--- Muestre el mensaje indicando que falta algn paso de los sealados

END

END

END

Former Member
0 Kudos

Buenas tardes Marcos

Lo que me hace falta es que me deje crear la recepción de producción si no hay emisión para producción

Es decir que no me deje crear producto terminado si no le hemos entregado la materia prima

Crees que me puedas ayudar

te lo gardecería mucho

Saludos