Bonuri de producție
- Cui vorbim:* bucătar / manager / contabil — workflow-ul preparatelor.
Ce este un bon de producție
Un bon de producție este documentul intern care înregistrează că o stație (kitchen-hot, bar, etc.) se angajează să prepare un anumit produs pentru o comandă specifică. Un bon are propria viață (workflow), independent de comanda din care provine.
Comanda M3-1942 (1 masă) → 5 bonuri de producție:
bon #1 → kitchen-hot: Pizza ×1
bon #2 → kitchen-cold: Salată ×1
bon #3 → bar: Apă ×1, Mojito ×1
bon #4 → dessert: Tiramisu ×1
bon #5 → coffee: Cafea ×2
Fiecare bon are propriul lui workflow — pizza poate fi gata în 12 min, salata în 4, cafelele în 2, mojito în 5. Sistemul urmărește toate independent.
Workflow bon de producție
emis ──acceptă──▶ în-preparare ──gata──▶ așteaptă-livrare ──livrat──▶ închis
│ │ ▲
│ └──cancel-post-prep──▶ pierdere-înregistrată───────┘
│
└──refuz──▶ chelner-notificat (cu motiv)
Emis
Bonul tocmai a apărut pe tableta diviziei. Bucătarul îl vede, nu a făcut nimic încă.
În-preparare
Bucătarul a apăsat "Start". Sistemul:
- Rezervează ingredientele (decrementare lot pentru BOM).
- Pornește timer-ul (cât durează prepararea).
Așteaptă-livrare
Bucătarul a apăsat "Gata". Sistemul:
- Notifică chelnerul (alert vizual + sunet pe tableta lui).
- Marchează stocul ca "consumat" (decrementare definitivă).
- Bonul așteaptă pe pasă.
Livrat
Chelnerul a luat de la pasă, a dus la masă, a apăsat "Livrat" pe tableta lui.
Închis
Bonul e finalizat, intră în arhive (vizibil în rapoarte).
Acțiuni speciale
Refuz (înainte de Accept)
Bucătarul nu poate prepara — atinge Refuză + alege motiv:
- out-of-stock — s-a terminat un ingredient esențial.
- defect-utilaj — cuptorul nu funcționează.
- volum-prea-mare — nu pot prepara la timp (ora de vârf).
Sistemul:
- Notifică chelnerul cu mesajul.
- Bonul intră în starea "refuzat", masa este alertată.
Cancel post-prep (în-preparare → cancel)
Clientul a anulat după ce bucătarul a început deja. Sistemul:
- Cere aprobare manager_tură (confirmare: "Da, anulează, cu pierdere").
- Generează automat bon de consum cu pierdere pentru ingredientele deja folosite.
- Pierderea primește motiv "anulare client", contul SNC 714 (alte cheltuieli operaționale).
Re-fa (după Gata, dacă clientul nu e mulțumit)
Chelnerul atinge Re-fa pe bonul "Gata" — bucătarul preparară din nou. Sistemul:
- Generează automat un bon nou (bonul vechi rămâne în istoric).
- Înregistrează 2 consumuri din BOM.
- Pierderea (preparatul respins) primește motiv "respins client", cont SNC 714.
Timp în fiecare stadiu
Sistemul măsoară:
- Timp emis → acceptat (cât așteaptă bucătarul să răspundă)
- Timp acceptat → start (cât prepară)
- Timp start → gata (cât durează preparare efectivă)
- Timp gata → livrat (cât stă pe pasă)
În raportul de tură vezi mediile pe stație și pe produs. Util pentru:
- Identificare bottleneck (pizza durează 18 min vs. 12 min target).
- Alocare personal (kitchen-hot e supra-încărcat la prânz, kitchen-cold sub-utilizat).
- Negociere cu client ("livrare în 25 min" — știi că e realist).
Multi-bucătar pe același bon
Pentru bonuri mari (ex. comandă banchet, 12 pizzas) — managerul poate împărți bonul:
- Bucătarul A preia 4 pizzas.
- Bucătarul B preia 4 pizzas.
- Bucătarul C preia 4 pizzas.
Sistemul tracker fiecare sub-bon. La "Gata" toate, bonul-părinte intră în "așteaptă-livrare".
Cooking time per produs
Fiecare produs are un cooking time estimat (configurabil în meniul tău). Sistemul folosește aceste valori pentru:
- A afișa "ETA gata: 19:58" pe tableta chelnerului.
- A alerta clientul (dacă ai integrat notificări la masă) când urmează să vină.
- A măsura performanța (real time vs. target).
Audit
Fiecare tranziție pe bon (acceptă, start, gata, livrat, refuz, cancel, re-fa) e logată cu user + timestamp. Toate sunt vizibile în istoricul comenzii părinte. Inalterabil.
Identificatorii bonurilor au formatul K-IDNO-YYYYMMDDhhmmss-NNNNN (K = Kitchen) — unici, sortabili cronologic. La fiecare receptie pe ecranul bucătarului se afișează chelnerul și bucătarul care a acceptat-o, sub formă de chip-uri colorate lângă numele bonului.
Pre-prep BOM direct pe linia din bon
Pe tableta bucătarului, în lista "🍽️ De pregătit", fiecare linie de fel de mâncare are două butoane:
- 📊 Estimare — calculează rapid câte cicluri de rețetă se pot rula cu stocul curent al ingredientelor; afișează blocker-ul (ingredientul cu cel mai mic stoc) dacă există.
- 🔄 Rulează BOM × N — generează un ciclu suplimentar de pregătire pentru acel fel (e.g. pre-prep aluat pizza pentru următoarele 30 minute), aplică automat consumul ingredientelor în stoc.
Ciclurile generate apăsând acest buton rămân atașate de bonul curent + de comanda părinte, vizibile în secțiunea "🔄 Cicluri BOM lansate din acest bon" (jos pe ecran).
Util pentru:
- Pre-prep când bucătarul vede că aceeași comandă va veni repetat în următoarele minute.
- Pregătire batch în orele de vârf, fără să închidă bonul curent.
Auto-cycle pentru ingrediente lipsă (cu preview)
Butonul ⚡ Auto-cycle ingrediente (sus pe ecranul bonului) detectează automat ingredientele insuficiente pentru bonul curent + creează cicluri de producție pentru cele care au rețetă proprie (e.g. mozzarella tăiată e "produsă" din mozzarella blocuri).
- Workflow în 2 pași (anti fat-finger):
1. Apăsarea butonului afișează întâi un dialog de previzualizare* cu lista exactă: pentru fiecare ingredient blocat, vezi:
- Per ciclu: cantitatea din rețeta felului care îl consumă (ex.
1.0 per pizza) - Total necesar pentru bon: cantitatea agregată (
per cycle × număr porții comandate) - Stoc actual: ce ai disponibil
- Motiv blocare (dacă e cazul):
recipe.auto=false (ingredientul nu se poate fabrica intern) etc.
2. Doar după ce confirmi cu "✅ Creează N ciclu(uri)" se lansează efectiv ciclurile.
Asta protejează de cazul "1 click → 10 cicluri silențios" pe un bon încărcat — bucătarul vede exact ce se va întâmpla înainte de a confirma.
Vizibilitate cicluri lansate
Pe ecranul fiecărui bon, jos, secțiunea "🔄 Cicluri BOM lansate din acest bon" listează:
- Ciclurile auto (din butonul ⚡ Auto-cycle) — marcate
auto - Ciclurile manuale (din butonul 🔄 Rulează BOM × N per linie) — marcate
manual
Coloane: nume ciclu, MPN output, stadiu, data + ora generării, buton 📂 Deschide care navighează direct la cardul ciclului în depozitul de invoice-uri.
Pe ecranul comenzii părinte (Order View) există o secțiune analogă "🔄 Cicluri BOM rulate pentru această comandă" care agregă TOATE ciclurile linkate la comandă — direct sau prin bonurile de producție copil. Așa managerul vede întreg lanțul de pregătire pentru o masă, fără să navigheze între bonuri individuale.
Cazuri speciale
Bon "rezervat" pentru ora viitoare
Pentru comenzi viitoare (ex. clientul rezervă o masă pentru ora 21:00 și pre-comandă), bonurile se generează cu prepare-at: 20:50 — apar pe tableta bucătarului doar la 20:50, nu mai devreme.
Bon "în paralel" cu altele
Pentru o comandă cu 5 feluri, dacă vrea clientul să vină "toate odată", chelnerul marchează Sincronizat — bonurile rămân în "așteaptă-livrare" până TOATE sunt gata, apoi se livrează simultan.
Următorul pas
→ Bonuri de consum + pierderi sau Încasare fiscală.