Il tuo primo script con Envision - Software di ottimizzazione delle scorte

Il tuo primo script con Envision












Home » Risorse » Qui

In questo tutorial vedremo come creare un primo pannello di controllo, con l'aiuto di un piccolo script Envision. Non è necessario avere esperienza con Envision o con la programmazione in genere. In questa pagina presenteremo brevemente i concetti principali alla base di Envision.

Da dove cominciare

Per chi non l'avesse già fatto, consigliamo di aprire un account Lokad, in prova gratuita per 30 giorni. Una volta aperto l'account, caricare il set di dati di prova di Envision. Si tratta dei dati storici di un piccolo rivenditore di fantasia, che prenderemo come riferimento in questo tutorial.

Una volta importati i file di prova nell'account, fare clic sulla scheda dei progetti (Projects). A questo punto, fare clic sul link Create Envision script (crea script Envision) in fondo e scegliere un nome. Dovrebbe apparire una nuova pagina quasi vuota: è quello che si definisce editor di codice, che consente di modificare uno script Envision. Copiare e incollare il codice qui sotto, poi fare clic sul pulsante verde Start Run (avvia esecuzione) sulla destra.
/// Il mio primo script di prova!
read "/sample/Lokad_Items.tsv"
read "/sample/Lokad_Orders.tsv" as Orders
read "/sample/Lokad_PurchaseOrders.tsv" as PO

oend := max(Orders.Date)

// Principali indicatori sul set di dati
show label "This is a sample script" a1f1 tomato
show table "Product Lines" a2b2 with sum(1)
show table "Order Lines" c2d2 with sum(Orders.1)
show table "Purchase Order Lines" e2f2 with sum(PO.1)

// Due grafici
Week.sold := sum(Orders.NetAmount)
Week.purchased := sum(PO.NetAmount)
when date >= monday(oend) - 52 * 7 & date < monday(oend) 
  show linechart "Purchased and sold{$}" a3f4 tomato with 
    Week.sold as "Sold"
    Week.purchased as "Purchased"

// Scorte di più lento rigiro
UnitSold = sum(Orders.Quantity) when date > oend - 365
Turns = UnitSold  / max(1, StockOnHand + StockOnOrder)
show table "Slowest inventory turns" a5f8 with
  Id
  Name
  Turns
  UnitSold 
  order by Turns

Una volta terminata l'esecuzione dello script, dovrebbe apparire una riga verde sotto il pulsante Start Run. Il colore verde indica che l'operazione è stata completata con successo. Fare clic sulla riga per essere reindirizzati al pannello di controllo appena creato. Fare clic sul pulsante in alto Edit Script (modifica script), sopra il pannello di controllo, per tornare all'editor di codici. A questo punto, abbiamo già imparato a passare dal pannello di controllo all'editor di codici.

Image

Capire come funziona

A chi non ha molta esperienza in materia di programmazione, lo script qui sopra potrebbe sembrare un geroglifico. Vediamo, quindi, riga per riga, cosa significa. Sulla riga 1, all'inizio vediamo //. Tutte le righe come questa sono commenti: non hanno alcun ruolo nella logica dello script, ma vengono inserite per maggiore leggibilità. Nella prima riga, possiamo anche trovare tre barre ///: ciò vuol dire che la riga è un sottotitolo e che verrà mostrata sotto il titolo del progetto, nella scheda con la lista dei progetti.

Alle righe da 2 a 4, i tre assegnamenti read (leggi) caricano i dati necessari a creare il pannello di controllo. Ogni assegnamento carica un file.

Alla riga 6, definiamo una variabile che archivi la data dell'ultimo ordine effettuato: tale data ci sarà utile anche più avanti.

Le righe da 8 a 12 corrispondono alle prime due righe del pannello di controllo, che comprendono quattro caselle in tutto: la prima è una semplice etichetta, mentre le altre tre sono tabelle 1x1, che contengono un solo indicatore. Come vedremo più avanti, le tabelle possono essere usate anche per mostrare veri e propri dati tabellari, e non un solo valore alla volta.

Le righe da 14 a 20 rappresentano il grafico che appare al di sotto delle tre caselle più piccole. Tra la riga 15 e la riga 16 iniziamo a calcolare le vendite e gli acquisti totali su base settimanale. Alla riga 17 filtriamo i dati per tenere solo le ultime 52 settimane piene: la logica può sembrare complessa, ma porta a una condizione di partenza e a una condizione di arrivo. Nella riga 18, abbiamo due spazi all'inizio. Gli spazi sono importanti: when (quando) definisce un blocco; tutto ciò che è all'interno del blocco (ossia tutte le righe che iniziano con 2 spazi) viene filtrato secondo i parametri definiti. Infine, alle righe da 18 a 20, definiamo il grafico: la riga 18 stabilisce titolo, colore e posizione del grafico, mentre le righe 19 e 20 definiscono le due curve visualizzate. Da notare che entrambe le righe iniziano con un doppio spazio, due per il blocco when e due per il blocco show.

Le righe da 22 a 30 corrispondono alla tabella sotto il grafico. La tabella mostra i prodotti a più lento rigiro di tutto l'inventario. Alla riga 23, calcoliamo il numero di unità vendute per ogni prodotto negli ultimi 365 giorni. Alla riga 24, calcoliamo il numero di rotazioni del magazzino nell'arco di un anno. La funzione max() nel denominatore è usata unicamente per evitare una divisione per zero, se a un prodotto dovessero corrispondere zero scorte. Le righe da 25 a 30 presentano l'assegnamento per la visualizzazione della tabella stessa: la riga 25 stabilisce titolo e posizione del titolo; le righe da 26 a 29 definiscono tutte le colonne della tabella (una riga per ogni colonna, da destra a sinistra); infine, la riga 30 sfrutta l'opzione order by (ordina per) per far apparire i prodotti di lento rigiro in cima alla tabella.

Conclusione

A meno che non si abbia familiarità con la programmazione informatica, le informazioni contenute in questo tutorial forse sembreranno un po' troppe. Come abbiamo visto, però, bastano 30 righe di codice per creare un pannello di controllo contenente KPI, visualizzazione dei prodotti e una lista di priorità delle azioni da intraprendere sui prodotti più problematici. Con appena trenta righe di script, abbiamo già fatto un bel po' di cose.

Più in generale, la sintassi usata per i calcoli è molto simile a quella di Excel. Ad esempio, il valore totale delle scorte, che considera sia le scorte disponibili sia le scorte ordinate, potrebbe essere scritto come sum(PurchasePrice * (StockOnHand + StockOnOrder)). Consigliamo di usare questo campione per fare tutti gli esperimenti che si desidera, modificare lo script e vedere come cambiano di conseguenza i pannelli di controllo.