Query de cartera de clientes

Hola a todos

Pregunta, si alguien ha ligado las tablas de OCRD, JDT1, desde las consultas de sap on hana, para generar consulta de cartera de clientes con numero de factura

Alguna sugerencia

Gracias

Que información deseas extraer?

Algo parecido a antiguedad de saldos, las facturas pendientes de pago.

Y el reporte de antigüedad nativo de SAP no te funciona?

No quieren que le ponga centro de costo, importe del I.V.A… ya genere este query, pero como determino solo las facturas NO pagadas.?, alguien sabe

No pagas serían las facturas con status O

No me aparece nada, al filtrar de esa forma

No necesariamente, porque pueden estar pagadas parcialmente y estar en estatus ‘O’ o estoy mal?

Las facturas pagadas parcialmente forman parte de la antigüedad…

Hola buenos dias a todos,
les comparto un Query de antiguedad de saldos de clientes, no es exactamente con las tablas de asientos (OJDT y JDT1) pero les puede ayudar. En este Query me pidieron clasificar las facturas segun fuera de BUSES o REFACCIONES, pero esa parte la pueden quitar.

Declare @Fecha as date
SET @fecha= (SELECT top 1 T0.[DocDate] FROM OINV T0 WHERE T0.[DocDate] =’[%1]’)

SELECT
A.[Area],
A.[DocNum],
A.[Moneda],
A.[Código],
A.[Nombre_Cliente],
ISNULL ([SIN RETRASO],0) + ISNULL ([DE 0 A 30 DIAS],0) + ISNULL([DE 31 A 60 DIAS], 0) + ISNULL([DE 61 A 90 DIAS], 0) + ISNULL([DE 91 A 120 DIAS], 0) + ISNULL ([MAS de 120 DIAS],0) as’Saldo Pendiente’,
ISNULL([SIN RETRASO], 0) as’Sin retraso’,
ISNULL ([DE 0 A 30 DIAS],0) + ISNULL([DE 31 A 60 DIAS], 0) + ISNULL([DE 61 A 90 DIAS], 0) + ISNULL([DE 91 A 120 DIAS], 0) + ISNULL ([MAS de 120 DIAS],0) as’Total Vencido’,
ISNULL([DE 0 A 30 DIAS], 0) as’De 0 a 30 Días’,
ISNULL([DE 31 A 60 DIAS], 0) as’De 31 a 60 Días’,
ISNULL([DE 61 A 90 DIAS], 0) as’De 61 a 90 Días’,
ISNULL([DE 91 A 120 DIAS], 0) as’De 91 a 120 Días’,
ISNULL ([MAS de 120 DIAS],0) as’ Más de 120 Días’

FROM
(
– Saldo Pendiente de Facturas BUSES y REFACCIONES
SELECT
‘Area’= CASE
WHEN T0.Series =61 THEN ‘REFACCIONES’
WHEN T0.Series =113 THEN ‘BUSES’
END,
T0.[DocNum] ‘DocNum’,
T0.[DocCur] as’Moneda’,
T0.[CardCode] ‘Código’,
T0.[CardName] ‘Nombre_Cliente’,
‘Días_Atraso’ = CASE
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha ) < 0 THEN ‘SIN RETRASO’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 0 and 30 THEN ‘DE 0 A 30 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 31 and 60 THEN ‘DE 31 A 60 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 61 and 90 THEN ‘DE 61 A 90 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 91 and 120 THEN ‘DE 91 A 120 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) >= 121 THEN ‘MAS de 120 DIAS’
END,
‘Pendiente’= CASE
WHEN T0.[DocCur]= ‘USD’ THEN (T0.[DocTotalSy]-T0.[PaidSys])
WHEN T0.[DocCur]= ‘EUR’ THEN (T0.[DocTotalFc]-T0.[PaidFC])
WHEN T0.[DocCur]= ‘MXN’ THEN (T0.[DocTotal]-T0.[PaidSum])
END
FROM OINV T0
INNER JOIN OCRD T1 ON T0.CardCode = T1.CardCode
INNER JOIN OCTG T2 ON T1.GroupNum = T2.GroupNum
WHERE T0.[DocStatus] =‘O’ and T0.[DocDate] <= @Fecha
UNION
– Saldo Pendiente de Pagos recibidos no aplicados a facturas (saldos a favor del cliente)
SELECT Distinct
‘Pago Recibido’ as ‘Area’,
T0.[DocNum] ‘DocNum’,
T0.[DocCurr] as’Moneda’,
T0.[CardCode] ‘Código’,
T0.[CardName] ‘Nombre_Cliente’,
‘Días_Atraso’ = CASE
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha ) < 0 THEN ‘SIN RETRASO’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 0 and 30 THEN ‘DE 0 A 30 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 31 and 60 THEN ‘DE 31 A 60 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 61 and 90 THEN ‘DE 61 A 90 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 91 and 120 THEN ‘DE 91 A 120 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) >= 121 THEN ‘MAS de 120 DIAS’
END,

