Consulta para ver Importe Aplicado en Conciliación

Primero toma en cuenta que tienes 2 tipos de reconciliaciones:

  1. las automáticas que están relacionadas a un documento, grlte un pago, esto lo identificas por el campo “IsSystem” de la OITR, si es “Y” es automático. En estos casos podrias sacar el pago desde los campos “SrcObjAbs” = 24 (Pagos recibidos), y con el campo “InitObjAbs” tienes el Identificador del Pago. Claro que si el Pago conecta un anticipo, este ya no aparecería en tu reporte.

  2. en el caso de los manuales es mas complejo, por que puedes seleccionar 2 o mas pagos, y conectar a 2 o mas facturas, con lo que no tienes manera de identificar a que pago especificamente corresponde el monto conciliado, ahi solo te quedaria referenciar o el ID de la reconciliacion, o hacer una concatenacion de los pagos o anticipos.

La otra opciones ver que hace SAP cuando sacas las transacciones aplicadas a una factura.
Ahi te aparecen 2 querys, uno para la linea cabecera de la factura con el totalizador de importes:

SELECT T0.[TransType], T0.[BaseRef], T0.[TransId], T0.[Line_ID], MIN(T2.[ReconType]), MIN(T2.[ReconRule1]), 
       MIN(T2.[ReconRule2]), MIN(T2.[ReconRule3]), T0.[RefDate], T0.[DueDate], MAX(T2.[ReconDate]), 
	   T0.[BatchNum], T0.[CreatedBy], T0.[Ref1], T0.[Ref2], T0.[Ref3Line], T0.[ContraAct], T0.[LineMemo], 
	   SUM(T1.[CashDisSum]), T0.[Debit], T0.[Credit], T0.[BalDueDeb], T0.[BalDueCred], 
	   SUM(T1.[ReconSum]), T0.[SYSCred], T0.[SYSDeb], T0.[BalScDeb], T0.[BalScCred], 
	   SUM(T1.[ReconSumSC]), T0.[FCDebit], T0.[FCCredit], T0.[BalFcDeb], T0.[BalFcCred], 
	   SUM(T1.[ReconSumFC]), MAX(T2.[ReconNum]), T0.[ShortName], T0.[Account], T0.[FCCurrency], 
	   T2.[ReconCurr], COUNT(T2.[ReconNum]), T1.[IsCredit], MAX(T2.[OldMatNum]) 
FROM  [dbo].[JDT1] T0   
LEFT OUTER  JOIN [dbo].[ITR1] T1  ON  T0.[Line_ID] = T1.[TransRowId]  AND  T0.[TransId] = T1.[TransId]    
LEFT OUTER  JOIN [dbo].[OITR] T2  ON  T1.[ReconNum] = T2.[ReconNum]   
WHERE (T0.[TransId] = (@TransID_Asiento_de_la_factura) ) AND  T0.[ShortName] <> T0.[Account]  
GROUP BY T0.[TransType], T0.[BaseRef], T0.[TransId], T0.[Line_ID], T0.[RefDate], T0.[DueDate], 
         T0.[BatchNum], T0.[CreatedBy], T0.[Ref1], T0.[Ref2], T0.[Ref3Line], T0.[ContraAct], 
		 T0.[LineMemo], T0.[Debit], T0.[Credit], T0.[BalDueDeb], T0.[BalDueCred], T0.[SYSCred], 
		 T0.[SYSDeb], T0.[BalScDeb], T0.[BalScCred], T0.[FCDebit], T0.[FCCredit], T0.[BalFcDeb], 
		 T0.[BalFcCred], T0.[ShortName], T0.[Account], T0.[FCCurrency], T2.[ReconCurr], T1.[IsCredit] 
ORDER BY T0.[TransId],T0.[Line_ID]

Y el otro query que te da el detalle de las transacciones aplicadas:

SELECT T1.[TransType], T1.[BaseRef], T1.[TransId], T1.[Line_ID], T2.[ReconType], 
       T2.[ReconRule1], T2.[ReconRule2], T2.[ReconRule3], T1.[RefDate], T1.[DueDate], 
	   T2.[ReconDate], T1.[BatchNum], T1.[CreatedBy], T1.[Ref1], T1.[Ref2], T1.[Ref3Line], 
	   T1.[ContraAct], T1.[LineMemo], T0.[CashDisSum], T1.[Debit], T1.[Credit], T1.[BalDueDeb], 
	   T1.[BalDueCred], T0.[ReconSum], T1.[SYSCred], T1.[SYSDeb], T1.[BalScDeb], T1.[BalScCred], 
	   T0.[ReconSumSC], T1.[FCDebit], T1.[FCCredit], T1.[BalFcDeb], T1.[BalFcCred], T0.[ReconSumFC], 
	   T2.[ReconNum], T1.[ShortName], T1.[Account], T1.[FCCurrency], T2.[ReconCurr], T2.[ReconNum], 
	   T0.[IsCredit], T2.[OldMatNum], T3.[ReportID], T3.[ActStatus] 
FROM  [dbo].[ITR1] T0  
INNER  JOIN [dbo].[JDT1] T1  ON  T0.[TransRowId] = T1.[Line_ID]  AND  T0.[TransId] = T1.[TransId]   
INNER  JOIN [dbo].[OITR] T2  ON  T0.[ReconNum] = T2.[ReconNum]    
LEFT OUTER  JOIN [dbo].[ECM2] T3  ON  T2.[ReconNum] = T3.[SrcObjAbs]  AND  T3.[SrcObjType] = 321  
WHERE  EXISTS (
              SELECT U0.[ReconNum] 
			    FROM  [dbo].[ITR1] U0  
			   WHERE U0.[TransId] = (@TransID_Asiento_de_la_factura) AND  U0.[TransRowId] = (0)  AND  T2.[ReconNum] = U0.[ReconNum]  
			   )  
		AND  (T1.[TransId] <> (@TransID_Asiento_de_la_factura)  OR  T1.[Line_ID] <> (0) )  
ORDER BY T2.[CreateDate]

Son algo complicado estos querys, pero por ahí va el tema.

1 me gusta