Analisi delle scorte con Envision: un esempio - Software di ottimizzazione delle scorte

Analisi delle scorte con Envision: un esempio












Home » Risorse » Qui

Lo script qui di seguito mostra come possiamo creare un pannello di controllo con Envision per l'analisi delle scorte.

Image

read "/sample/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as Orders
read "/sample/Lokad_PurchaseOrders.tsv" as PO

show label "Stock value analysis" a1f1 tomato
oend := max(Orders.Date)

// Valuta predefinita e conversione valute
when date >= oend - 365
  currency := mode(Orders.Currency)
Orders.NetAmount = forex(Orders.NetAmount, Orders.Currency, currency, Orders.Date)
PO.NetAmount = forex(PO.NetAmount,
  PO.Currency, currency, PO.Date)

// Valutazione inventario FIFO
PO.Fifo = fifo(StockOnHand + StockOnOrder,
  PO.Date, PO.Quantity)
Fifo = sum(PO.Fifo * PO.NetAmount / PO.Quantity)

PO.Fifo2 = fifo(StockOnOrder, PO.Date, PO.Quantity)
Fifo2 = sum(PO.Fifo2 * PO.NetAmount / PO.Quantity)

// Età inventario FIFO
StockAge = sum(PO.Fifo * (oend - PO.Date)) /. sum(PO.Fifo)

// Prima riga di KPI
show table "Stock on hand (FIFO){ \{currency}}" a2b2 with sum(Fifo - Fifo2)
show table "Stock on order (FIFO){ \{currency}}" c2d2 with sum(Fifo2)
show table "Items in stock" e2 with count(StockOnHand + StockOnOrder > 0)
when date > oend - 31
where sum(Orders.Quantity) by Id > 0
  show table "Items unstocked" f2 with sum(1)

// Scorte per categoria e fornitore
show barchart "Stock by category" a3c5 tomato with
  sum(Fifo)
  group by Category
  order by sum(Fifo) desc

show barchart "Stock by supplier{ \{currency}}" d3f5 tomato with
  sum(Fifo)
  group by Supplier
  order by sum(Fifo) desc

// Articoli più pesanti in magazzino, articoli più vecchi in magazzino
show table "Most heavy stock items" a6c8 with
  Id
  Name
  StockOnHand as "On Hand"
  StockOnOrder as "On Order"
  Fifo as "Value{ \{currency}}"
  order by Fifo desc

show table "Most aged stock items" d6f8 with
  Id
  Name
  StockOnHand as "On Hand"
  Fifo as "Value{ \{currency}}"
  StockAge as "Age (days)"
  order by Fifo * StockAge desc // combina volutamente età e valore

// Articoli in magazzino sottoposti a pressione maggiore
D = sum(Orders.Quantity) when date >= oend - 13 * 7
where StockOnHand + StockOnOrder <= 0 & D > 0
  show table "Most demanded unstocked items" a9c11 tomato with
    Id
    Name
    D as "Units sold last quarter"
    order by D desc

V = sum(Orders.NetAmount) when date >= oend - 13 * 7
where sum(V) by Supplier > 0
  show barchart "Stock age by supplier { days}" d9f11 tomato with
    sum(V * StockAge) / max(1, sum(V))
    group by Supplier
    order by sum(V * StockAge) / max(1, sum(V)) desc