App Magazzino I



Salve amici,

eccoci nuovamente con il nostro kodular , oggi inizieremo una serie di due o tre tutorial per la realizzazione di un app ( molto semplificata ) per la creazione e gestione di un magazzino.

Come sempre l'idea è quella di dare uno spunto, portarvi la mia esperienza, ragionare sperimentando e se possibile realizzare anche qualcosa di carino ed utile per non scrivere solo l'ennesimo manuale tecnico.

In questo caso la parola d'ordine è semplicità, nessun collegamento esterno con cloud più o meno semplice, niente fogli o tabelle, il tutto sarà in locale così da riproporre un nuovo utilizzo del componente dictionaries. Spero di portare un esempio gradito.

Partiamo subito con la presentazione di quello che realizzeremo, ho pensato ad un primo screen dove avremo la data e informazioni su alcuni numeri utili riguardo al magazzino, il tasto Scan ci introduce alla verifica e creazione.

Dopo aver acquisito il codice a barre avremo due opzioni: 1) screen 2 , il prodotto esiste e carichiamo la scheda con tutte le info e la possibilità caricare quantità oppure cercare un nuovo prodotto 2) screen3, il prodotto non esiste e passiamo alla creazione della scheda prodotto. 

 



  


Adesso andiamo a vedere cosa ci servirà prima di partire con il codice e i vari ragionamenti, dall'immagine vediamo come ho suddiviso la grafica in tre Arrangements (VA) che andranno a simulare i vari screens (tecnica molto utile per avere infiniti screens senza appesantire l'app con una vera creazione che costa molto anche a livello di Mb dell'app e di gestione. Ho fatto un tutorial a riguardo cerca Multiscreen nel blog).  Da sensori preleviamo il clock per la gestione delle date e il barcode scanner , il componente notifier per le varie notifiche e scelte, ultimo ma non ultimo un tinyDb per salvare tutti i dati, lascio a voi come impostare la grafica o la scelta dei dati da utilizzare a seconda delle necessità. 


