În HoReCa, încasarea este un act distinct — separat de comandă, separat de bonurile de producție. Casierul are propriul ecran (pos-fiscal) cu un mod special: Încasează comandă.
Acest mod îi permite să încarce o Comandă "pending bill" și să emită bonul fiscal către SFS într-un singur pas, păstrând toate detaliile (TVA per cotă, metoda de plată, opțional e-Factura B2B dacă cere clientul).
Casierul deschide pos-fiscal → atinge Încasează comandă. Pe ecran apare lista comenzilor "pending bill" pe POS-ul lui:
┌──────────────────────────────────────────────────┐
│ Comenzi de încasat — POS-sala │
├──────────────────────────────────────────────────┤
│ Masa 3 — Maria — 380 MDL — vechime: 4 min │
│ Masa 7 — Ion — 245 MDL — vechime: 1 min │
│ Masa 12 — Maria — 580 MDL — vechime: 12 min ⚠ │
└──────────────────────────────────────────────────┘Se afișează: masa, chelnerul, total acumulat, vechime de când s-a cerut nota (cu alertă dacă > 10 min).
Casierul atinge masa 3 → coșul se pre-populează cu toate liniile non-anulate, non-gratuite din comanda M3-1942:
1× Pizza Margherita 85.00 MDL
1× Salată Greacă 45.00 MDL
1× Apă plată 0.5L 10.00 MDL
1× Tiramisu 65.00 MDL
2× Cafea espresso 50.00 MDL
1× Mojito 125.00 MDL
─────────────────────────────────────
Total: 380.00 MDL
TVA inclus (8% cota HoReCa): 28.15 MDLLiniile cu gift / on-the-house apar separat ca "ofertă" cu preț 0 — vizibile pe bon dar nu contribuie la total.
Casierul atinge Plătește → alege:
Plus: opțional + e-Factura dacă clientul cere factură pe firmă (introduce IDNO).
Confirmă → sistemul:
folder:invoice (stage updated-stock / ready / done). Nu există un „raport de tură" live care să fie actualizat pas cu pas — jurnalul de tură se generează retrospectiv, când managerul apasă Închide tura în tab-ul Rapoarte al aplicației HoReCa (vezi Raport de tură).Pașii 1-5 se comit atomic — fie reușesc toți, fie nu se schimbă nimic. Nu există situația „bonul fiscal s-a emis dar comanda a rămas deschisă". Înregistrarea folder:invoice (pasul 6) e o consecință naturală a pasului 4 și devine sursa pe care aggregator-ul retrospectiv de tură (HorecaShiftJournal::generate) o filtrează la Închide tura — un bon anulat/reversat înainte de close nu apare în jurnal, pentru că nu mai are stage-ul eligibil.
Bonul fiscal emis primește un identificator E-IDNO-YYYYMMDDhhmmss-NNNNN (E = e-Factura / Emit) la momentul emisiei locale. La sincronizarea cu SFS, numele se actualizează automat cu seria + numărul oficial alocat (ex. E-EBH000134642), iar numele inițial rămâne ca audit secundar vizibil dimmed în lista de invoice-uri (pentru trasabilitatea draft → semnat).
În fundal, sistemul așteaptă confirmarea SFS pentru bonul fiscal. La confirmare:
Dacă SFS dă eroare (rar — probleme de rețea, etc.):
Liniile marcate ca gift (oferite de manager) au comportament special la încasare:
degustare_client (mapabil contabil la SNC 712; ⚙️ split per-cont în raportul de tură activabil la cerere — vezi Bonuri de consum).Alternativ, configurabil: liniile gift pot fi filtrate complet din bonul fiscal (nu apar deloc) — preferință de fiecare local.
Sistemul suportă două abordări:
gross_total × procent, procentul fiind ales de manager în UI (parametru front-end, nu valoare stocată). Este un helper managerial, nu un registru inalterabil de bacșișuri.Vezi Raport de tură — Waiter tipping split pentru cardul on-demand de estimare per chelner. Nu apare în snapshot-ul „Închide tura" — este o vedere separată în același tab Rapoarte, calculată la deschidere din action:horeca:reports:waiter-totals.
Scenariile de split bill (împărțire total în X părți egale sau selectare de linii pentru cumpărători diferiți) nu sunt astăzi feature default în POS-Fiscal. Sunt ⚙️ activabile la cerere prin customizare — implementarea necesită ajustări în fluxul de emit-fiscal pentru a genera bonuri fiscale separate legal (fiecare cumpărător primește bonul lui) sau unic împărțit pe metode plată.
Cotare individuală după clarificarea variantei preferate.
Dacă a apărut o eroare după emitere:
Întreg fluxul "atinge Încasează comandă → bonul fiscal e imprimat" durează 3-5 secunde în condiții normale. La trafic mare (50-100 încasări / oră), performanța rămâne stabilă.
Fiecare emitere este logată cu casier + timestamp + comanda părinte + total + metodă plată. Inalterabil. La audit / suspectare, vezi exact ce a făcut casierul în orice secundă.
Aplicația POS Fiscal are două stări principale în care poate fi găsită de casier:
Când casierul deschide POS Fiscal direct din taskbar, apare o listă cu toate Comenzile deschise sau pending-bill din toate POS-urile locației, sortate cronologic. Casierul selectează Comanda pe care o încasează. Butonul 📁 Înapoi (continuă fără comandă) intră în modul liber (vânzare adhoc fără Comandă în urmă). Notă: comenzile deja plătite (paid) sau anulate (cancelled) NU apar în picker — au ajuns în stagiu terminal și nu pot fi re-emise pe această cale.
Când Comanda ajunge din HoReCa (prin butonul Open in POS-Fiscal), coșul e deja populat cu liniile Comandei. Casierul poate ajusta cantitatea, aplică o reducere, sau trece direct la încasare.
Notă: captura de mai jos folosește un helper de mascare vizuală (blur) aplicat doar pentru materialele publice de documentație — permite prezentarea layout-ului cu date reale fără expunere valori de bani. Este un tooling intern pentru capturi, NU o feature disponibilă utilizatorului final în POS-Fiscal.




