Antigüedad de saldos de clientes (cuentas por cobrar)
Saldo abierto por cliente en tramos de 0–30, 31–60, 61–90 y más de 90 días según el vencimiento.
Herramienta
SELECT T0.CardCode, T0.CardName, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) <= 30 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Days0to30, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) BETWEEN 31 AND 60 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Days31to60, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) BETWEEN 61 AND 90 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Days61to90, SUM(CASE WHEN DATEDIFF(day, T0.DocDueDate, GETDATE()) > 90 THEN T0.DocTotal - T0.PaidToDate ELSE 0 END) AS Over90, SUM(T0.DocTotal - T0.PaidToDate) AS TotalOpen FROM OINV T0 WHERE T0.DocStatus = 'O' AND T0.CANCELED = 'N' GROUP BY T0.CardCode, T0.CardName ORDER BY TotalOpen DESC
SELECT T0."CardCode", T0."CardName", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) <= 30 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Days0to30", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) BETWEEN 31 AND 60 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Days31to60", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) BETWEEN 61 AND 90 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Days61to90", SUM(CASE WHEN DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP) > 90 THEN T0."DocTotal" - T0."PaidToDate" ELSE 0 END) AS "Over90", SUM(T0."DocTotal" - T0."PaidToDate") AS "TotalOpen" FROM OINV T0 WHERE T0."DocStatus" = 'O' AND T0."CANCELED" = 'N' GROUP BY T0."CardCode", T0."CardName" ORDER BY "TotalOpen" DESC
Qué responde esta consulta
El responsable de crédito prepara la lista semanal de cobranza y el CFO quiere saber cuánto dinero de clientes está detenido más allá de 60 o 90 días. Esta consulta divide el saldo de facturas abiertas de cada cliente en tramos de antigüedad según la fecha de vencimiento.
Ejemplo de resultado
Valores de demostración ilustrativos. Sus columnas son las mismas; los números vienen de su empresa.
| CardCode | CardName | Days0to30 | Days31to60 | Days61to90 | Over90 | TotalOpen |
|---|---|---|---|---|---|---|
| C20000 | Acme Trading | 12400 | 5300 | 0 | 2100 | 19800 |
| C30000 | Northwind Retail | 8750 | 0 | 3200 | 0 | 11950 |
| C40000 | Blue Harbor Foods | 2500 | 1800 | 0 | 4600 | 8900 |
| C50000 | Summit Supplies | 0 | 0 | 0 | 3150 | 3150 |
SQL Server vs SAP HANA
Cada DATEDIFF(day, T0.DocDueDate, GETDATE()) se convierte en DAYS_BETWEEN(T0."DocDueDate", CURRENT_TIMESTAMP). El orden de los argumentos es el mismo (inicio, fin), así que un resultado positivo sigue significando vencido y los límites de los tramos no cambian.
Errores comunes y soluciones
- Los totales no coinciden con el reporte estándar de antigüedad de saldos de clientes: Esta consulta lee solo facturas de clientes abiertas. Las notas de crédito abiertas, los anticipos y los pagos a cuenta no se descuentan, por eso el reporte estándar puede salir más bajo.
- Las facturas que aún no vencen quedan en el tramo de 0-30: Las facturas aún no vencidas dan un número de días negativo, que cumple <= 30. Agregue un tramo NotDue aparte (días <= 0) si quiere separarlas.
- Los montos se ven mal para clientes en moneda extranjera: DocTotal y PaidToDate están en moneda local. Use DocTotalFC - PaidFC para calcular la antigüedad en la moneda del documento.
Consultas relacionadas
Referencia de tablas: Tabla OINV (Factura de clientes (cabecera))
Tres pasos, sin registro
Copie la versión correcta
Use la pestaña SQL Server para bases de datos MS SQL y la pestaña HANA para SAP B1 sobre HANA.
Abra el generador de consultas
En SAP Business One vaya a Herramientas → Consultas → Generador de consultas (Tools → Queries → Query Generator), pegue la consulta y haga clic en Ejecutar.
Guarde y comparta
Haga clic en Grabar, elija una categoría y asigne un nombre a la consulta. Su equipo podrá ejecutarla desde el gestor de consultas (Query Manager).
Preguntas sobre esta herramienta
¿Cómo ejecuto la consulta «Antigüedad de saldos de clientes (cuentas por cobrar)» en SAP Business One?
Copie la versión que corresponde a su base de datos, abra Herramientas → Consultas → Generador de consultas, péguela en el cuadro SQL y haga clic en Ejecutar. Grábela para reutilizarla después.
¿Qué tablas usa esta consulta?
Lee OINV del esquema estándar de SAP Business One. No necesita campos definidos por el usuario.
¿Se puede convertir en un dashboard o una alerta?
Sí. Convertimos consultas en reportes de Crystal Reports, reportes de Excel que se actualizan solos, alertas de SAP B1 o mensajes de WhatsApp para gerentes.
Hechas para equipos de SAP Business One
¿Lo necesita dentro de SAP Business One?
Desarrollamos add-ons, reportes e integraciones para SAP B1 en SQL Server y HANA. Cuéntenos qué necesita y reciba un precio fijo, normalmente en 24 horas.