Adesso facciamo un piccolo focus sul dizionario prima di iniziare anche perché capita la struttura i blocchi che useremo saranno veramente facili.
Sul lato sinistro vediamo la struttura del database, li ho portati a capo per evidenziare meglio i vari livelli ( ti ricordo che ho fatto altri due tutorial su questo componente, recuperali se serve). Dopo la prima parentesi graffa, compreso tra le virgolette, abbiamo la prima chiave ( un pò come il tag di altri Db) che nel nostro caso sarà uno dei codi a barre dei prodotti , i due punti e la coppia di parentesi graffe indicano che stiamo leggendo il valore salvato nella chiave , nel nostro caso li ho organizzati come 4 coppie di key-value per salvare le info del nostro prodotto ( da notare l'utilizzo di make a dictionary  prima dei valori). Si possono creare le più svariate strutture ma in questo caso mi tornava comodo per come utilizzerò i dati, tu come lo avresti organizzato?
Possiamo quindi immaginare un primo livello in cui abbiamo tutti i codici a barre , facilmente richiamabili come lista con il blocco get keys che ci permette di sondare velocemente la lista di tutti i codici in magazzino. Un secondo livello invece si dirama in ogni key per accogliere i dati dei prodotti, vediamo anche la rappresentazione con il blocco usato in kodular, set value ci permette di salvare il prodotto impostando come chiave il codice a barre ( attenzione : se non è presente verrà creato altrimenti andrà a sovrascrivere i dati che gli passiamo), il secondo socket chiede quale dizionario usare ( con fantasia l'ho chiamato Magazzino ), l'ultimo elemento da aggiungere è il make a dictionary con le 4 coppie di dati: nome, quantità, data, prezzo. I valori li preleviamo direttamente dal testo delle textbox o nel mio caso anche dalle label che ho deciso di lasciare fisse, la data e il codice a barre infatti le ho impostate non modificabili ma potrete integrare a piacimento.

Visto che la parte grafica è puramente personale e finalizzata all'utilizzo passiamo subito alla fase di inizializzazione. La variabile Magazzino è inizializzata come empty dictionay altrimenti non potremo usarlo, in seguito porto a zero la variabile QuantitàProdotto che userò in fase di carico e setto vuota la textbox della variabile CodiceProdotto in cui salvo il codice a barre dopo la scansione.
Appena parte l'app la prima cosa che devo fare è andare a caricare il magazzino quindi salvo nella variabile omonima il valore presente nel tinyDb ( grazie al quale i dati non vengono persi alla chiusura dell'app ma vi ricordo che vengono cancellati con la disinstallazione o dall'eliminazione della memoria dati dell'app) salvando il valore empty se non sono presenti dati. Grazie al clock e il blocco format date prelevo la data del giorno e la imposto con il formato che più mi piace, il blocco size of dictionary mi permette facilmente di valutare il numero di keys nel primo livello che nel nostro caso corrisponde al numero di tipologie di prodotto, quelli diversi per capirci. L'ultimo blocco l'ho aggiunto per giocare un po' con il codice, le variabili e sottolineare la potenza del dizionario, spero apprezzerete.



 Partiamo proprio dal blocco list by walking key path che permette di impostare un percorso da ispezionare e applicarlo a tutti i valori, restituendo una lista se impostato tutto correttamente. Quando leggiamo path subito dobbiamo capire che il valore da inserire dovrà essere una lista e che i valori inseriti ci permettono di muoverci attraverso i livelli creati, mentre i blocchi senza il path sono fissi, esplorano solo il livello target inserito . Quindi con path ci possiamo muovere tra i vari piani del palazzo e in ogni piano tra i vari corridoi, mentre senza path siamo fermi ad piano specifico 😂 Se hai seguito i vecchi tutorial sul dizionario non mi prenderai per un pazzo furioso. 🙈
Walk all at level, essenziale per come ho impostato il database, permette di ispezionare tutti i valori presenti in ogni key, quindi controlla tutti i piani e tutti i corridoi, inserito come primo elemento indica che le keys da ispezionare sono quelle più esterne, i nostri codici a barre. Noi però non vogliamo vagare a caso bensì abbiamo un obiettivo preciso , le quantità di ogni prodotto, infatti il secondo elemento è quantità. Cosa gli stiamo dicendo? Caro kodular per ogni chiave in quel preciso livello entra dentro e controlla se c'è la chiave quantità e restituiscimi il valore, ritornando al palazzo per ogni piano dovrai ispezionare i corridoi alla ricerca della stanza quantità e dimmi cosa trovi dentro 😂
Adesso vediamo il codice utilizzato, ho scelto una variabile locale e nello specifico non la classica che va a settare il valore , quella che si aggancia in sequenza, ma quella che va inserita lateralmente così da restituire un valore che introduco direttamente nella label. Quindi fa i suoi calcoli e mi restituisce un valore già pronto per essere inserito come testo della label.
Dalla sezione control andiamo a prendere sia il do result, altrimenti no potremmo inserire il codice , che il for each item il list , infatti come anticipato il blocco che cerca tra gli appartamenti ci restituisce una lista, in questo caso la lista di tutte le quantità di tutti i prodotti presti nel magazzino, quindi il numero totale di merce presente. Per ogni elemento della lista , quindi per ogni quantità, prendi il valore e aggiungilo al valore già presente nella variabile somma. Eh sì stiamo andando a ricreare una somma automatica , partendo dal valore zero prenderà la prima quantità in lista e la sommerà al valore esistente, quindi 0 + 5 (immaginiamo sia la quantità del primo prodotto in magazzino). Adesso la variabile somma vale 5 e al giro successivo andremo a sommare 0 + 16 ( immaginando sia la quantità del secondo elemento del nostro magazzino) ottenendo 21 , il numero totale di prodotti a magazzino ipotizzando solo due tipologie presenti. Spero di non essermi perso 😂 Tutti i valori estrapolati sono stati impostati come testo delle label come possiamo notare dal primo screenshot , 17 novembre , 2 prodotti diversi per un totale di 32 quantità, i blocchi join rendono il tutto più carino andando a comporre il testo correttamente.

Bene dire che per oggi ci sono abbastanza cose su cui ragionare e visto che questo tutorial è diretto per lo più a principianti non voglio esagerare con le informazioni.
Ti piace come stiamo procedendo? Potrebbe essere utili un app magazzino ? 
Link 👈🏻 alla seconda parte 💪🏻
Raffaele 

 Hai apprezzato il mio lavoro?Se ti va puoi offrirmi un bel caffè 😍

Commenti

Ciao, spero ti piaccia il blog. Se ti fa piacere qui puoi offrirmi un caffè!

Post popolari in questo blog

GOOGLE SCRIPT & KODULAR READ, WRITE, UPDATE, DELETE

Tu lo conosci THUNKABLE?