cancel
Showing results for 
Search instead for 
Did you mean: 

Sacar fecha y cantidad de ultima compra a proveedor

Former Member
0 Kudos

Necesito hacer un informe que muestre todas las compras a proveedores. Las columnas que debo indicar son la de ItemCode, Dscrption, Fecha ultima compra, cantidad ultima compra, comprometid, cantidad disponible

Se que tengo que hacer el select de la PDN1, pero lo qeu no tengo claro como puedo sacar la fecha y la cantidad de la ultima compra.

Saludos

Accepted Solutions (1)

Accepted Solutions (1)

angeles804
Active Contributor
0 Kudos

estas tomando la entrada de mercancía, entonces?, quieres que te la ligue a la factura del proveedor o como?. o solo a la orden de compra?...

angeles804
Active Contributor
0 Kudos

para mi una compra es cuando ya se envio la orden de compra al proveedor. y tendría que hace rla consulta la tabla de , ALGO ASI COMO ESTO:


SELECT T0.[DocNum], T1.[ItemCode], T1.[Dscription], 
T0.[DocDate], T0.[CardCode], T0.[CardName], T0.[DocTotal] 
FROM OPOR T0  INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry 
WHERE T0.DOCDATE=[%0]

Aunque lo mas correcto, sería hacerlo desde la factura, ya que la entrega se desprende la orden de compra y a veces no metes todo lo que viene en tu orden de compra.

Saludos

Edited by: mary merecias on Jun 14, 2010 2:44 PM

angeles804
Active Contributor
0 Kudos

esto te puede ayudar a guiarte. creo que es lo que quieres... pero aqui veo que tiene que ser contra facturas el reporte.


SELECT DISTINCT(T0.[CardCode]), T0.CARDNAME,t1.doctotal,t1.docnum,
(SELECT MAX(DOCDATE) 
FROM OPOR WHERE CARDCODE=T0.CARDCODE) as 'ultima fecha'
FROM OCRD T0  INNER JOIN OPOR T1 ON T0.CardCode = T1.CardCode 
WHERE (SELECT MAX(DOCDATE) FROM OPOR WHERE CARDCODE=T0.CARDCODE)=t1.docdate 

te traerá todas las últimas compras tomando referencia una última fecha. oks?. saludos, espero que te sirva.

Former Member
0 Kudos

Hola, tome el codigo que me proporcionaste pero en base a la entrada de mercancia. Le agregue una linea que tambien debe traer la cantidad de la ultima compra, pero como puse MAX(Quantity) me trae la cantidad mas alta de esa entrada. Necesito que me traiga la cantidad de cada item.

SELECT DISTINCT(T0.CardCode), T0.CARDNAME,t1.doctotal,t1.docnum,T2.Itemcode as 'Código', t2.Dscription as 'Descripcion del Producto',

(SELECT MAX(DOCDATE) FROM OPDN WHERE CARDCODE = T0.CARDCODE) as 'Fecha Ultima Compra',

(SELECT MAX(Quantity) FROM PDN1 WHERE DocEntry = T1.DocEntry) AS 'Cantidad Ultima Compra',

T3.IsCommited as 'Comprometido',T3.Onhand as 'Cantidad Disponible'

FROM OCRD T0 INNER JOIN OPDN T1 ON T0.CardCode = T1.CardCode

INNER JOIN PDN1 T2 ON T1.DocEntry = T2.DocEntry

INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode

WHERE (SELECT MAX(DOCDATE) FROM OPDN WHERE CARDCODE = T0.CARDCODE) = T1.docdate

Group by T0.CardCode, T0.Cardname,T1.DocNum,t1.DocTotal,T1.DocDate, T2.ItemCode, T2.Dscription, T3.IsCommited,T3.Onhand, T2.Quantity, T1.DocEntry

Former Member
0 Kudos

Finalmente me quedo asi

/SELECT FROM .[OCRD] T0/

DECLARE @proveedor AS NVARCHAR (40)

/* WHERE */

SET @proveedor = /* T0.CardCode */ '[%1]'

SELECT DISTINCT(T0.CardCode), T0.CARDNAME,t1.doctotal,t1.docnum,T2.Itemcode as 'Código', t2.Dscription as 'Descripcion del Producto',

(SELECT MAX(DOCDATE) FROM OPDN WHERE CARDCODE = T0.CARDCODE) as 'Fecha Ultima Compra', T2.Quantity AS 'Cantidad Ultima Compra',

T3.IsCommited as 'Comprometido',T3.Onhand as 'Cantidad Disponible'

FROM OCRD T0 INNER JOIN OPDN T1 ON T0.CardCode = T1.CardCode

INNER JOIN PDN1 T2 ON T1.DocEntry = T2.DocEntry

INNER JOIN OITM T3 ON T2.ItemCode = T3.ItemCode

WHERE ((SELECT MAX(DOCDATE) FROM OPDN WHERE CARDCODE = T0.CARDCODE) = T1.docdate

AND

T1.cardcode = @proveedor OR @proveedor = RTRIM(ISNULL('','')))

Group by T0.CardCode, T0.Cardname,T1.DocNum,t1.DocTotal,T1.DocDate, T2.ItemCode, t3.itemcode,

T2.Dscription, T3.IsCommited,T3.Onhand, T2.Quantity, T1.DocEntry

Answers (1)

Answers (1)

Former Member
0 Kudos

Hola Estimado...

Los datos que necesitas se encuentran en la tabla de artículos, es decir, en OITM.

Son los campos LastPurPrc (Último precio de Compra) y LastPurDat (Última fecha de Compra), por lo cual haces un Inner join directamente a esta tabla, podrías partir del query:

SELECT T1.[ItemCode], T1.[Dscription], T2.[LastPurPrc], T2.[LastPurDat] FROM OPOR T0  INNER JOIN POR1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode

, luego aplicas el filtro que estimes conveniente.

Saludos Cordiales,