Il sito e-commerce è uno strumento complementare agli strumenti offline che vengono utilizzati da un’azienda per la vendita dei propri prodotti.
Affinché questo strumento porti i migliori risultati possibili, una delle attività da svolgere, che l'azienda deve maggiormente tenere in considerazione, è il continuo aggiornamento dei prodotti, sia per quanto riguarda la loro disponibilità sia per quanto riguarda i prezzi.
È controproducente, infatti, avere prodotti in vendita sul sito e-commerce, ma non averli disponibili in magazzino e non poterli quindi spedire in tempi brevi al cliente, che ha effettuato l’ordine sul sito. Analogamente, non incentiva l’acquisto da parte dell’utente un prodotto che ha un prezzo che non corrisponde all'attuale prezzo di mercato, al netto di sconti o promozioni varie.
Per queste ragioni, è necessario mantenere costantemente aggiornato il proprio catalogo di prodotti sul sito.
L'operazione di aggiornamento può essere fatta in modo manuale, da parte di un operatore dell’azienda, oppure in modo automatico. La prima, generalmente, viene eseguita quando il numero di prodotti totali in vendita sul sito è basso e non c'è un magazzino strutturato da gestire e allineare; la seconda modalità viene scelta quando il numero di prodotti in vendita è elevato e/o c'è la necessità di interfacciarsi con il gestionale del negozio/magazzino per allineare le disponibilità e i prezzi dei prodotti a disposizione.
Uno degli ultimi progetti di questo genere che abbiamo realizzato è Buono Store, la piattaforma per la spesa online di Buono Market, un supermercato di Cormons (Gorizia) che offre la possibilità di fare la spesa online con consegna a domicilio o, in alternativa, ritiro autonomo presso il negozio.
Il progetto prevedeva, oltre allo sviluppo della piattaforma stessa, anche la realizzazione di una procedura automatica per l’aggiornamento dei prodotti che si interfacciasse con il gestionale interno del supermercato di modo da avere online e nel punto vendita gli stessi prodotti, con gli stessi prezzi e le stesse offerte attive.
Per la piattaforma buonostore.it abbiamo implementato un'interfaccia personalizzata che importa e aggiorna i prodotti all'interno del sito e-commerce dopo che questi sono stati esportati e messi a disposizione dal gestionale del negozio.
Per prima cosa ci siamo interfacciati con il team che ha sviluppato il gestionale utilizzato da Buono Market per capire se questa procedura era realizzabile e come era possibile far dialogare i due ambienti.
A seguito dell’analisi tecnica svolta, si è convenuto di:
Completata la fase iniziale di test e monitoraggio, durante la quale la procedura veniva lanciata manualmente da noi per verificarne il corretto funzionamento, si è deciso di programmarla, ovvero di metterla in esecuzione a intervalli regolari di tempo, senza alcun intervento da parte nostra.
Per far questo abbiamo attivato un processo Cron sul server. I processi Cron consentono di automatizzare determinati comandi o script sul sito. È possibile impostare un comando o uno script da eseguire in un’ora specifica di ogni giorno, settimana e così via.
A seguito di un confronto, sia con il referente di Buono Market sia con il team che ha sviluppato il gestionale, si è deciso di impostare il Cron ogni giorno alle ore 14.00 per due motivi principali:
Oltre a questa procedura di allineamento dei prodotti con il gestionale sono state realizzate parallelamente altre due procedure a supporto della principale:
Anche queste due procedure sono state automatizzate con un Cron. Quella di backup del database viene eseguita ogni giorno prima dell'avvio della procedura di aggiornamento del database, mentre la seconda, riguardante la cancellazione dei file sul server, è stata impostata una volta a settimana. Entrambe inviano un'email di report al termine.
L’approccio appena descritto è una soluzione studiata ad hoc per questo progetto, ma non è l’unica che può essere realizzata per far dialogare due ambienti.
Un approccio di collegamento tra gestionale e sito web utilizzando le API sarà oggetto di un prossimo articolo.