Quando una PMI campana del settore agroalimentare mi ha contattato, gestiva oltre 200 ordini al mese tra Excel, WhatsApp e telefono. Una crescita progressiva del fatturato aveva trasformato un sistema artigianale che "fino a ieri funzionava" in un collo di bottiglia operativo. In questo caso studio racconto come ho costruito un gestionale ordini su misura in Yii2, quali scelte tecniche ho fatto e che impatto ha avuto a sei mesi dalla messa in produzione (i dettagli identificativi sono stati anonimizzati).

Il punto di partenza: ordini gestiti a mano

L'azienda — una decina di dipendenti, vendita all'ingrosso a HORECA e GDO regionale in Campania — riceveva ordini per:

  • Telefono per i clienti storici (40% degli ordini)
  • WhatsApp per i venditori sul campo (35%)
  • Email per i clienti piu strutturati (20%)
  • Fax (si, ancora) per pochi clienti irriducibili (5%)

Ogni ordine veniva trascritto su un Excel condiviso, da cui partivano poi la preparazione in magazzino, il documento di trasporto e la fattura emessa con un software contabile separato. Risultato: tempi di lavorazione lunghi, errori frequenti di trascrizione, ordini "persi" o duplicati, conflitti tra venditori e amministrazione.

I requisiti raccolti in fase di analisi

Una settimana di analisi sul campo — sedendoci accanto a chi gestiva gli ordini — ha permesso di estrarre i requisiti veri, non quelli ipotizzati a tavolino:

  • Inserimento ordini multi-canale: i venditori sul campo dovevano poter inserire ordini da telefono, in pochi tap, anche senza connessione
  • Catalogo con prezzi differenziati: ogni cliente ha listini propri, sconti volumetrici, condizioni di pagamento personalizzate
  • Stato avanzamento ordine: in ricezione, in preparazione, pronto, in consegna, consegnato, fatturato
  • Stampa DDT integrata: niente piu doppia digitazione tra ordine e bolla di accompagnamento
  • Integrazione con il sistema di fatturazione elettronica esistente: l'azienda non voleva cambiare commercialista
  • Reporting commerciale: vendite per cliente, per zona, per agente, per categoria di prodotto
  • Permessi granulari: il venditore vede solo i propri clienti; l'amministrazione vede tutto; il magazzino vede solo gli ordini in preparazione

Le scelte tecniche

Stack: Yii2 + MySQL

Ho scelto Yii2 Framework per la rapidita di sviluppo di gestionali aziendali, la maturita dell'ecosistema (RBAC integrato, ActiveRecord robusto, GridView potente per le viste tabellari, REST API senza dipendenze esterne) e la mia lunga esperienza con questo framework. MySQL per la persistenza, con un'architettura dati pensata per lo storico (gli ordini non si cancellano mai — si archiviano).

RBAC per i permessi granulari

Il sistema RBAC nativo di Yii2 ha gestito senza forzature i ruoli previsti: venditore, amministrazione, magazzino, direzione, admin. Ogni ruolo ha permessi specifici a livello di azione e di scope (es. il venditore puo "creare ordine" ma solo per i clienti assegnati a lui).

API REST per l'app mobile dei venditori

Per i venditori sul campo ho realizzato una progressive web app (PWA) che funziona anche offline: l'ordine si compone in mobilita, viene salvato in locale e sincronizzato al primo collegamento. L'integrazione si appoggia a un layer di API REST sviluppato in Yii2 con autenticazione JWT.

Workflow ordini con macchina a stati

Lo stato dell'ordine non e un campo libero: e una macchina a stati con transizioni esplicite e regole di chi puo cambiare cosa. Un ordine in "preparazione" non puo tornare a "in ricezione" — puo solo passare a "pronto" o "annullato", e solo certi ruoli possono farlo. Questo ha eliminato la categoria piu fastidiosa di errori operativi (ordini "rimbalzati" tra stati incoerenti).

Le integrazioni

  • Software di fatturazione elettronica esistente: integrazione tramite export XML in formato compatibile, senza forzare il cambio del commercialista
  • Magazzino: aggiornamento giacenze automatico ad ogni ordine confermato; allarmi sotto-scorta via email
  • Stampante etichette in magazzino: stampa automatica della bolla di prelievo all'avanzamento di stato
  • Banca dati clienti contabile: import iniziale via CSV; sincronizzazione successiva manuale (su esplicita richiesta del cliente — preferiva un controllo umano)

Il rilascio: una sola feature per volta

Non ho fatto big bang. Il rilascio si e svolto in 4 fasi mensili:

  • Mese 1: anagrafica clienti, catalogo prodotti, inserimento ordine base (amministrazione)
  • Mese 2: app venditori, sincronizzazione, listini personalizzati
  • Mese 3: workflow di stato, integrazione magazzino, stampa DDT
  • Mese 4: integrazione fatturazione, reporting, dashboard direzione

Ogni rilascio e stato seguito da una settimana di affiancamento in azienda. Gli Excel storici hanno continuato a girare in parallelo per i primi due mesi, come rete di sicurezza. E un approccio in linea con quanto raccontato in come digitalizzare i processi senza bloccare il lavoro: funziona perche elimina il rischio del "tutto o niente".

I risultati a sei mesi

A sei mesi dal go-live completo, gli effetti misurabili sono questi:

  • -60% sul tempo medio di evasione ordine (da una media di 28 ore a 11)
  • -80% sugli errori di prezzo in fattura (i listini non vengono piu battuti a mano)
  • +25% di ordini gestibili a parita di personale (la direzione sta valutando se aprire un'altra zona)
  • Zero ordini persi o duplicati nei primi 6 mesi (prima era 3-5 al mese)
  • Visibilita reale sulle vendite: la direzione vede in dashboard l'andamento per cliente, agente e zona

Il ROI dell'investimento, conteggiando solo il risparmio sul tempo amministrativo e la riduzione degli errori di fatturazione, e stato stimato in circa 11 mesi. Il cliente lo ha definito "il salto operativo piu importante degli ultimi 10 anni".

Lezioni apprese applicabili ad altre PMI

  • L'analisi sul campo batte qualunque brief sulla carta: una settimana seduti accanto a chi lavora ha eliminato il 90% delle ipotesi sbagliate
  • Rilascio graduale: dividere in fasi mensili riduce il rischio percepito dal cliente e permette aggiustamenti veri sul progetto
  • Permessi granulari fin dal giorno 1: ricostruirli dopo e tre volte piu costoso che farli bene all'inizio
  • Workflow di stato espliciti: in un gestionale, il 70% dei bug funzionali nasce da transizioni di stato implicite o vaghe
  • Storico, non cancellazione: un gestionale aziendale non cancella mai dati — archivia. Il cliente puo sempre risalire a chi ha fatto cosa e quando

MameTech: gestionali aziendali su misura

Sviluppo gestionali aziendali su misura in PHP e Yii2 per PMI di tutta Italia: ordini, fatturazione, magazzino, CRM, gestione interventi tecnici. Lavoro per fasi mensili, con codice di proprieta del cliente e supporto continuativo. Se hai un processo aziendale che oggi vive su Excel, WhatsApp e tante buone intenzioni, posso aiutarti a farlo crescere senza farlo esplodere. Contattami per una prima call gratuita di analisi.

Continua a leggere

Hai un progetto in mente?

Raccontami cosa ti serve: ti propongo la soluzione web più adatta alle tue esigenze.

Contattami I miei servizi