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