Query promedio pago clientes

Apreciados, agradezco su colaboración con un Query que me muestre el promedio de pago de los SN, Clientes por rango de fecha, muchisimas gracias.

Camilo, danos más detalles de qué has intentado, a qué error llegas, etc.

Recuerda que la comunidad no es pedir y nada más, también tú puedes ir ayudando a otras personas que necesitan una mano, o en tus propios temas demostrar que lo estás intentando…

1 me gusta

Buen día.
Se intento con el siguiente query pero por alguna razón la información que trae no es certera.

SELECT T0."DocNum",
T0."CardCode", 
T0."CardName", 
T0."DocDate", 
T0."DocTotal", 
T0."PaidToDate",
(T0."DocTotal"-T0."PaidToDate") as "SALDO" FROM OINV T0 WHERE T0."DocDate" between '[%0]' and '[%1]'
and (T0."DocTotal"-T0."PaidToDate") = 0

Para obtener las facturas de clientes que tienen un saldo de cero en un rango de fechas específico en SAP Business One, es importante tener en cuenta la forma en que se manejan los cálculos y las comparaciones en la consulta SQL. Aquí tienes una corrección en el query que debería mostrarte la información correcta:

1
2
3
4
5
6
7
8
9
10

SELECT T0."DocNum", T0."CardCode", T0."CardName", T0."DocDate", T0."DocTotal", T0."PaidToDate", (T0."DocTotal" - T0."PaidToDate") as "SALDO" FROM OINV T0 WHERE T0."DocDate" BETWEEN '[%0]' AND '[%1]' AND (T0."DocTotal" - T0."PaidToDate") = 0

En esta consulta SQL corregida:

  • Se han corregido las comillas dobles que encierran los nombres de los campos de las tablas.
  • Se utilizaron las comillas simples (') en lugar de las comillas curvas (‘’) alrededor de los marcadores de parámetros [0] y [1].
  • Se ha dejado la condición (T0."DocTotal" - T0."PaidToDate") = 0 para filtrar solo las facturas que tienen un saldo de cero.
  • Se mantienen las selecciones y cálculos de los campos "DocNum", "CardCode", "CardName", "DocDate", "DocTotal", "PaidToDate" y el cálculo del saldo.

asegúrate de ejecutar esta consulta SQL corregida en tu entorno de SAP Business One para obtener las facturas de clientes que tienen un saldo de cero en el rango de fechas especificado.

Buen día.,
@beckerl agreadezco mucho tu aporte, pero lo que busco es tener un promedio de pagos de los clientes en un tiempo especifico. es decir si la fecha de facturacion fue el 01/01/2024 - y la de pago es 20/01/2024 debería mostrarme un tiempo de pago de 19 días.

Muchas gracias por el apoyo.

Para calcular el promedio de días de pago de los clientes en un rango de fechas específico en SAP Business One, puedes utilizar la siguiente consulta con SQL:
SELECT “CardCode” as Cliente, AVG(DATEDIFF(DAY, “DocDate”, “PaidToDate”)) as PromedioDiasPago FROM OINV WHERE “PaidToDate” IS NOT NULL AND “DocDate” BETWEEN ‘2024-01-01’ AND ‘2024-01-20’ GROUP BY “CardCode”

Explicación de la consulta:

  • Se selecciona el código del cliente (CardCode) como identificador del cliente.
  • Se calcula el promedio de días de pago utilizando la función AVG(DATEDIFF) para obtener la diferencia en días entre la fecha de la factura (DocDate) y la fecha de pago (PaidToDate).
  • La consulta se limita a las transacciones donde la fecha de pago no es nula y la fecha de la factura está dentro del rango especificado (‘2024-01-01’ al ‘2024-01-20’).
  • Los resultados se agrupan por código de cliente para calcular el promedio de días de pago para cada cliente.

Al ejecutar esta consulta en SAP Business One, obtendrás el promedio de días que tardan los clientes en pagar sus facturas dentro del rango de fechas especificado. Asegúrate de ajustar las fechas ‘2024-01-01’ y ‘2024-01-20’ según el período de tiempo que deseas analizar.

Esta consulta te permitirá calcular el promedio de días de pago de los clientes en SAP Business One en un rango de fechas específico.

Hola @Chano1983

A mí me da duda cómo quieres ejecutar esa consulta, me refiero a cómo vas a trabajar con los datos. Porque en general salen así:

SELECT T0.[DocDate], T0.[CardCode], T0.[DocTotal], T0.[PaidSum] FROM OPCH T0 WHERE T0.[DocDate] BETWEEN [%0] AND [%1] ORDER BY T0.[CardCode]

¿Dónde quieres el promedio, vertical u horizontal? En el ejemplo que te muestro el PaidSum trae lo pagado de cada Factura en la OPCH y buscas el promedio para cada cambio en el CardCode, ¿es así?.

Si lo mantienes vertical podrías usar una similar a esta:

SELECT T0.[CardCode], AVG(T0.[PaidSum]) as AvgPaidSum FROM OPCH T0 WHERE T0.[DocDate] BETWEEN [%0] AND [%1] GROUP BY 
 T0.[CardCode] ORDER BY  T0.[CardCode]

Y saldría algo como esto:

Pero toma en cuenta que así como está aún hay que trabajar un poco, porque en este ejemplo no le estoy indicando a la sentencia que hacer con los valores nulos o ceros que como sabes en los promedios interfieren en el resultado.

Tal vez como dice @SidV si nos compartes un poco más la ayuda sería mejor, más específica, por otro lado ¿qué tal andas en Crystal? Porque podrías llevarte la consulta como un comando y ahí tendrías un informe mejor estructurado para el promedio que buscas.

Recuerda que esto es una idea tomando el pago directo de las OPCH para promediar los pagos aplicados por documentos. También podrías generar la consulta sobre las tablas del módulo de Bancos y promediar desde ahí.

Saludines.

1 me gusta