Collegare il sito e-commerce al gestionale del negozio

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.

Richiesta e obiettivo

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.

Soluzione

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:

  • esportare i dati dei prodotti dal gestionale e salvarli in un file di testo in formato .csv;
  • caricare il file, attraverso un accesso FTP diretto, in una directory sul server in cui risiede la piattaforma;
  • non appena il file di esportazione del gestionale viene caricato, far eseguire la procedura che abbiamo realizzato; essa legge il file e, per ogni riga di prodotto al suo interno, carica (se non presente nel database) o aggiorna (se già presente nel database) il prodotto stesso;
  • avvenuto l'aggiornamento del database, inviare in modo automatico una email all'operatore di Buono Market allegando un report con le variazioni eseguite perché possa avere sempre sott'occhio la situazione e prevenire subito eventuali anomalie o problematiche.

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:

  • il supermercato è chiuso e quindi le operazioni di esportazione dei prodotti dal gestionale non interferiscono con le attività nel negozio, così da evitare eventuali problemi di lentezza derivanti;
  • solitamente l’operatore di Buono Market esegue gli aggiornamenti sui prezzi dei prodotti entro le ore 10.00.

Oltre a questa procedura di allineamento dei prodotti con il gestionale sono state realizzate parallelamente altre due procedure a supporto della principale:

  1. una procedura che esegue un backup della tabella dei prodotti del database, in modo da avere sempre a disposizione l'ultima versione in caso di eventuale recovery post importazione (anche in questo caso il file viene salvato sul server);
  2. una procedura che esegue la cancellazione dei file di esportazione del gestionale e dei backup del database per avere solo i file relativi ai 7 giorni precedenti.

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.