App Magazzino II

 




Eccoci nuovamente insieme 💪

Andiamo a riprendere il progetto del magazzino, come è andata con la prima parte ( QUI )? Trovato difficoltà, era tutto chiaro, dubbi? Era la parte più ostica quindi adesso dovremmo andare veloci come un treno e, se abbiamo capito bene la parte del dizionario, potremo lanciarci in qualsiasi personalizzazione. Let's go!

Se ricordiamo bene gli screen che ho realizzato nella Home Page ho volutamente lasciato minimale , con poche info sul magazzino, e con il tasto per la scansione. Un tasto con la stessa funzione di scan l'ho introdotto anche nella scheda prodotto in modo da iniziare subito una nuova ricerca senza dover tornare alla home, vediamo il loro codice.

Scan1 si trova in home e l'unica cosa che deve fare è far partire il lettore di barcode, l'altro invece, presente nella scheda prodotto, non solo farà partire la scansione ma renderà anche invisibile la scheda prodotto e visibile la home in modo da funzionare anche come tasto torna alla home. Sono scelte di progettazione, a me sembrava carino anche perché così torniamo a visualizzare i dati iniziali , cosa ne pensate?

Vediamo ora cosa succede dopo lo scan, sicuramente avremo due possibili strade: il prodotto esiste a magazzino o non esiste. Appena attivato il when After Scan andiamo a salvare il risultato in una variabile ( in alcuni casi potrebbe non servire ma visto che la personalizzazione è molto semplice ho voluto lasciare questo input) e impostiamo in nostro controllo. Se il codice a barre è presente nella lista allora salviamo i dati nelle varie label e apriamo la scheda prodotto per visualizzarla, da qui poi avremo la possibilità di fare un'altra scansione o caricare quantità per questo prodotto.

Per come ho impostato il database il blocco get keys (senza aggiunte lavora sul primo livello , quello più esterno) mi restituisce la lista di tutti i codici a barre , proprio quello che mi serve per la verifica. Adesso parte una semplice impostazione del testo da visualizzare nelle label, i blocchi del dizionario andranno a prelevare dal Db (database) utilizzando il componente get con il path , quindi se vediamo path sappiamo che possiamo navigare tra i livelli , entrare e uscire da ogni stanza 😂 Nel nostro caso la composizione è molto semplice, come primo elemento del make a list inseriremo la nostra variabile, il codice a barre, e come secondo elemento quello di cui abbiamo bisogno, quindi il nome, la quantità, data, il prezzo oppure qualsiasi campo abbiate messo per il vostro prodotto. 


Non è semplicissimo? Come ultima cosa non dimentichiamo di chiudere (rendere invisibile) la nostra Home e aprire la scheda prodotto. 
Se il prodotto non è presente farò partire una notifica , ho scelto la più semplice per praticità, dove faccio visualizzare il messaggio presentando anche il codice a barre ( per una verifica visiva ) e la possibilità di scegliere se andare alla creazione della scheda o annullare e quindi tornare alla home. Poi vedremo dove vengono gestite tutte le risposte alle notifiche. Non devo spiegare l'uso del join vero ? Vi aspetto nei commenti per eventuali dubbi.
Torniamo un attimo al prodotto esistente, si aprirà la scheda prodotto e avremo la possibilità di scansionare ( e abbiamo visto cosa succede ) oppure caricare quantità , questo carico lo gestiremo con una notifica che ci permette di aprire un selettore di numeri. Questa è un'opzione a mio avviso anche rapida ma si potrebbe usare una notifica con textbox e scrivere il numero ( fate attenzione però a cosa si scrive e aggiungete eventuali controlli su spazi aggiunti, lettere, etc) oppure aprire una scheda simile a quella di nuovo prodotto dove si può lasciare la possibilità per esempio sia di inserire i numeri nella textbox ma anche modificare la data, il nome , quindi editare anche eventuali modifiche. 


Nel mio caso alla pressione del button carica attivo la notifica con selettore che mi presenta dei numeri da 1 a 100 e si può anche scegliere il numero di partenza. L'evento scatenato dopo la selezione quindi when Number Picker Selection mi permette di salvare la quantità in una variabile e elegantemente 😂 far partire la notifica che chiede la conferma delle quantità per quel dato prodotto. Anche questa la gestiremo nel blocco when after choosing insieme alla altre scelte. 
Torniamo quindi alla scheda nuovo prodotto dove abbiamo due opzioni , caricare o tornare alla home, il pulsante home semplicemente attiva una notifica che avvisa della perdita dei dati in scrittura se si sceglie di tornare alla home. Indovinate dove gestiremo la risposta 😂 sì sempre li, ci arriviamo tra un attimo. 
Per il button CreaScheda dobbiamo sicuramente inserire un controllo perché non voglio salvare campi vuoti , quindi il nostro if then else insieme a ben tre condizioni che si devono verificare simultaneamente mi permette di inviare una notifica ponendo l'attenzione sulla compilazione dei dati. Incastrando insieme tre condizioni "or" andremo a dire che se almeno una di queste tre textbox è vuota dovrò visualizzare la notifica. E se invece i campi sono correttamente riempiti? Ma ovviamente partirà una bella notifica che ho composto inserendo ad hoc il barcode, il nome, le quantità e il prezzo, un bel riepilogo grazie all'uso di join e il tag <br> che mi permette di mandare a capo gli elementi ( in alcuni componenti funziona anche \n per andare a capo). 

