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.
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
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
Muchas Gracias fue de gran ayuda.
Saludos
Mireya
Este tema se cerró automáticamente 7 días después del último post. No se permiten nuevas respuestas.