Ventas por cliente en un rango de fechas
Ventas netas por cliente (facturas menos notas de crédito) entre dos fechas, de mayor a menor.
Herramienta
SELECT X.CardCode, X.CardName, SUM(X.NetSales) AS NetSales FROM ( SELECT T0.CardCode, T0.CardName, T0.DocTotal - T0.VatSum AS NetSales FROM OINV T0 WHERE T0.CANCELED = 'N' AND T0.DocDate BETWEEN '[%0]' AND '[%1]' UNION ALL SELECT T1.CardCode, T1.CardName, -(T1.DocTotal - T1.VatSum) FROM ORIN T1 WHERE T1.CANCELED = 'N' AND T1.DocDate BETWEEN '[%0]' AND '[%1]' ) X GROUP BY X.CardCode, X.CardName ORDER BY NetSales DESC
SELECT X."CardCode", X."CardName", SUM(X."NetSales") AS "NetSales" FROM ( SELECT T0."CardCode", T0."CardName", T0."DocTotal" - T0."VatSum" AS "NetSales" FROM OINV T0 WHERE T0."CANCELED" = 'N' AND T0."DocDate" BETWEEN '[%0]' AND '[%1]' UNION ALL SELECT T1."CardCode", T1."CardName", -(T1."DocTotal" - T1."VatSum") FROM ORIN T1 WHERE T1."CANCELED" = 'N' AND T1."DocDate" BETWEEN '[%0]' AND '[%1]' ) X GROUP BY X."CardCode", X."CardName" ORDER BY "NetSales" DESC
Qué responde esta consulta
Antes de la reunión mensual de ventas, el gerente comercial quiere una sola lista de clientes ordenada por lo que realmente compraron en el período. Las devoluciones cuentan: un cliente al que se le facturaron 50.000 y luego se le emitió una nota de crédito por 20.000 debe aparecer con 30.000, no con 50.000.
¿Lo quiere como un gráfico que su equipo pueda filtrar? Vea cómo crear un dashboard de SAP Business One sin Power BI.
Ejemplo de resultado
Valores de demostración ilustrativos. Sus columnas son las mismas; los números vienen de su empresa.
| CardCode | CardName | NetSales |
|---|---|---|
| C20000 | Acme Trading | 48250 |
| C30000 | Northwind Retail | 31720.5 |
| C40000 | Blue Harbor Foods | 18900 |
| C50000 | Summit Supplies | 6410.75 |
SQL Server vs SAP HANA
La lógica es idéntica; la versión HANA solo encierra cada columna y alias entre comillas dobles (T0."DocTotal", AS "NetSales"), porque HANA convierte a mayúsculas los nombres sin comillas. La columna negativa sin nombre en la segunda parte del UNION funciona en ambas bases de datos, porque los nombres de columna se toman del primer SELECT.
Errores comunes y soluciones
- Las facturas canceladas siguen cambiando los totales: Mantenga CANCELED = 'N' en ambas partes. En SAP B1 una factura cancelada recibe CANCELED = 'Y' y su nota de crédito de cancelación recibe CANCELED = 'C'; al filtrar por 'N' se excluyen las dos, así no se compensan entre sí por accidente.
- Conversion failed when converting date and/or time from character string: Si prueba la consulta fuera de SAP B1, reemplace '[%0]' y '[%1]' por fechas en formato AAAAMMDD (por ejemplo '20261001'), que SQL Server interpreta igual sin importar la configuración de idioma.
- Los totales no coinciden con el estado de cuenta del cliente en moneda extranjera: DocTotal y VatSum están en moneda local. Use DocTotalFC - VatSumFC en ambas partes del UNION para ordenar a los clientes en la moneda del documento.
- Los totales no cuadran con el reporte de Análisis de ventas (descuento de cabecera): Esta consulta lee DocTotal - VatSum de la cabecera del documento, que ya incluye el descuento de cabecera (OINV.DiscPrcnt) y además el flete. Si la cambia para sumar INV1.LineTotal, por ejemplo para ingresos por artículo, el descuento de cabecera no está dentro de LineTotal y la suma de líneas sobrestima las ventas. Use SUM(T1.LineTotal * (1 - T0.DiscPrcnt / 100.0)) (HANA: SUM(T1."LineTotal" * (1 - T0."DiscPrcnt" / 100.0))) y reste las notas de crédito de clientes (ORIN/RIN1) con el mismo factor. Vea Totales de ventas que no cuadran en SAP B1: solución del descuento de cabecera.
Consultas relacionadas
Referencia de tablas: Tabla OINV (Factura de clientes (cabecera)) · Tabla ORIN (Nota de crédito 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 «Ventas por cliente en un rango de fechas» 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, ORIN del esquema estándar de SAP Business One. No necesita campos definidos por el usuario.
¿Qué debo ingresar cuando se abre la ventana de selección?
Esta consulta usa parámetros: [%0] = fecha desde, [%1] = fecha hasta. SAP B1 muestra una ventana de selección para cada uno al ejecutarla.
¿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.
