Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buenos días estimados,
Estoy tratando de realizar un cálculo para obtener el inventario final en cada mes. Los datos que tengo todos los meses son los productos producidos, las ventas y el inventario. Para los valores de producción y ventas no tengo problema porque existe un pronóstico para los meses futuros, pero para el inventario es donde comienza la complicación, como ejemplo hice esta tabla,
El cálculo es stock final = stock inicial + producción - ventas
Para Julio tengo el stock inicial y puedo realizar el cálculo perfectamente, pero para Agosto ya no lo tengo y necesito que el stock final de Julio sea el inicial de Agosto y así para todos los demás meses.
He intentado de varias maneras, pero me hace el cálculo para el mes siguiente solamente porque después empieza a realizar la operación producción - ventas despreciando el stock. Cabe señalar que existen varios productos en cada mes.
En Excel es sencillo realiarlo, pero en Qlik se ha vuelto un dolor de cabeza...
Ojalá me puedan ayudar para poder seguir avanzando con los reportes.
Desde ya, muchas gracias.
Saludos.
Francisco M.
Hola Francisco,
Adjunto una posible solución.
Un saludo,
Hola Sonia,
Gracias por la respuesta, pero creo que no me funcionó. No sé si será porque solamente he trabajado en Set Analysis, pero me cuesta comprender un poco la parte de Script.
Creo que había encontrado la respuesta en este link https://community.qlik.com/t5/QlikView-Scripting/Calculation-for-the-next-day-opening-stock/td-p/134....
Si tengo las relaciones generadas en Gestor de Datos, al momento que intento ingresar algún código en Script me dice que se dejará de generar automáticamente ese menú.
El stock, las ventas y producción las obtengo de diferentes tablas de una base de datos MSSQL.
Para que funcione deberías intentar generar en el script una única tabla con los campos que necesitas (tal cual está en el ejemplo que subí)
Un saludo,
Hola,
esta puede ser una solución para tu problema.
// Primero cargas la tabla original en orden ascendende según el mes.
Temp_StockFinal:
Load * Inline [
Mes,StockInicial,Produccion,Ventas
1,3,3,5
2,1,5,3
3,3,2,5
4,4,3,4
5,4,1,8
6,2,5,9
7,,6,5
8,,5,2
9,,1,5
10,,3,2
11,,6,2
12,,2,2
];
//Luego haces una funcion que recorre toda la tabla desde el principio hasta el fin.
let vfilas = NoOfRows('Temp_StockFinal');
//Guardas el stock inicial del primer registro
let vStockInicial = Peek('StockInicial', 0 , 'Temp_StockFinal');
// Recorres toda la tabla para calcular el stock final y el inicial cuando no existe
for I = 0 to $(vfilas) - 1
StockFinal:
Load
Peek('Mes', $(I), 'Temp_StockFinal') as Mes,
$(vStockInicial) as StockInicial,
Peek('Produccion', $(I), 'Temp_StockFinal') as Produccion,
Peek('Ventas', $(I), 'Temp_StockFinal') as Ventas,
rangesum($(vStockInicial),Peek('Produccion', $(I), 'Temp_StockFinal'),-Peek('Ventas', $(I), 'Temp_StockFinal')) as StokFinal
AutoGenerate 1;
// Detectas si en el siguiente registro tienes stock incial en caso contrario le asignas el final del resgistro anterior
let vStockInicial =
if(Peek('StockInicial', $(I) + 1 , 'Temp_StockFinal'),
Peek('StockInicial', $(I) + 1 , 'Temp_StockFinal'),
Peek('StokFinal', $(I) , 'StockFinal')
);
next
Drop Table Temp_StockFinal;
Exit Script;
// Y ya lo tendrias