Skip to main content
Announcements
Qlik Introduces a New Era of Visualization! READ ALL ABOUT IT
cancel
Showing results for 
Search instead for 
Did you mean: 
fmatus93
Contributor II
Contributor II

Calcular inventario, AYUDA!

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,

clipboard_image_0.png

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.

4 Replies
SONIAGESIMDE
Contributor II
Contributor II

Hola Francisco,

Adjunto una posible solución.

 

Un saludo,

fmatus93
Contributor II
Contributor II
Author

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.

SONIAGESIMDE
Contributor II
Contributor II

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,

 

mfenollg
Partner - Contributor
Partner - Contributor

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