1 bollino = 1 bottiglia, consumo automatico.
Stock bollini ADM per serie con range numerico sequenziale. Hook automatico al imbottigliamento decrementa serie attiva con FIFO selection. Alert reorder quando residui sotto soglia.
Cosa fa il modulo
I bollini Stato dell'Agenzia Dogane Monopoli (ADM) sono fascette numerate che ogni bottiglia di vino DOC/DOCG italiana deve riportare per legge. Per la cantina, significa tracciare ogni serie ricevuta dall'ADM: quanti hai, quanti hai consumato, quanti residui, con range numerico sequenziale.
In molte cantine questo tracciamento si fa ancora a mano sui quaderni. Errore facile, sanzione potenziale. Loogico Vino offre tracciamento integrato con il movimento di imbottigliamento: 1 bottiglia = 1 bollino consumato in automatico.
Anatomia di una serie bollini
vino_bollini_serie
├─ codice_serie (univoco) es. "S-2026-001"
├─ data_acquisto data ordine ADM
├─ range_da, range_al es. da 0000001 a 0050000 (50.000 bollini)
├─ quantita_totale calcolata: range_al - range_da + 1
├─ quantita_consumata incrementata ad ogni imbottigliamento
├─ quantita_residua calcolata: totale - consumata
├─ percentuale_consumata calcolata
├─ sotto_soglia_reorder flag boolean per alert UI
└─ attiva false quando esaurita
vino_bollini_consumi (append-only)
├─ serie_id (FK)
├─ movimento_id (FK al imbottigliamento)
├─ quantita_consumata
├─ range_da_consumato, range_al_consumato
├─ data_consumo
└─ operatore Prima — Quaderno cartaceo
- · Quaderno bollini in cantina, scrittura a mano
- · Range bollini consumati riportato a memoria dall'imbottigliatore
- · Errore di trascrizione frequente (sanzioni ADM)
- · Nessun alert prima dell'esaurimento serie
Con Loogico — DB tracciato real-time
- Stock per serie con range numerico sequenziale automatico
- Hook automatico al imbottigliamento: 1 bottiglia = 1 bollino consumato
- Range_da_consumato / range_al_consumato registrato per audit
- Alert reorder UI quando residui sotto soglia configurabile
FIFO + consumo automatico al imbottigliamento
Il VinoBolliniSimulatorService
applica FIFO selection tra serie attive: consuma prima la serie più vecchia,
passa alla successiva quando esaurita.
Imbottigliamento → consumo automatico bollini
Imbottigliamento
Movimento IMBOTTIGLIAMENTO 600L Sangiovese 2024
Calcolo bottiglie
600L / 0.75L = 800 bottiglie
FIFO consumo
Service consuma 800 bollini dalla serie attiva più vecchia
Audit log
Record append-only con range consumato + alert reorder se residui < soglia
// app/Services/Vino/VinoBolliniSimulatorService.php (estratto)
public function consuma(VinoMovimento $movimento, int $bottiglie): void
{
$consumati = 0;
while ($consumati < $bottiglie) {
// FIFO: serie attiva più vecchia
$serie = VinoBolliniSerie::where('attiva', true)
->where('quantita_residua', '>', 0)
->orderBy('data_acquisto')
->first();
if (!$serie) {
Log::warning('bollini.no_serie_attiva', ['movimento' => $movimento->id]);
return; // best-effort: non blocca movimento
}
$daConsumare = min($bottiglie - $consumati, $serie->quantita_residua);
$rangeDa = $serie->range_da + $serie->quantita_consumata;
$rangeAl = $rangeDa + $daConsumare - 1;
$serie->increment('quantita_consumata', $daConsumare);
if ($serie->quantita_residua <= 0) $serie->update(['attiva' => false]);
VinoBolliniConsumo::create([
'serie_id' => $serie->id,
'movimento_id' => $movimento->id,
'quantita_consumata' => $daConsumare,
'range_da_consumato' => $rangeDa,
'range_al_consumato' => $rangeAl,
]);
$consumati += $daConsumare;
}
} Modalità simulazione vs ADM live
Simulazione end-to-end (default)
Tracciamento end-to-end ma nessuna integrazione live con sistemi telematici ADM. Sufficiente per audit interno, controllo gestione, prevenzione errori.
Per cantine sotto la soglia ADM: simulazione è anche la modalità definitiva.
ADM live (gated)
Switch live richiede:
- • Registrazione e accreditamento ADM Dogane
- • Stock fisico bollini in cantina
- • Validazione amministrativa (~€500-1.500)
- • Switch flag
BOLLINI_MODE=live
Bollini Stato senza errori
Demo su tracciamento simulazione end-to-end.