Reporte de pedidos - entrega - facturas

Hola,

Tengo un problema, me pidieron un reporte de Pedidos con su Entrega y su Factura, ya tengo algo, pero con algunos pedidos se me saben duplicar los registros. Este es mi script, ¿Me podrian decir por favor que JOIN adicional me estaria haciendo falta? Gracias!

SELECT DISTINCT
	T0.CardCode CedulaRUC,
	T0.CardName Cliente,
	T0.Address Direccion,
	T5.Name Canal,
	T6.Name MacroCanal,
	T3.SlpName Vendedor,
	T1.ItemCode CodigoItem,
	T1.Dscription DescripcionItem,
	T1.unitMsr Unidad,
	T1.NumPerMsr UnidadMedida,

	CONVERT(CHAR(10), T1.DocDate, 102) FechaPedido,
	T0.DocNum NumeroPedido,
	T1.Quantity CantidadPedido,
	T1.PriceBefDi ValorUnitarioPedido,
	T1.Quantity * T1.PriceBefDi ValorAntesDescuentoPedido,
	T1.DiscPrcnt PorcentajeDescuento,
	CASE WHEN T1.DiscPrcnt = 0 THEN T1.Quantity * T1.PriceBefDi ELSE ((T1.Quantity * T1.PriceBefDi) * T1.DiscPrcnt) / 100 END ValorDespuesDescuentoPedido,
	T1.LineTotal ValorTotalLineaPedido,

	CONVERT(CHAR(10), T2.DocDate, 102) FechaEntrega,
	T2.DocNum NumeroEntrega,
	T7.Quantity CantidadEntrega,
	T7.PriceBefDi ValorUnitarioEntrega,
	T7.Quantity * T1.PriceBefDi ValorAntesDescuentoEntrega,
	T7.DiscPrcnt PorcentajeDescuentoEntrega,
	CASE WHEN T7.DiscPrcnt = 0 THEN T7.Quantity * T1.PriceBefDi ELSE ((T7.Quantity * T7.PriceBefDi) * T7.DiscPrcnt) / 100 END ValorDespuesDescuentoEntrega,
	T7.LineTotal ValorTotalLineaEntrega,

	CONVERT(CHAR(10), T9.DocDate, 102) FechaFacturacion,
	T9.FolioNum NumeroFactura,
	T8.Quantity Cantidadfacturada,
	T8.PriceBefDi ValorUnitarioFactura,
	T8.Quantity * T8.PriceBefDi valorAntesDescuentoFactura,
	T8.DiscPrcnt PorcentajeDescuientoFactura,
	CASE WHEN T8.DiscPrcnt = 0 THEN T8.Quantity * T8.PriceBefDi ELSE ((T8.Quantity * T8.PriceBefDi) * T8.DiscPrcnt) / 100 END ValorDespuesDescuentoFactura,
	T8.LineTotal ValorTotalLineaFactura
FROM ORDR T0
	INNER JOIN RDR1 T1 ON T0.DocEntry = T1.DocEntry
	LEFT JOIN ODLN T2 ON T1.TrgetEntry = T2.DocEntry
	LEFT JOIN OSLP T3 ON T3.SlpCode = T2.SlpCode
	LEFT JOIN OCRD T4 ON T4.CardCode = T2.CardCode
	LEFT JOIN "@GRUPO_SN" T5 ON T5.Code = T4.U_GrupoSN
	LEFT JOIN "@SN_MACROCANAL" T6 ON T6.Code = T4.U_MacroCanal
	LEFT JOIN DLN1 T7 ON T7.DocEntry = T2.DocEntry
	LEFT JOIN INV1 T8 ON T7.ObjType = T8.BaseType and T7.DocEntry = T8.BaseEntry
	LEFT JOIN OINV T9 ON T9.DocEntry = T8.DocEntry
WHERE
	--T2.DocDate BETWEEN '20210701' AND '20210705'
	T0.DocNum = 174991

Buenas tardes
Prueba agregando esto

Funciona en ciertos pedidos, en otros pedidos no aparecen todas las entregas

hola @tnlgortiz yo creo que es normal que se te dupliquen algunos datos ya que probablemente tengas un pedido con dos entradas y esas dos entradas con una factura, debido a ello tendrás en tu respuesta el pedido duplicado y la factura duplicada, quiero creer que ese es el caso, correcto ?? de ser así y su tu reporte lo pasarás a Crystal ahi podrás discriminar haciendo uso de formulas.

Saludos

Intenta agrupar los campos!

Prueba lo siguiente…

LEFT JOIN DLN1 T7 ON T7."DocEntry" = T2."DocEntry" and T1."TrgetEntry" = T7."BaseEntry"

Para este caso, si tienes varias facturas para un pedido, podrías hacer un sub-reporte solo para las facturas. La cabecera serian los pedidos y el detalle las facturas

Si quieres tener sumatorias para las cantidades facturadas y los montos, aplica un GROUP BY

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.