Mikro Farm vende mangimi, medicinali per animali, sementi, pesticidi e fertilizzanti — al kilo, al sacco, al container. Il titolare aveva provato ogni POS pronto all'uso: nessuno separava il magazzino dal punto vendita, nessuno aggiornava i prezzi al cambio fornitore, e nessuno mostrava al cliente cosa c'era sullo scaffale prima di guidare un'ora per scoprirlo. Allora lo abbiamo costruito noi.
Prima di scrivere una sola riga di codice, il titolare ci ha raccontato lo stesso sabato cinque volte. Questi sono i punti dolenti che tornavano sempre.
Il negozio è lontano da dove vivono la maggior parte degli agricoltori. Quando il prodotto non c'è, il viaggio è sprecato — e con lui la fiducia.
I clienti arrivano in un negozio affollato senza un piano — si fermano davanti agli scaffali a leggere le etichette mentre dieci persone aspettano in fila. A rimetterci è il tempo dello staff.
Magazzino e punto vendita sono fisicamente separati, ma ogni POS pronto all'uso li somma insieme. Così lo schermo dice 40 sacchi, lo scaffale ne ha 3 e il deposito 37 — e nessuno lo sa finché un cliente non chiede.
Ogni venerdì qualcuno conta. A mano. A occhio. Gli errori saltano fuori due settimane dopo, quando un ordine arriva incompleto rispetto al reale fabbisogno.
Non si compra un sacco alla volta. Un singolo ordine fornitore è un container di mangime. Ordinarne troppo poco — esaurimento scorte per un mese. Troppo — capitale bloccato, scadenze che si avvicinano su medicinali e sementi.
La prima cosa che abbiamo costruito non è per lo staff. È un catalogo pubblico, orientato alla formazione, che il cliente apre prima di salire in macchina. Ogni prodotto mostra lo stock in tempo reale per sede, note su dosaggi per medicinali e sementi, e un pulsante "prenota / ordina" così il sacco è riservato quando entra.
Il problema dello scaffale si risolve da solo: i clienti che hanno già scelto da casa non devono leggere etichette in coda. Il problema dell'ora di viaggio si risolve da solo: se è rosso, non partono.
Ogni articolo ha un record principale ma due righe di stock — una per il magazzino, una per il punto vendita. Anche il HPP è tracciato per sede, così un trasferimento porta il costo con sé e i report sul margine restano corretti.
Le vendite scalano prima da Toko. Se Toko si esaurisce, il sistema attinge da Gudang senza chiedere conferma — ma registra il prelievo, così il calcolo del riordino sa che è lo scaffale a dover essere riempito, non solo il deposito.
Gli avvisi di scorta bassa girano per sede, non in aggregato. La scheda "Cosa comprare" fa lo stesso lavoro che il venerdì sera si faceva a mano — ma non sbaglia mai il conteggio e mostra gli articoli per urgenza, non per ordine alfabetico.
Le categorie con scadenza tracciata (medicinali, sementi, pesticidi) ricevono un secondo controllo: tutto ciò che scade entro 60 giorni appare nella stessa scheda, così viene venduto o spostato prima di diventare inutilizzabile.
| Item | Loc | On hand | Min | Action |
|---|---|---|---|---|
| Pakan Ayam Petelur 50kg | Toko | 3 | 10 | Pindah |
| Pupuk Urea 50kg | Gudang | 82 | 120 | Reorder |
| Vit. B-Complex 1L (exp 09/26) | Toko | 2 | 4 | Sell first |
| Decis 100ml | Gudang | 26 | 50 | Reorder |
Per chi vende un sacco alla volta, "riordina quando è basso" va bene. Per Mikro Farm la domanda è quanti sacchi riempiono un container da 20 piedi senza superare sei mesi di domanda. Quindi il riordino non è un pulsante — è un calcolatore che il titolare può modificare.
Il sistema aggrega le ultime 12 settimane di vendite, moltiplica per il lead time del fornitore e arrotonda il risultato al MOQ del fornitore e alla linea di riempimento container successiva. Il titolare vede il calcolo, non solo la risposta, e può aggiustarlo prima di inviare.
Ogni ricezione di merce ricalcola il HPP medio ponderato per sede. Se il nuovo HPP supera la banda di markup impostata dal titolare, il prezzo al dettaglio si aggiorna in automatico e viene registrato — sia sul POS che sul catalogo clienti.
Il titolare vede un unico feed di ogni variazione: cosa è cambiato, perché, e di quanto. Basta "aspetta, perché il margine è calato questo mese".
Non siamo partiti da zero. Lo scheletro del POS era il nostro template Floural — vendite, spese, presenze, pagamenti. Il lavoro su misura era tutto sull'inventario: separarlo, costificarlo, renderlo visibile.
Modello inventario su carta prima di scrivere una riga di codice. Mappate tutte le categorie, le unità (kg / sak / litro / pz), i MOQ dei fornitori, ogni SKU con scadenza tracciata.
Costruita la junction inventory_items + inventory_stock (un record principale, qtà e HPP per sede). Costo medio ponderato agganciato a ogni ricezione. Il flusso di trasferimento ("Pindah ke Toko") consegnato nella stessa settimana.
Le vendite ora scalano prima da Toko, poi da Gudang, e salvano lo snapshot HPP sulla riga ordine. Avvisi di scorta bassa e scheda "Cosa comprare" alimentati da join in tempo reale.
PWA pubblica che legge la stessa tabella stock su cui scrive il POS. Calcolatore di riordino con arrotondamento al riempimento container. Ticker dei prezzi agganciato agli eventi di ricezione.
Per una settimana intera, ogni conteggio è stato fatto sia sul sistema che sugli appunti. Riconciliazione finale. Discrepanze → bug → corretti → consegna.
Nessun numero mese-su-mese fabbricato — il sistema è nuovo. Questi sono i flussi di lavoro usciti dalla carta e dalla testa del titolare.
Gudang e Toko hanno le loro qtà e HPP. Le vendite scalano in modo pulito. I trasferimenti portano il costo con sé.
Ogni ricezione ricalcola l'HPP e riprezza il dettaglio secondo la banda di markup del titolare. Il catalogo si aggiorna all'istante.
Una sola scheda, ordinata per urgenza, inclusi gli articoli in scadenza imminente. Sostituisce il giro del venerdì con gli appunti.
Il catalogo pubblico legge la stessa tabella su cui scrive il POS. Nessun staging, nessun ritardo di cache.
I suggerimenti di riordino si arrotondano al MOQ e al riempimento container. Il titolare vede il calcolo, può aggiustarlo, poi invia.
Sostituisce ogni tentativo fallito con i POS del Play Store. Posseduto interamente. Gira su un piccolo VPS.
Gira sul tablet Android dello staff alla cassa. Offline-first tramite uno store di sincronizzazione in coda — la cassa continua a registrare le vendite quando il wi-fi va via, e le riproduce al ritorno. Aggiornamenti OTA per distribuire fix solo JS senza reinstallare.
Un file per dominio, routing ?action=, PDO puro. Autenticazione JWT. Audit log su ogni mutazione per risalire a qualsiasi variazione di stock, alla persona e al momento.
App browser pubblica. Legge la stessa tabella inventory_stock su cui scrive il POS — nessuna sincronizzazione separata. Orientata alla formazione: ogni prodotto porta una nota "perché questo" per il contesto di cross-sell.
Una riga inventory_items per SKU. Due righe inventory_stock (Gudang, Toko) con chiave (item_id, location). Ogni evento di ricezione attiva il HPP medio ponderato e un eventuale aggiornamento del prezzo al dettaglio.
Una call gratuita per capire il perimetro. Le diciamo la soluzione più economica che funziona davvero.