Skip to main content
Announcements
Save $600 on Qlik Connect registration! Sign up by Dec. 6 to get an extra $100 off with code CYBERSAVE: REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
andresdiaz
Contributor II
Contributor II

Calcular días con facturación mayor a 50

Buen día

Estoy haciendo un reporte que paso a contarles cual es la necesidad para entender el contexto,  tengo dos tablas principales de las cuales trabajo y son Notas_Pedidos y Facturas. Yo tomo la fecha de la nota de pedido y la fecha de factura y saco una diferencia en días, el cual seria los días que tardan en facturar dicha nota de pedido. Pero tengo una cuestión, mucha veces nos agarra fin de semana y feriados o días que no se trabajan por diferentes motivos. La forma correcta para contabilizar: contar los días desde F_Nota_Pedido hasta F_Factura, por cada día medir la cantidad de comprobantes que se realizaron y si es mas de 50 comprobantes, contabilizar ese día y si es mejor no. Vamos al ejemplo que es mas fácil de interpretar.

uGM5V71sa2.png

Siempre antes de consultar intento hacer una formula, pero en este caso no sé por donde arrancar.

Muchas Gracias de antemano

1 Solution

Accepted Solutions
andresdiaz
Contributor II
Contributor II
Author

Buen día

Después de unos días de investigación y prueba, opte por usar esta solución utilizando ApplyMap. Les comparto el link de la solución, me fui muy útil y aprendí muchas cosas en el camino.

https://community.qlik.com/t5/Qlik-Sense-App-Development/Calculated-column-count-days-between-two-da...

Saludos!

View solution in original post

3 Replies
andresdiaz
Contributor II
Contributor II
Author

Se ocurrió hacer una tabla desde script que tiene 3 campos 

[Comprobantes_Ventas_PorDia]:
LOAD *;
SQL
DECLARE @FechaHasta DATETIME
DECLARE @FechaDesde DATETIME
SELECT @FechaHasta = GETDATE()
SELECT @FechaDesde = DATEADD(MM, DATEDIFF(MM,0,DATEADD(year, -1, GETDATE())), 0)
SELECT
Comprobantes_Ventas.Fecha
,count(*) as 'Cantidad_Comprobantes'
,CASE WHEN count(*) >= 50 THEN '1' ELSE '0' END AS 'Laboral'
FROM Comprobantes_Ventas
WHERE Comprobantes_Ventas.Fecha BETWEEN @FechaDesde AND @FechaHasta
GROUP BY Comprobantes_Ventas.Fecha;

Esto me genero una tabla con la fecha que tengo comprobantes y la cantidad, más un campos que se llama "laboral", el cual guarda 1 si es mayor a 50 comprobantes.

Luego en una tabla simple con los registros de los comprobantes de venta, hago un calculo sobre esa tabla generada, pero no la tengo con relación a ninguna tabla (Solo de info)

l5HHVm8ReB.png

La columna que dice Diferencia el la diferencia de dias entre las dos fechas, en la que dice LABORAL es la que calcula sobre la tabla creada.

No me estaría calculando por cada fila, sino que hace el calculo una sola vez y repite en todos las filas

rubenmarin

Buenas, igual te puede servir la función NetWorkDays, que le pasas una fecha de inicio, otra de fin, y un listado de días festivos y te calcula los días laborales entre ambas fechas (cuenta de lunes a viernes, quitando los festivos).

https://help.qlik.com/es-ES/sense/April2020/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFu...

El listado de festivos se pueden guardar en una variable:

 

SET vFestivos = '01/01/2020','06/01/2020'...;
Tabla:
LOAD NetWorkDays (FechaNota, FechaFactura, $(vFestivos)) as DiasDiferencia...

 

La alternativa contando como días laborables los que tengan más de 50 comprobante se podría trasladar también a script de Qlik teniendo una tabla que calcule las fechas donde haya más de 50 comprobantes y usar Exists() para comprobar si la fecha está en el listado.

andresdiaz
Contributor II
Contributor II
Author

Buen día

Después de unos días de investigación y prueba, opte por usar esta solución utilizando ApplyMap. Les comparto el link de la solución, me fui muy útil y aprendí muchas cosas en el camino.

https://community.qlik.com/t5/Qlik-Sense-App-Development/Calculated-column-count-days-between-two-da...

Saludos!