Buena tarde Expertos de la comunidad , estoy trabajando con este transaction que me detecta los productos que no tienen existencia, y asi no dejar crear la orden de fabricacion , este codigo bloquea si alguno de los articulos no hay disponibilidad,"hasta alli todo bien", el problema que tengo es el siguiente.
Ejemplo: creacion de 50 pares de zapatos
codigo Articulo cantidad requerida cantidad Disponible 102 suelas ( oitw.onhand-oitw.iscommited)
101066 Suelas 100
haciendo mis pruebas incremento el numero de pares de zapatos que quiero y pongo '60' logicamente me va a marcar que no tengo disponible para esta cantidad, luego pongo 49 pares logicamente me tendria que dejar pasar porque si tengo disponible en mis almacenes, esta es mi interrogante que tengo mal en el Query para que no me funcione, lo raro de todo esto es que si me deja pasar si solo me gasto el 60 % exactamente del material, es decir si pongo la cantidad de pares donde se consumen 62 suelas si me funciona este transaction. Agradeceria si alguien me pudiera brindar su mano a resolver este caso.
saludos cordiales
Declare @Num int
IF @object_type in ('202') and @transaction_type in ('A')
begin
SET @Num=(select Top 1 COUNT(c.ItemCode)
from OITW a
inner join OITM b on a.ItemCode=b.ItemCode
inner join WOR1 c on a.ItemCode=c.ItemCode
left join OWOR d on c.DocEntry=d.DocEntry
left join ITT1 e on c.ItemCode=e.Code
where d.DocNum =@list_of_cols_val_tab_del
and c.ItemCode not IN('GIF','MO')and
c.ItemCode like '1%'
group by b.ItemCode,b.ItemName,c.PlannedQty,c.ItemCode
having ((Sum(a.OnHand)-SUM(a.IsCommited)) <=(c.PlannedQty))
)
--Parte 2
declare @ItemWor1 varchar(100)
SET @ItemWOR1 =(SELECT CONVERT(VARCHAR(100), c.ItemCode) + ', '
from OITW a
inner join OITM b on a.ItemCode=b.ItemCode
inner join WOR1 c on a.ItemCode=c.ItemCode
left join OWOR d on c.DocEntry=d.DocEntry
left join ITT1 e on c.ItemCode=e.Code --Poner en Revision
where d.DocNum =@list_of_cols_val_tab_del
and c.ItemCode not IN('GIF','MO')and
c.ItemCode like '1%'
group by b.ItemCode,b.ItemName,c.PlannedQty,c.ItemCode
having ((Sum(a.OnHand)-SUM(a.IsCommited)) <=(c.PlannedQty))
ORDER BY 1 FOR XML PATH(''))
IF (@Num>0 or @Num='' )
BEGIN
SELECT @error = 101
SELECT @error_message = N'Existen componentes en Status de no Disponibles: ' + @ItemWOR1
end
end