Încasare fiscală

Conceptul

Î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).

Workflow standard

1. Selecție Comandă

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).

2. Pre-populare coș

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 MDL

Liniile cu gift / on-the-house apar separat ca "ofertă" cu preț 0 — vizibile pe bon dar nu contribuie la total.

3. Alegerea metodei de plată

Casierul atinge Plătește → alege:

Plus: opțional + e-Factura dacă clientul cere factură pe firmă (introduce IDNO).

4. Emitere bon fiscal

Confirmă → sistemul:

  1. Trimite la casa de marcat fiscală certificată (Intelect-Soft sau echivalent) — bonul se imprimă fizic. - Dacă chelnerul a adăugat note personalizate pe comandă (vezi Comenzi pe masă — Note personalizate), header-ul apare în partea de sus a bonului tipărit, footer-ul în partea de jos. - Limitări tehnice: lungimea depinde de modelul de casă de marcat (de obicei 32 caractere/linie); textele lungi se vor trunchia automat la limita imprimantei.
  2. Loghează la SFS (jurnal electronic obligatoriu).
  3. Dacă s-a cerut e-Factura B2B — fluxul SFS-cu-IDNO suplimentar (vezi e-Factura B2B). Notele personalizate (dacă există) se atașează la câmpul Notes oficial al facturii.
  4. Marchează Comanda M3-1942 → plătită.
  5. Eliberează masa 3 în harta sălii.
  6. Actualizează raportul de tură.

Toate aceste acțiuni se întâmplă atomic — fie reușesc toate, fie nu se schimbă nimic. Nu există situația "bonul fiscal s-a emis dar comanda a rămas deschisă".
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).

5. Confirmare SFS

În fundal, sistemul așteaptă confirmarea SFS pentru bonul fiscal. La confirmare:

Dacă SFS dă eroare (rar — probleme de rețea, etc.):

Gratuități / oferte

Liniile marcate ca gift (oferite de manager) au comportament special la încasare:

Alternativ, configurabil: liniile gift pot fi filtrate complet din bonul fiscal (nu apar deloc) — preferință de fiecare local.

Tip / bacșiș

Sistemul suportă două abordări:

A. Tip ca linie pe bonul fiscal Adăugat ca produs "tip" cu preț = suma. Apare pe bon, contribuie la total. Fiscalizat normal.

B. Tip cash separat Casierul ia cash de la client + tip-ul cash separat (nu intră pe bon). Sistemul logează tip-ul în registrul de tip-uri (alocat chelnerului care a deservit masa).

Vezi Raport de tură pentru calculul tip-ului per chelner.

Plată parțială / split bill — ⚙️ la cerere

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.

Anulare bon emis (storno)

Dacă a apărut o eroare după emitere:

  1. Manager_tură atinge Storno pe Comanda plătită.
  2. Selectează tipul: - Storno total — anulează tot bonul. - Storno parțial — anulează doar anumite linii.
  3. Sistemul: - Sistemul ghidează generarea bonului de storno SFS (selectare bon original, motiv, sume); casierul execută acțiunile efective pe casa de marcat fiscală conform procedurii SFS — flux semi-asistat. Audit complet logat la noi. - Restituie cash-ul / cere refund pe card (manual, depinde de banca). - Reactivează Comanda în "deschisă" sau "anulată" (după caz). - Stocul revine la valoarea anterioară.

Performanță

Î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ă.

Audit

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ă.

Tur vizual — POS Fiscal

Aplicația POS Fiscal are două stări principale în care poate fi găsită de casier:

Stare A — Picker Comenzi (fără Comandă pre-selectată)

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.
Picker Comenzi pentru încasare

Stare B — Coș pre-populat (deschis din HoReCa Order View)

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.
Coș pre-populat cu 3 items

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.

Coș cu prețuri mascate (privacy pentru docs)

Componente vizuale

Cart items highlight

Header STOCK/PRICE context

Keypad numeric

Buton submit-pos highlighted

Configurare pre-bill via SharedRefs

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.

Colecția 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.

Comportament la default (toate ON)

Cu toate ref-urile la default, pre-bill-ul are:

Comportament la minimal (toate 4 gates OFF)

Cu unit-net-price.enabled, vat.enabled, subtotal-net.enabled, vat-total.enabled toate setate false:

Cum modifici

  1. Deschide SharedRefs Manager din taskbar.
  2. Deschide colecția 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).
  3. Salvează. Următorul Pre-bill deschis va folosi noua valoare.
  4. Pentru rollback: audit-log-ul colecției afișează versiunile anterioare — copy-paste valoarea veche într-o versiune nouă.

E2E live — trigger + captura print preview

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ă).
Pas 1 — Order View cu buton Pre-bill vizibil
Pas 2 — Cursor pe butonul 🖨 Pre-bill
Pas 3 — Print preview în tab nou (custom header text + nume companie + IDNO blur-uite; PRE-BILL warning, meta Comandă/POS/Masa/Chelner/Deschisă/Imprimată, tabel Order lines, TOTAL DE PLATĂ, note explicativ)

Următorul pas

Roluri HoReCa sau Raport de tură.