エンビジョンギャラリーストック

エンビジョンとのサンプルストック分析


ホーム » コマース分析 » このページ

次のスクリプトストック分析ダッシュボードはエンビジョンで構成する方法を示します。

Image

read "/sample1" all

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

// Default currency, and currency conversions
when date >= oend - 365
  currency := mode(Orders.Currency)
Orders.NetAmount = forex(Orders.NetAmount, Orders.Currency, currency, Orders.Date)
PurchaseOrders.NetAmount = forex(PurchaseOrders.NetAmount, \
  PurchaseOrders.Currency, currency, PurchaseOrders.Date)

// FIFO inventory valuation
PurchaseOrders.CS = cumsum(PurchaseOrders.Quantity, -PurchaseOrders.Date, Id)
Fifo = sum(PurchaseOrders.CS <= StockOnHand + StockOnOrder ? PurchaseOrders.NetAmount : \
  (StockOnHand + StockOnOrder - PurchaseOrders.CS + PurchaseOrders.Quantity  > 0 ? \
    ((StockOnHand + StockOnOrder) - PurchaseOrders.CS + PurchaseOrders.Quantity) \
      * PurchaseOrders.NetAmount / PurchaseOrders.Quantity : 0))
where sum(PurchaseOrders.Quantity) < StockOnHand + StockOnOrder 
  Fifo = Fifo + (StockOnHand + StockOnOrder - sum(PurchaseOrders.Quantity)) \
    * first(PurchaseOrders.NetAmount / PurchaseOrders.Quantity)

Fifo2 = sum(PurchaseOrders.CS <= StockOnOrder ? PurchaseOrders.NetAmount : \
  (PurchaseOrders.CS < StockOnOrder + PurchaseOrders.Quantity ? \
    (StockOnOrder - PurchaseOrders.CS + PurchaseOrders.Quantity) \
      * PurchaseOrders.NetAmount / PurchaseOrders.Quantity : 0))
where sum(PurchaseOrders.Quantity) < StockOnOrder 
  Fifo2 = Fifo2 + (StockOnOrder - sum(PurchaseOrders.Quantity)) \
    * first(PurchaseOrders.NetAmount / PurchaseOrders.Quantity)

// FIFO inventory age
StockAge = 0
where PurchaseOrders.CS <= StockOnHand + StockOnOrder
  StockAge = min(oend - min(PurchaseOrders.Date), 365) // capping at 1 year

// Top row of KPIs
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)

// Stock by category and supplier
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

// Most heavy stocked items, most aged stock items
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

// Most pressured stock items
D = sum(Orders.Quantity) when date >= oend - 13 * 7
where StockOnHand + StockOnOrder <= 0 and 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(Fifo) desc

FORMATTER ERROR (Transcluded inexistent page or this same page)