Cantina: inventario, alert stock, scanner barcode
Gestione lotti + posizioni fisiche + scanner mobile + alert proattivi.
6 min lettura
Modelli concettuali
- Cellar = ristorante / locale fisico (Marco ha 1 cellar)
- Location = posizione fisica dentro un cellar (scaffale, frigo, riserva)
- Inventory = bottiglie con quantità + costo medio + lot tracking
Setup iniziale
/app/cellar/restaurants → "Osteria del Vino" (se non già creato)
/app/cellar/locations → aggiungi posizioni che hai fisicamente:
- "Cantina principale" (riserva, vini importanti)
- "Scaffale dietro bar" (servizio diretto)
- "Frigo bianchi" (temperatura controllata)
- "Carrello servizio" (vini in vetrina per il cliente)
Aggiungere bottiglie
/app/cellar/import → wizard step:
vino,produttore,annata,quantita,posizione,costo Barolo Cannubi,Marchesi di Barolo,2019,12,Cantina principale,28.50 Soave,Pieropan,2022,24,Frigo bianchi,9.80
### Modo 2 — Carico manuale
[/app/cellar/movements](/app/cellar/movements) → "+ Nuovo carico":
- Vino dal catalogo (auto-complete)
- Quantità
- Costo unitario
- Posizione
- Note (fornitore, fattura, ...)
### Modo 3 — Scanner barcode
[/app/cellar/scanner](/app/cellar/scanner) → modalità "Carico" → punta barcode
- 1 scan = 1 bottiglia caricata
- Beep + vibrazione conferma
- Auto-detect produttore + annata da catalogo
## Movimenti
Ogni transazione genera un **Movement**:
- ⬆️ **Carico**: acquisto, regalo, ritorno (aumenta stock)
- ⬇️ **Scarico**: vendita, degustazione, rottura, danno (diminuisce)
- ↔️ **Spostamento**: cambio posizione (no impact stock totale)
- 📝 **Aggiustamento**: conta inventario manuale (regola discrepanze)
## Alert stock minimo
### Configurazione
Per ogni posizione → **stockAlertThreshold** (default 3 bottiglie).
Esempio: "Frigo bianchi" → soglia 6 (alta rotazione)
### Triggering
Quando un vino scende sotto soglia:
- 🔴 Banner alert in [/app/cellar/alerts](/app/cellar/alerts)
- 📧 Email a OWNER + MANAGER (configurabile in [/app/settings/notifications](/app/settings/notifications))
- 📱 Push notification in-app (campanella header)
### Cosa fare
Click alert → vedi:
- Vino + quantità residua
- Suppliers possibili (con prezzo + termini)
- Bottone "+ Nuovo carico" precompilato
## Inventario conta
[/app/cellar/count](/app/cellar/count) — wizard 4-step per inventario fisico:
1. Seleziona posizione (o tutte)
2. Scanner barcode o conta manuale
3. Confronto sistema vs reale (diff evidenziati)
4. Approva → genera Aggiustamento per discrepanze
> 💡 Consigliamo conta mensile o trimestrale per accuratezza.
## Suppliers
[/app/cellar/suppliers](/app/cellar/suppliers) → rubrica fornitori con:
- Anagrafica (nome, ragione sociale, P.IVA, contatti)
- Termini commerciali (sconto, pagamento, minimo ordine)
- Catalogo riservato (prezzi privati negoziati)
- Storia ordini
## Scanner barcode mobile
### Requisiti
- Smartphone iOS 17+ o Android Chrome 113+
- Permesso fotocamera browser
- Bottiglia con UPC-A o EAN-13 (la maggior parte)
### Flusso
1. Mobile → [/app/cellar/scanner](/app/cellar/scanner)
2. Scegli modalità: Carico / Scarico / Spostamento / Cerca
3. Punta barcode
4. Beep + vibrazione = scan riuscito
5. Conferma con tap
### Fallback
Se browser senza BarcodeDetector API: input manuale codice. Funziona ovunque.
## Best practice
✅ Conta mensile o quando hai un sentore discrepanza
✅ Alert threshold realistico (no 0, no 10 per ogni vino)
✅ Note movimenti sempre (es. "degustazione staff" vs "rottura")
❌ Non delegare conta a chi non conosce il catalogoVedi anche
- Importa vini da CSV (Enoweb / Excel / Google Sheets)— 4 min lettura
- Dashboard vendite e analytics— 4 min lettura