Bene adesso possiamo andare al quartier generale dalla mia app , l'after choosing dove convogliano tutte le scelte fatte nei vari notifier sparsi nell'app, ovviamente per come ho gestito il tutto ma sappiamo bene che ci sono infinite possibilità di personalizzazione. 
Il blocco after choosing per la notifica a scelta semplice non permette di aggiungere un numero identificativo come altre notifiche ma l'unico elemento distintivo è choice, la scelta effettuata, la scritta presente sul pulsante premuto per capirci. Nel mio caso erano volutamente tutte diverse per aggirare questa limitazione quindi oltre a testi tutti diversi dovrò anche comporre un lungo if then else if per valutare tutti i casi.
  • Se la risposta è Carica, abbiamo selezionato le quantità e salvate poi nella variabile QuantitàProdotto, in questo caso andremo a sovrascrivere le quantità e la data del nuovo carico. Il blocco sarà set value for key path quindi barcode come primo elemento della lista e poi gli diciamo di andare nella stanza quantità per aggiornare. Nel mio caso la nuova quantità sarà da sommare a quella scritta nella label quindi non dovrò prelevare nessun dato dal mio database , se voi avete scelto una composizione differente probabilmente qui o in un'altra posizione dovrete prevedere il recupero dei dati. Il secondo blocco andrà ad aggiornare la data e non dimentichiamoci di salvare nel nostro TinyDb la variabile appena aggiornata così da non perdere dati call store value.Una notifica temporanea a video ci informa del carico avvenuto e andiamo a chiudere la scheda prodotto per tornare alla home ma prima di tutto dobbiamo ricalcolare il numero di prodotti a magazzino con la nostra super variabile locale ( eventualmente la puoi recuperare nel primo tutorial).
  • Se la risposta è Crea, il prodotto non esiste quindi andiamo ad aprire la scheda crea prodotto nascondendo la home e contemporaneamente impostiamo il codice a barre nella sua label e la data. Io ho scelto di non dare la possibilità di modifica ma volendo con poco codice è possibile attivare la modifica con click sulla label visto che il blocco click è attivo. Proverai ad introdurre la modifica? 
  • Se la risposta è Confermo, siamo al riepilogo del nuovo prodotto quindi dobbiamo creare il nostro record nel database. Visto che lavoriamo nel livello più esterno ci basterà un set value for key senza andare a spasso per i corridoi e le stanze, la chiave sarà il codice a barre e i valori saranno introdotti da un make a dictionary e le quattro coppi di valori key-value. Salviamo subito nel nostro TinyDb e andiamo ad aggiornare le label della home, questa volta dovremo impostare sia la quantità delle tipologie ( size of dictionary ) perché abbiamo un nuovo prodotto ma anche la quantità totale prodotti con la nostra sommatoria. Notifica veloce e settiamo correttamente la visualizzazione delle schermate.
  • Se la risposta è home, siamo nella scheda di creazione ma non ne abbiamo più voglia quindi usciamo senza salvare previa avviso. Settiamo la visualizzazione dei vari screen e facciamo partire la procedura pulisci campi, non l'ho dimentica, c'era anche al passaggio precedente. 
L'ho lasciata per ultima per spendere due parole, in questo caso probabilmente è sprecata anche se qualche blocco lo fa risparmiare, su un possibile utilizzo delle procedure. Un' operazione ricorrente all'interno dell'app, come potrebbe essere nel mio caso la pulizia dei campi testo, può far risparmiare molti blocchi di codice, velocizzare le operazioni e ordinare il codice.        
 



  

Spero di aver portato qualche spunto interessante e perché no aver contribuito alla creazione della vostra app magazzino. Mi farebbe molto piacere leggere di un vostro lavoro nato proprio da questo tutorial 😍 fatemi sapere cosa ne pensate o se avete altre proposte o spunti interessanti da sviluppare. 
Vi lascio anche il link per scaricare il file aia ma se lavorate in autonomia sicuramente diventerete molto più bravi di me 😂
Ma mi seguite su instagram, facebook ? E andiamo di like 👍

Link ai mie profili 👉 QUI
Link al download del file aia 👉 QUI


 Se hai apprezzato il mio lavoro offrimi 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?