Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenas tardes. No encuentro cómo resolver esto: tengo una serie de registros de movimientos de ingresos y egresos de fondos, con fecha, tipo e importe. Hice varias métricas que calculan el saldo mensual (ingresos -egresos), pero necesito también calcular las disponibilidad en caja al cierre de cada mes, es decir, tomar los arrastres del saldo incial o el de los meses precdentes, y estoy trabado con eso. En la tabla que armé como ejemplo, es fácil armar métricas para los saldos (1000 a fin de enero y -2000 a fin de febrero), pero debo agregar que con el saldo inicial de 5000, la disponibilidad de caja a fin de enero era 6000 y a fin de febrero era 4000. Agradeceré una ayuda.
Disponible | ||||
Saldo inicial | 5.000 | |||
Fecha | Tipo | $ | Saldo mes | |
1/1/2019 | Ingreso | 2.000 | ||
2/1/2019 | Ingreso | 1.000 | ||
3/1/2019 | Egreso | 2.500 | ||
4/1/2019 | Ingreso | 1.000 | ||
5/1/2019 | Egreso | 500 | 1.000 | 6.000 |
1/2/2019 | Egreso | 1.000 | ||
2/2/2019 | Ingreso | 1.500 | ||
3/2/2019 | Egreso | 500 | ||
4/2/2019 | Ingreso | 1.000 | ||
5/2/2019 | Ingreso | 2.000 | ||
6/2/2019 | Egreso | 5.000 | - 2.000 | 4.000 |
Hola Etovi.
Una posible solución es calcular el saldo mensual y el disponible para cada día del mes.
El scrip sería algo así:
Let vL.disponible= 5000;
Caja_tmp:
LOAD * INLINE [
Fecha, Tipo, Importe
1/1/2019, Ingreso, 2.000
2/1/2019, Ingreso, 1.000
3/1/2019, Egreso , 2.500
4/1/2019, Ingreso, 1.000
5/1/2019, Egreso , 500
1/2/2019, Egreso , 1.000
2/2/2019, Ingreso, 1.500
3/2/2019, Egreso , 500
4/2/2019, Ingreso, 1.000
5/2/2019, Ingreso, 2.000
6/2/2019, Egreso , 5.000
];
//Tabla intermedia a la que se añade el saldo mensual acumulado
noconcatenate
Caja_SaldoMes:
LOAD Fecha, Tipo, Importe,
IF(Month(Fecha)<>Month(Previous(Fecha)),
IF(Tipo='Egreso',-1,1)*Importe,
rangesum(IF(Tipo='Egreso',-1,1)*Importe,peek('Saldo Mes'))) AS "Saldo Mes"
RESIDENT Caja_tmp;
Drop table Caja_tmp;
//Tabla final con el saldo mensual acumulado y el disponible
noconcatenate
Caja:
LOAD Fecha, Tipo, Importe, [Saldo Mes],
rangesum(IF(rowno()=1,$(vL.disponible),0)+ IF(Tipo='Egreso',-1,1)*Importe, peek('Disponible')) AS "Disponible"
RESIDENT Caja_SaldoMes;
Drop table Caja_SaldoMes;
El resultado sería algo así:
Hola Etovi.
Una posible solución es calcular el saldo mensual y el disponible para cada día del mes.
El scrip sería algo así:
Let vL.disponible= 5000;
Caja_tmp:
LOAD * INLINE [
Fecha, Tipo, Importe
1/1/2019, Ingreso, 2.000
2/1/2019, Ingreso, 1.000
3/1/2019, Egreso , 2.500
4/1/2019, Ingreso, 1.000
5/1/2019, Egreso , 500
1/2/2019, Egreso , 1.000
2/2/2019, Ingreso, 1.500
3/2/2019, Egreso , 500
4/2/2019, Ingreso, 1.000
5/2/2019, Ingreso, 2.000
6/2/2019, Egreso , 5.000
];
//Tabla intermedia a la que se añade el saldo mensual acumulado
noconcatenate
Caja_SaldoMes:
LOAD Fecha, Tipo, Importe,
IF(Month(Fecha)<>Month(Previous(Fecha)),
IF(Tipo='Egreso',-1,1)*Importe,
rangesum(IF(Tipo='Egreso',-1,1)*Importe,peek('Saldo Mes'))) AS "Saldo Mes"
RESIDENT Caja_tmp;
Drop table Caja_tmp;
//Tabla final con el saldo mensual acumulado y el disponible
noconcatenate
Caja:
LOAD Fecha, Tipo, Importe, [Saldo Mes],
rangesum(IF(rowno()=1,$(vL.disponible),0)+ IF(Tipo='Egreso',-1,1)*Importe, peek('Disponible')) AS "Disponible"
RESIDENT Caja_SaldoMes;
Drop table Caja_SaldoMes;
El resultado sería algo así:
Gracias, Jmmayoral3, es una opción que funciona.
Saludos. Ernesto