Comenzi pe masă (Comanda)

Conceptul de "comandă deschisă"

În HoReCa, o comandă la o masă trăiește mai mult timp — clientul comandă în mai multe valuri, peste 30-90 de minute. Sistemul nostru modelează acest comportament cu Comanda — o entitate care:

Stările unei Comenzi

deschisă ──cere-nota──▶ așteaptă-încasare ──încasare──▶ plătită ──confirmare-SFS──▶ închisă
   │                          │
   │                          └──manager-deblocheaza──▶ deschisă (cu motiv)
   │
   └──anulare──▶ anulată

Deschisă Chelnerul a creat-o, poate adăuga / șterge / modifica linii. Linii deja trimise la bucătărie nu mai pot fi șterse de aici (necesită cancel post-prep, vezi Scenarii).

Așteaptă-încasare ("Cere nota") Chelnerul a apăsat "Cere nota". Comanda nu mai acceptă rânduri noi. Verificare automată: toate bonurile de producție sunt în starea "livrat"? Dacă nu, alertă pentru chelner.

Plătită Casierul a emis bonul fiscal. Comanda își consumă lifecycle-ul, masa devine liberă în harta sălii.

Închisă SFS a confirmat oficial bonul. Comanda este finalizată, intră în arhive pentru rapoarte.

Anulată Chelnerul / managerul a anulat comanda (clientul a plecat fără să comande, eroare). Liniile deja trimise la bucătărie generează automat bonuri de pierdere cu motiv "anulare client" (vezi Pierderi).

Cum se deschide o comandă

  1. Chelnerul atinge + Masa nouă pe tabletă.
  2. Alege: - Zona (Sala 1, Sala 2, Terasă, VIP) - Masa (din lista mese disponibile la zona aleasă) - Capacitate (numărul de persoane — opțional, pentru analiză)
  3. Comanda primește identificator unic (ex. "M3-1942" = Masa 3, deschisă la 19:42).
  4. Apare în harta sălii cu culoare verde ("ocupată, deschisă").

Adăugare rânduri

  1. Chelnerul deschide o comandă existentă (din harta sălii sau din lista comenzilor active).
  2. Caută produs (search rapid pe denumire, sau scanare QR de pe meniul-tabletă).
  3. Atinge produsul → apare cu cantitatea 1.
  4. Modifică cantitatea, sau adaugă observație (ex.: "fără ceapă", "extra parmesan").
  5. Repetă pentru fiecare rând nou.
  6. Atinge Trimite → rândurile pleacă către divizii.
💡 Important: rândurile sunt draft până la "Trimite". Chelnerul poate corecta orice până atunci. După Trimite, rândurile devin bonuri de producție și nu mai pot fi modificate (doar cancel cu motiv).

Modificare / ștergere rând

Acțiuni per linie (Order View)

Fiecare linie din Order View are 4 butoane de acțiune contextuale (vizibile doar când Comanda e open și SharedRefs feature flags sunt on):

Order View — 2 linii cu action buttons Cant./Preț/gift/Șterge

Dialog ✏️ Reeditează cantitate cu preview TOTAL NOU (CU TVA) în timp real
Câmpul afișează cantitatea curentă (1 buc), acceptă noua valoare, iar TOTAL NOU se recalculează live cu TVA inclus.

Dialog ✏️ Reeditează preț linie cu 2 câmpuri interconectate: PREȚ UNIT. FĂRĂ TVA + PREȚ UNIT. CU TVA (celălalt se calculează automat pe baza ratei TVA)
Cele 2 câmpuri (net / gross) sunt interconectate — modifici oricare, celălalt se recalculează pe baza ratei TVA a produsului. Câmpul gross (verde) e cel afișat clientului.

Dialog Șterge linie cu confirmare: "Șterge linia din comandă? (Dacă a fost trimisă la bucătărie, se revocă din bon)"
Notă: ștergerea unei linii deja trimise la bucătărie revocă linia din bon doar dacă bonul e la stagiu wip sau awaiting-mpns. La stagii superioare (accepted/preparing/ready), sistemul rejectează cu mesaj actionable — trebuie folosită procedura de Cancel bon (manager, cu Loss).

Multi-val (caz tipic)

19:42  Masa 3 deschisă
19:44  Val 1: Pizza + Salată + Apă        → 3 bonuri (kitchen-hot, kitchen-cold, bar)
20:02  Val 2: Tiramisu + 2 cafele          → 2 bonuri (dessert, bar)
20:17  Val 3: Mojito                       → 1 bon (bar)
20:35  Cere nota                           → check că toate cele 6 bonuri sunt "delivered"
20:36  Plată: card 380 MDL                 → bon fiscal unic pentru toată comanda

Note personalizate pe comandă (header / footer bon)

Chelnerul poate adăuga două câmpuri de text personalizate pe o comandă deschisă:

Fiecare câmp acceptă până la 1024 caractere. Editabile doar cât comanda e în starea deschisă sau așteaptă-încasare — odată plătită, notele se blochează pentru a păstra trasabilitatea audit a bonului printat.
Notele propagă automat:

Anularea unei comenzi cu motiv

Când o comandă se anulează (în orice stare valabilă), sistemul afișează un dialog cu:

Toate anulările intră în audit cu motivul + nota înregistrate. Statisticile de tură agregă anulările pe motiv → managerul vede tendințe ("90% din anulări săptămâna asta sunt client_plecat — investighează timpul de servire").

Cicluri BOM rulate pentru comandă

Pe ecranul comenzii, secțiunea "🔄 Cicluri BOM rulate pentru această comandă" centralizează toate ciclurile de producție (auto sau manuale) generate pentru bonurile copil ale comenzii. Util pentru manager să vadă efortul total din spatele unei mese:

Linie cu linie: nume ciclu, MPN produs, stadiu, ora generării, buton de navigare la cardul ciclului în depozit.

Hartă mese

Vezi într-un ecran:

Cu un click pe orice masă → vezi comanda activă, lista chelnerului, total acumulat.

Operatori multipli pe aceeași comandă

Două chelnerițe pot lucra pe aceeași comandă (ex.: una preia comanda dimineața, cealaltă servește seara — schimbarea schimbului). Sistemul logează cine a adăugat ce rând. La închidere, raportul de tură împarte tipurile (vezi Rapoarte tură).

Audit complet

Fiecare acțiune pe Comandă (deschidere, adăugare rând, anulare, cere nota, deblocare, încasare) este logată cu timestamp precizie de secundă, user, context. Istoricul nu se poate edita / șterge.
Identificatorul comenzii are formatul H-IDNO-YYYYMMDDhhmmss-NNNNN (H = HoReCa) — unic, sortabil cronologic, vizibil în toate listele și rapoartele.

Navigare bidirecțională

Pe ecranul comenzii deschise, chelnerul poate naviga direct la oricare dintre bonurile copil:

Reciproc, pe ecranul oricărui bon copil (de producție sau de pierdere), butonul 📂 Deschide comanda părinte navighează înapoi la Comanda — util pentru bucătar / casier când vor să vadă tot contextul.

Următorul pas

Divizii bucătărie & bar sau Bonuri de producție.