cancel
Showing results for 
Search instead for 
Did you mean: 

Ayuda transaction Ordenes de Fabricacion

0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

agustin_marcoscividanes
Active Contributor
0 Kudos

Hola

Creo que el problema radica en que SBO considera dentro del comprometido las cantidades solicitadas de cada componente en la orden de producción que estás procesando.

Te dejo una consulta modificada:

IF @object_type in ('202') and @transaction_type in ('A')

begin

     DECLARE cr_oitm  CURSOR FOR  

          select T1.itemcode, SUM(T0.OnHand) as Stock, SUM(T0.iscommited) as Comprometido, MAX(t1.PlannedQty)           as Planificada   FROM OITW T0 inner join WOR1 T1 on T0.ItemCode = T1.ItemCode where T1.DocEntry =           @list_of_cols_val_tab_del group by T1.ItemCode     OPEN cr_oitm FETCH NEXT FROM cr_oitm into           @itemcode, @stock, @comprometido, @planificada  

          WHILE @@FETCH_STATUS = 0    

          BEGIN  

               if (@stock - @comprometido + @planificada < @planificada)  

               begin    

                    if @error_message = 'Ok'

                    set @error_message = 'Artículos que no tienen stock '

                    set @error_message = @error_message + @itemcode + '-' + CAST(@stock as CHAR(3)) + ' ' +  CAST(@comprometido as CHAR(3)) + ' ' + CAST(@planificada as CHAR(3))

                    set @num = 100 

               end      

               FETCH NEXT FROM cr_oitm into @itemcode, @stock, @comprometido, @planificada    

          END  

          CLOSE cr_oitm  

          DEALLOCATE cr_oitm end

Modifica las condiciones para seleccionar tus artículos y finalizar la consulta.

Un saludo

Agustín Marcos Cividanes

0 Kudos

Gracias por tu ayuda!!! me sirvio de mucho para finalizar lo que requeria.

saludos cordiales.

Answers (0)