cancel
Showing results for 
Search instead for 
Did you mean: 

Traer los proveedores de un producto en base a query

Former Member
0 Kudos

Hola a todos.Saludos Desde Venezuela. Verán mi situación es el siguiente, tengo un Query ya diseñado que me trae los artículos con cantidad menor al Stock Mínimo en un almacén especifico. Recientemente me pidieron que este Query también se le agregue me traiga los proveedores de dicho articulo.

Anexo el query que me trae los productos con menor valor en almacén al stock mínimo


SELECT T1.ItemCode,T0.ItemName,T1.OnHand,T1.MinStock

FROM OITM T0  INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode INNER JOIN

OWHS T2 ON T1.WhsCode = T2.WhsCode WHERE T1.ONHAND<T1.MINSTOCK

AND T2.whscode='01'

Cualquier ayuda que me puedan brindar u ofrecer sera bien recibida y agradecida. Saludos

Accepted Solutions (1)

Accepted Solutions (1)

gerardo_mendez
Active Contributor
0 Kudos

Hola Manuel.

Tienes que tener en cuenta que tal vez más de un proveedor te distribuya un solo artículo, si deseas traer un "X" proveedor puedes probar con lo siguiente:

SELECT (Select Top 1 TA.CardName FROM OPCH TA Inner Join PCH1 TB On TA.DocEntry = TB.DocEntry Where TB.ItemCode = T1.ItemCode) as Proveedor, T1.ItemCode,T0.ItemName,T1.OnHand,T1.MinStock 

FROM OITM T0  INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode INNER JOIN  

OWHS T2 ON T1.WhsCode = T2.WhsCode WHERE T1.ONHAND<T1.MINSTOCK  

AND T2.whscode='01'


Aunque si tienes varios proveedores por artículo te podría servir mejor esto:

Select Distinct TA.CardName, T1.ItemCode,T0.ItemName,T1.OnHand,T1.MinStock 

FROM OPCH TA Inner Join PCH1 TB On TA.DocEntry = TB.DocEntry Inner Join OITM T0 On TB.ItemCode = T0.ItemCode INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T1.WhsCode = T2.WhsCode

WHERE T1.ONHAND<T1.MINSTOCK AND T2.whscode='01'

Prueba y nos comentas.

Saludos.

Former Member
0 Kudos

Hola Gerardo. Gracias por tu pronta respuesta. Efectivamente tengo distintos proveedores para un articulo, sin embargo el query solo me trae 1 solo proveedor cuando se que tiene mas de uno. Me imagino que ese es el ultimo que tuvo registro de compra de ese articulo... Existe la forma de que se muestren todos?

Cambiando la tabla PDCH POR OPDN y PDN1 me trae todos aunque muy desorganizado. hay una manera de organizarlos mejor? adjuntare la consulta como quedo tras ese cambio


Select Distinct TA.CardName, TA.CardCode, T1.ItemCode,T0.ItemName,T1.OnHand,T1.MinStock

FROM OPDN TA Inner Join PDN1 TB On TA.DocEntry = TB.DocEntry Inner Join OITM T0 On TB.ItemCode = T0.ItemCode INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T1.WhsCode = T2.WhsCode

WHERE T1.ONHAND<T1.MINSTOCK AND T2.whscode='01'

order by T1.OnHand

gerardo_mendez
Active Contributor
0 Kudos

Por lo regular trabajo sobre la OPCH y no con la OPDN por que se supone que toda entrada de mercancías debe pasar a ser factura para poder realizar el pago al proveedor, además de que el documento factura de proveedor es el único documento obligatorio en el proceso de compras, es decir, puedes crear una factura sin la necesidad de realizar una entrada de mercancías.

Si necesitas organizar tu query puedes hacerlo por medio de un Order By:

Order By  T1.ItemCode, T0.ItemName, T1.OnHand, T1.MinStock, TA.CardName

Agrégalo al final de tu query, en este caso, como estamos utilizando la clausula "Distinct" te obliga a poner en el ORDER By todos los campos de la consulta, ya tu puedes jugar con el orden según como lo requieras.

Former Member
0 Kudos

Hola gerardo esto es únicamente para darte las gracias... Hace días que la consulta me funciona de maravilla. Logre ordenarla y consultar una serie de datos mas que necesitaba. Efectivamente es mejor trabajar con OPCH.. Adjuntare la consulta por si a alguien alguna vez le es útil para alguien mas.

Los datos adicionales que traen son proveedores a los que se le compro la ultima fecha de compra y el precio de dicha compra. ademas de sus telefonos...

Espero sea de ayuda para alguien mas. SALUDOS

Select Distinct T1.ItemCode,T0.ItemName,T1.OnHand,T1.MinStock,TA.CardName, TB.Price,TA.TaxDate, TA.CardCode,TC.Phone1, TC.Phone2

FROM OPCH TA Inner Join PCH1 TB On TA.DocEntry = TB.DocEntry Inner Join OCRD TC On TA.CardCode=TC.CardCode Inner Join OITM T0 On TB.ItemCode = T0.ItemCode INNER JOIN OITW T1 ON T0.ItemCode = T1.ItemCode INNER JOIN OWHS T2 ON T1.WhsCode = T2.WhsCode

WHERE T1.OnHand<T1.MinStock AND T2.whscode='01'

Answers (0)