Consulta pagos y reconociliación facturas

Hola

He creado una consulta en la que quiero ver el “estado” de las facturas de proveedores, por lo que muestro también algunos datos de los pagos asociados a estas facturas.

Mi duda es que estoy viendo que tenemos facturas cerradas, sin pago asociado, y esto se trata a que están reconciliadas a través de una factura de ventas o un pago a cuenta con el proveedor. ¿Cómo podría mostrar en estos casos el número y/o fecha de esa reconciliación? Cuando intento hacer join con las tablas OITR u OITR1 (que creo que son las de las reconciliaciones) dejan de mostrarse algunos registros o se duplican otros.

La consulta base que tengo es esta:

SELECT 'Factura' AS "Tipo Documento", T0."DocDate" AS "Contabilización", T0."DocDueDate" AS "Vencimiento" , T0."DocEntry" AS "DocEntry", T0."DocNum" AS "Número documento", T0."CardCode" AS "CodProv", T0."CardName" AS "Proveedor", T0."DocTotal" AS "Total documento", T0."DocStatus" AS "Estado", T3."DocNum" AS "Pago número", T3."DocDate" AS "Pago fecha", T3."DocDueDate" AS "Pago vencimiento", T2."SumApplied" AS "Pago importe factura", T3."DocTotal" AS "Pago importe total"
FROM OPCH T0 
LEFT JOIN OJDT T1 ON T0."TransId"= T1."TransId"
LEFT JOIN VPM2 T2 ON T1."TransId"=T2."DocTransId"
LEFT JOIN OVPM T3 ON T2."DocNum"=T3."DocEntry"
WHERE T0."CANCELED" ='N' AND T0."DocDate" BETWEEN '[%0]' AND '[%1]'
ORDER BY T0."DocDate" ASC


Agradecería si alguien me pudiera guiar un poco sobre como interactuar con las tablas OITR y OITR1.

Un saludo

Hola amigo prueba esto



SELECT T0.[CardCode] as 'Codigo', T0.[CardName] as 'Nombre', T0.[DocNum] as 'Factura', 'Plazo' + ' ' + cast(T1.instlmntid as varchar) + ' ' + 'de' + ' ' + CAST(t0.Installmnt as varchar) as 'Plazo', cast(t0.[FolioPref] as varchar) + '-' + cast(T0.[FolioNum] as varchar) as 'Folio', T0.docdate as 'Fecha Creación', t1.[DueDate] as 'Fecha Vencimiento', case when (datediff(day,T1.[DueDate],getdate())< 0) then 0 else datediff(day,T1.[DueDate],getdate()) end as 'Días de Atraso', case when (datediff(day,T1.[DueDate],getdate())< 0) then datediff(day,T1.[DueDate],getdate())*-1 else 0 end as 'Días Para Pago', T0.DocTotal as 'Importe Original', (T1.[InsTotal] - T1.[VatSum]) as 'SubTotal', t1.[VatSum] as 'IVA', t1.[InsTotal] as 'Total', t1.PaidToDate as 'Pagado', t1.[InsTotal] - t1.paidtodate as 'Por Pagar', Case t1.[Status] When 'O' Then 'Abierta' End as 'Status Doc' FROM OPCH T0 inner join PCH6 t1 on t0.docentry = t1.docentry WHERE T0.[DocDate] between '[%0]' and '[%1]'  AND T0.[CardName] BETWEEN '[%2]' and '[%3]'+'zz' and t1.[Status] = 'O' order by T1.instlmntid, t1.[VatSum], T0.docdate

Gracias por la respuesta, pero no consigo ejecutar esa consulta.
Además, por lo que intuyo, esa consulta lo que saca más bien el estado de las facturas y si están pagadas, cantidad pagada etc…
Lo que busco realmente es de cada factura, además de su estado (cerrada o no), el documento que tiene relacionado (en caso de estar cerrada), ya que puede estar cerrada la factura por un pago, un abono, o una reconciliación manual.

Tendrías que ir de OPCH a VPM2 por el docentry de las facturas y luego a OVPM
Ahi tendras las facturas pagadas por el sistema
Luego a ITR1 también por el docentry y ahí tendrás las reconciliaciones, deberías excluir las automáticas por el campo ReconType de OITR que las coges ya en VPM2

Ok gracias @meqs . Creo que he conseguido los datos que necesitaba.

Un saludo

Pues podrías dejar por aquí la consulta, por si alguien viene detrás buscando algo parecido…

Tienes razón.

Probablemente se pueda pulir mejor la consulta, pero para lo que necesitaba me ha servido:

SELECT T0."DocDate" AS "Contabilización", T0."DocDueDate" AS "Vencimiento" , T0."DocEntry" AS "DocEntry", T0."DocNum" AS "Número documento", T0."CardCode" AS "CodProv", T0."CardName" AS "Proveedor", T0."DocTotal" AS "Total documento", T0."DocStatus" AS "Estado", T3."DocNum" AS "Pago número", T3."DocDate" AS "Pago fecha", T3."DocDueDate" AS "Pago vencimiento", T2."SumApplied" AS "Pago importe factura", T3."DocTotal" AS "Pago importe total"
FROM OPCH T0 LEFT JOIN OJDT T1 ON T0."TransId"= T1."TransId"
LEFT JOIN VPM2 T2 ON T1."TransId"=T2."DocTransId"
LEFT JOIN OVPM T3 ON T2."DocNum"=T3."DocEntry"
WHERE T0."CANCELED" ='N' AND T0."DocDate" BETWEEN '[%0]' AND '[%1]'
ORDER BY T0."DocDate" ASC

1 me gusta