Reporte de Ventas

Estimados,
Se quiere generar un reporte y dar seguimiento al cierre de los documentos de ventas hasta el pago, es decir:
OEDEN DE VENTA -> ENTREGA -> FACTURA DEUDORES -> PAGO (cada uno con su respective numeracion y fecha)
esto con el fin de verificar que todos los documentos se cierren de forma correcta y aquellos que no han concluido el ciclo verificar que paso, como tengo que relacionar 4 formularios.
Muchas gracias
Mireya

Entre documentos de marketing todos se relacionan a grandes rasgos a través de los siguientes campos:

Para evaluar la relación entre factura y pago utilizaría el campo “PaidToDate” - “Pagado hasta la fecha” haciendo una comparativa contra el DocTotal.

Saludos.

2 Me gusta

Estimado,
realice un codigo algo basico con lo que logre una parte de lo que estaba buscando:

SELECT       
        t0.CardCode,
        t0.CardName,
        t0.DocNum as 'Num. Orden Venta',
        t0.DocDate as 'Fecha Orden Venta',
        t2.DocNum as 'Num. Entega',
        t2.DocDate as 'Fecha Entrega',
        t4.DocNum as 'Num. Factura',
        t4.DocDate as 'Fecha Factura',
        t5.DocNum as 'Num. Pago' ,
        t5.DocDate  as 'Fecha Pago'                    
FROM            ORDR t0
                INNER JOIN   DLN1 t1
                ON t0.DocNum =t1.BaseRef AND t0.ObjType = t1.BaseType AND t0.DocEntry =t1.BaseEntry  
                INNER JOIN  ODLN t2
                on t1.DocEntry = t2.DocEntry
                INNER JOIN  INV1 t3
                on  t2.DocNum = t3.BaseRef AND t2.ObjType = t3.BaseType AND t2.DocEntry =t3.BaseEntry  
                INNER JOIN OINV t4
                on  t3.DocEntry=t4.DocEntry
                INNER JOIN ORCT t5
                on t4.ReceiptNum = t5.DocNum 
Where
    t0.CANCELED = 'N' and  T0.DocDate >=[%0] AND  T0.DocDate <=[%1]

sin embargo en este reporte solo muestra aquellos documentos que han concluido todo el ciclo es decir desde la orden de venta hasta el pago, es decir si es esa linea el document quedo en la factura no se muestra en el listado y la idea es que se muestren todas las ordenes de venta y ver hasta que documento llegaron es decir poder ver su avance si estan ya en la factura, si estan en la entrega o talvez siguen solo en la orden de venta.
Gracias
Mireya

1 me gusta

Este es un código básico que tenia guardado, lo único es que debes agregarle la referencia al pago, pero básicamente tiene varias consideraciones incluyendo las oc de la ov y pickin en caso de ser usado.

también esta lista para agregar detalle en caso de ser requerido.

SELECT DISTINCT 
	T0.DocNum AS 'OV'
	, T3.DocNum AS 'OC'
	, T12.DocNum AS 'OFAB'
	, T5.DocNum AS 'ENTRA'
	, T7.AbsEntry AS 'PICKIN'
	, T9.DocNum AS 'GD'
	, T11.DocNum AS 'FAC'
	, T13.CardCode AS 'CardCode_OV'
	, T13.CardName AS 'CardName_OV'
	, T13.LicTradNum AS 'RUT_OV'
	, T0.DocDate AS 'DocDate_OV'
	, T0.DocDueDate AS 'DocDueDate_OV'
	, T0.TaxDate AS 'TaxDate_OV'
	, T14.SlpName AS 'SlpName_OV'
	, T0.NumAtCard AS 'NumAtCard_OV'
	, T0.Comments AS 'Comments_OV'
	, T0.PickRmrk AS 'PickRmrk_OV'
	, T5.DocDate AS 'DocDate_ENTRA'
	, T5.DocDueDate AS 'DocDueDate_ENTRA'
	, T5.TaxDate AS 'TaxDate_ENTRA'
	, T9.DocDate AS 'DocDate_GD'
	, T9.DocDueDate AS 'DocDueDate_GD'
	, T9.TaxDate AS 'TaxDate_GD'
	, CASE T0.DocStatus WHEN 'O' THEN 'Abierto' WHEN 'C' THEN 'Cerrado' END AS 'ESTADO_OV'
	, CASE T3.DocStatus WHEN 'O' THEN 'Abierto' WHEN 'C' THEN 'Cerrado' END AS 'ESTADO_OC'
	, T0.AtcEntry AS 'AtcEntry_OV'
	, T3.AtcEntry AS 'AtcEntry_OC'
	, T5.AtcEntry AS 'AtcEntry_ENTRA'
	, T9.AtcEntry AS 'AtcEntry_GD'
	, T11.AtcEntry AS 'AtcEntry_FAC'
	, FORMAT(T0.CreateTs, '00:00:00') AS 'HORA_OV'
FROM [ORDR] T0 /*OV*/ 
INNER JOIN [RDR1] T1 ON T0.DocEntry = T1.DocEntry /*OV*/ 
LEFT JOIN [POR1] T2 ON T0.DocEntry = T2.BaseEntry AND T0.ObjType = T2.BaseType AND T1.LineNum = T2.BaseLine /*PEDIDO*/ 
LEFT JOIN [OPOR] T3 ON T2.DocEntry = T3.DocEntry /*PEDIDO*/ 
LEFT JOIN [PDN1] T4 ON T3.DocEntry = T4.BaseEntry AND T3.ObjType = T4.BaseType AND T2.LineNum = T4.BaseLine /*ENTRADA*/ 
LEFT JOIN [OPDN] T5 ON T4.DocEntry = T5.DocEntry /*ENTRADA*/ 
LEFT JOIN [PKL1] T6 ON T0.DocEntry = T6.OrderEntry AND T0.ObjType = T6.BaseObject AND T1.LineNum = T6.OrderLine 
LEFT JOIN [OPKL] T7 ON T6.AbsEntry = T7.AbsEntry 
LEFT JOIN [DLN1] T8 ON T0.DocEntry = T8.BaseEntry AND T0.ObjType = T8.BaseType AND T1.LineNum = T8.BaseLine 
LEFT JOIN [ODLN] T9 ON T8.DocEntry = T9.DocEntry 
LEFT JOIN [INV1] T10 ON ISNULL(T9.DocEntry, T0.DocEntry) = T10.BaseEntry AND ISNULL(T9.ObjType, T0.ObjType) = T10.BaseType AND ISNULL(T8.LineNum, T1.LineNum) = T10.BaseLine
LEFT JOIN [OINV] T11 ON T10.DocEntry = T11.DocEntry 
LEFT JOIN [OWOR] T12 ON T0.DocEntry = T12.OriginNum 
LEFT JOIN [OCRD] T13 ON T0.CardCode = T13.CardCode
LEFT JOIN [OSLP] T14 ON T0.SlpCode = T14.SlpCode
5 Me gusta

Muchas Gracias fue de gran ayuda.
Saludos
Mireya

1 me gusta

Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.