.).* Este butonul cheie — la total ≠ 0 declanșează fluxul de plată (deschide selector metodă plată, apoi emit-fiscal). La total 0 nu face nimic.
Documentul Pre-bill (butonul din Order View HoReCa) e configurabil prin colecția horeca-print din SharedRefs Manager. Fiecare rând/coloană/element vizual e gated de o variabilă separată — permit stripping down la doar informația necesară pentru client (menu = preț cu TVA inclus; net + VAT split apare doar dacă auditul intern îl cere).
Vezi captura Pre-bill din Scenariu 1 pentru referință vizuală a documentului default.
horeca-print — ref-uri disponibile| Ref ID | Tip | Default | Ce controlează |
|---|---|---|---|
pre-bill.short-code.enabled | bool | true | Când true, header-ul afișează short-code (K-1, K-2, ...) în loc de folder-id lung. Reset zilnic per POS. |
pre-bill.short-code.prefix | string | "K-" | Prefix pentru short-code. Ex: "M-" produce M-1, M-2. |
pre-bill.header.text | string | "" | Text custom deasupra numelui companiei (ex: sloganul brand-ului, adresa localului). Gol = nu apare linia. |
pre-bill.header.font-size-px | int (8-48) | 16 | Mărimea fontului pentru header-ul custom. Clamped server-side la interval [8, 48]. |
pre-bill.company.font-size-px | int (8-48) | 14 | Mărimea fontului pentru numele companiei. |
pre-bill.waiter.suffix | string | "" | Suffix după numele chelnerului. Ex: "(operator)" → afișează "Ana (operator)". |
pre-bill.footer.show-folder-id | bool | true | Când true, footer-ul include folder-id-ul complet pentru reconciliere internă. false = doar pentru client-facing. |
pre-bill.column.unit-net-price.enabled | bool | true | Coloana "Preț unit. (fără TVA)". Dezactivează dacă clientul nu are nevoie de detaliul net (menu-ul afișează preț cu TVA). |
pre-bill.column.vat.enabled | bool | true | Coloana "TVA %" per linie. Dezactivează pentru bill minimalist. |
pre-bill.footer.subtotal-net.enabled | bool | true | Rândul "Subtotal fără TVA (MDL)" din footer-ul tabelei. |
pre-bill.footer.vat-total.enabled | bool | true | Rândul "TVA total (MDL)" din footer-ul tabelei. |
Cu toate ref-urile la default, pre-bill-ul are:
Cu unit-net-price.enabled, vat.enabled, subtotal-net.enabled, vat-total.enabled toate setate false:
horeca-print. Dacă lipsește un ref, apasă + New variable, alege collection: horeca-print, ref_id: pre-bill.<varianta>, ctx_type: global (sau pos:<pos-id> pentru per-POS), value: <valoare> (bool true/false, sau string, sau număr).Butonul 🖨 Pre-bill din Order View (sus, lângă butonul Reload) deschide print preview-ul într-un tab nou de browser (poate necesita permisiune pop-up prima dată).


pre-bill.column.unit-net-price.enabled = false + pre-bill.column.vat.enabled = false + footer echivalent.pre-bill.header.text. Numele companiei "SGAPPS LABS SRL" + IDNO vin din maintainer profile (setat la onboarding).→ Roluri HoReCa sau Raport de tură.