'Pendiente'= CASE 
WHEN T0.[DocCurr]= 'USD' THEN (T0.[OpenBalSc])*-1 
WHEN T0.[DocCurr]= 'EUR' THEN (T0.[OpenBalFc])*-1 
WHEN T0.[DocCurr]= 'MXN' THEN (T0.[OpenBal])*-1  
END

FROM ORCT T0
LEFT JOIN RCT2 T1 ON T0.[DocEntry] = T1.[DocNum]
WHERE T0.[DocDate] <= @Fecha and T0.[OpenBalFc] >0 and T0.[CardCode] in (select CardCode from OCRD where T0.CardCode=OCRD.CardCode)

UNION

– Saldo Pendiente de Notas de Crédito directas BUSES y REFACCIONES

SELECT
‘Area’= CASE
When T3.[Series]=113 Then ‘BUSES’
When T3.[Series]=61 Then ‘REFACCIONES’
WHEN T1.[BaseType]= 16 THEN ‘BUSES’
WHEN T1.[BaseType]= -1 and T0.SLPCode= 9 THEN ‘BUSES’ ELSE ‘Refacciones’
END,
T0.[DocNum] ‘DocNum’,
T0.[DocCur] as’Moneda’,
T0.[CardCode] ‘Código’,
T0.[CardName] ‘Nombre_Cliente’,
‘Días_Atraso’ = CASE
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha ) < 0 THEN ‘SIN RETRASO’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 0 and 30 THEN ‘DE 0 A 30 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 31 and 60 THEN ‘DE 31 A 60 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 61 and 90 THEN ‘DE 61 A 90 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) Between 91 and 120 THEN ‘DE 91 A 120 DIAS’
WHEN DATEDIFF(day,T0.[DocDueDate], @Fecha) >= 121 THEN ‘MAS de 120 DIAS’
END,
‘Pendiente’= CASE
WHEN T0.[DocCur]= ‘USD’ THEN (T0.[DocTotalSy]-T0.[PaidSys])-1
WHEN T0.[DocCur]= ‘EUR’ THEN (T0.[DocTotalFc]-T0.[PaidFC])
-1
WHEN T0.[DocCur]= ‘MXN’ THEN (T0.[DocTotal]-T0.[PaidSum]) *-1
END
FROM ORIN T0
INNER JOIN RIN1 T1 ON T0.[DocEntry] = T1.[DocEntry]
LEFT JOIN INV1 T2 ON T1.[BaseEntry]=T2.[DocEntry] and T1.[BaseLine]=T2.[LineNum] and T1.[BaseType]=T2.[ObjType]
LEFT JOIN OINV T3 ON T2.[DocEntry] = T3.[DocEntry]
WHERE T0.[DocStatus] =‘O’ and T0.[DocDate] <= @Fecha
) A
PIVOT (SUM (Pendiente) FOR [Días_Atraso] IN ([SIN RETRASO],[DE 0 A 30 DIAS],[DE 31 A 60 DIAS],[DE 61 A 90 DIAS],[DE 91 A 120 DIAS], [MAS de 120 DIAS]) ) A
ORDER BY A.[Código], A.[Area], A.[Moneda], A.[DocNum]

Yo tengo este:
Declare @FECHAVENCIMIENTO DATETIME
SET @FECHAVENCIMIENTO = CONVERT(DATETIME, @FECHAVENCIMIENTOTEXTO, 111)

SELECT 
ESTADO.CODIGO_CLIENTE
, ESTADO.CLIENTE
, ESTADO.FACTURA
, ESTADO.FECHA
, ESTADO.FECHA_VENCIMIENTO
, ESTADO.DIAS_VENCIDA
, ESTADO.IMPORTE
, ESTADO.CREDITO_APLICADO - SUM(ESTADO.ABONOS) CREDITO_APLICADO
, SUM(ESTADO.ABONOS) ABONOS
, CASE WHEN ESTADO.DIAS_VENCIDA < 31 THEN IMPORTE - (ESTADO.CREDITO_APLICADO ) ELSE 0 END MEN_30
, CASE WHEN ESTADO.DIAS_VENCIDA > 30 AND ESTADO.DIAS_VENCIDA < 61 THEN IMPORTE - (ESTADO.CREDITO_APLICADO ) ELSE 0 END MAS_30
, CASE WHEN ESTADO.DIAS_VENCIDA > 60 AND ESTADO.DIAS_VENCIDA < 91 THEN IMPORTE - (ESTADO.CREDITO_APLICADO ) ELSE 0 END MAS_60
, CASE WHEN ESTADO.DIAS_VENCIDA > 90 THEN IMPORTE - (ESTADO.CREDITO_APLICADO ) ELSE 0 END MAS_90
, ESTADO.MONEDA
, ESTADO.CODIGO_MONEDA
, ESTADO.CODIGO_SUCURSAL
, ESTADO.NOMBRE_SUCURSAL
FROM
(

SELECT
FACTURAS.CardCode CODIGO_CLIENTE
, CASE YEAR(FACTURAS.DocDate) WHEN 2018 THEN CONVERT(VARCHAR(254), FACTURAS.DocNum) ELSE RIGHT(FACTURAS.Comments, 6) END FACTURA
, FACTURAS.CardName CLIENTE
, FACTURAS.DocDate FECHA
, FACTURAS.DocDueDate FECHA_VENCIMIENTO
, DATEDIFF(DAY, FACTURAS.DocDueDate, GETDATE()) DIAS_VENCIDA
, CASE FACTURAS.DocCur WHEN ‘MXP’ THEN FACTURAS.DocTotal ELSE FACTURAS.DocTotalFC END IMPORTE
, DETALLES_FACTURAS.OcrCode CODIGO_SUCURSAL
, CASE FACTURAS.DocCur WHEN ‘MXP’ THEN ISNULL(FACTURAS.PaidToDate, 0) ELSE ISNULL(FACTURAS.PaidToDate/FACTURAS.DocRate, 0) END CREDITO_APLICADO
, CASE FACTURAS.DocCur WHEN ‘MXP’ THEN
ISNULL(CASE T0.CANCELED WHEN ‘N’ THEN DETALLES_PAGOS_RECIBIDOS.BfDcntSum else 0 end, 0) ELSE ISNULL( CASE T0.CANCELED WHEN ‘N’ THEN DETALLES_PAGOS_RECIBIDOS.BfDcntSumF else 0 end, 0) END ABONOS
, CASE FACTURAS.DocCur WHEN ‘MXP’ THEN ‘Pesos’ ELSE ‘Dólares’ END MONEDA
, FACTURAS.DocCur CODIGO_MONEDA, SUCURSALES.WhsName NOMBRE_SUCURSAL
FROM OINV FACTURAS
INNER JOIN INV1 DETALLES_FACTURAS ON FACTURAS.DocEntry = DETALLES_FACTURAS.DocEntry
left JOIN RIN1 DETALLES_NOTAS_CREDITOS ON DETALLES_NOTAS_CREDITOS.BaseEntry = FACTURAS.DocEntry AND DETALLES_NOTAS_CREDITOS.BaseType = 13
left JOIN ORIN NOTAS_CREDITOS ON DETALLES_NOTAS_CREDITOS.DocEntry = NOTAS_CREDITOS.DocEntry AND (NOTAS_CREDITOS.CANCELED IS NULL OR NOTAS_CREDITOS.CANCELED = ‘N’)
left JOIN RCT2 DETALLES_PAGOS_RECIBIDOS ON DETALLES_PAGOS_RECIBIDOS.DocEntry = FACTURAS.DocEntry AND DETALLES_PAGOS_RECIBIDOS.InvType = 13
left JOIN ORCT T0 ON T0.[DocEntry] = DETALLES_PAGOS_RECIBIDOS.[DocNum] AND (T0.CANCELED IS NULL OR T0.CANCELED = ‘N’)
LEFT JOIN OWHS SUCURSALES ON DETALLES_FACTURAS.WhsCode = SUCURSALES.WhsCode
WHERE FACTURAS.DocStatus = ‘O’ AND (FACTURAS.CANCELED IS NULL OR FACTURAS.CANCELED = ‘N’)
AND CONVERT(datetime, FACTURAS.DocDate, 111) <= convert(datetime, @FECHAVENCIMIENTO, 111)

GROUP BY FACTURAS.CardCode, FACTURAS.DocNum, FACTURAS.Comments, FACTURAS.CardName,
FACTURAS.DocDate, FACTURAS.DocDueDate, FACTURAS.DocTotal , FACTURAS.DocTotalFC, DETALLES_FACTURAS.OcrCode,
FACTURAS.DocCur, T0.Canceled, t0.DocNum, SUCURSALES.WhsName
,DETALLES_PAGOS_RECIBIDOS.BfDcntSum, DETALLES_PAGOS_RECIBIDOS.BfDcntSumF,
NOTAS_CREDITOS.DocTotal, NOTAS_CREDITOS.DocTotalFC, FACTURAS.PaidToDate, FACTURAS.DocRate
)ESTADO
GROUP BY
ESTADO.CODIGO_CLIENTE
, ESTADO.CLIENTE
, ESTADO.FACTURA
, ESTADO.FECHA
, ESTADO.FECHA_VENCIMIENTO
, ESTADO.DIAS_VENCIDA
, ESTADO.IMPORTE
, ESTADO.MONEDA
, ESTADO.CODIGO_MONEDA
, ESTADO.CODIGO_SUCURSAL
, ESTADO.NOMBRE_SUCURSAL
,ESTADO.CREDITO_APLICADO
ORDER BY ESTADO.FECHA

Hola buenos dias, gracias por las respuestas, voy a revisarlos, y les retroalimento.

Saludos

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