e-bon
e-bon.ro
Referință

Stările pe care le vezi în bonuri, dispozitive și webhook-uri

Referință pentru fiecare valoare de stare pe care e-bon o întoarce în răspunsurile API, în plicurile de webhook și în portal — ce înseamnă și când o vezi.

Stările pe care le vezi în bonuri, dispozitive și webhook-uri

Când citești un răspuns API, primești un webhook sau te uiți la un ecran din portal, vei întâlni câmpuri de stare cu un set fix de valori. Această pagină listează fiecare valoare pe care o poți întâlni, ce înseamnă în termeni de business și când o setează e-bon.

Urmărește starea unei comenzi de bon

Când trimiți un bon sau orice altă comandă fiscală către un dispozitiv, e-bon atribuie o stare comenzii și o actualizează pe măsură ce dispozitivul o preia și răspunde.

ValoareCând o vezi
pendingComanda a fost acceptată de e-bon și așteaptă să fie livrată către dispozitiv.
sentComanda este pe drum către dispozitiv — fie pe conexiunea activă, fie printr-o notificare push.
completedDispozitivul a confirmat că a executat comanda cu succes. Stare finală.
failedDispozitivul a raportat o eroare sau livrarea a eșuat. Stare finală.
timeoutDispozitivul nu a răspuns în fereastra de siguranță (60 s pentru push, 180 s în total). Stare finală.

Ciclul de viață tipic:

   POST /api/v1/devices/:deviceId/commands
                  │
                  ▼
           ┌──────────┐
           │ pending  │
           └────┬─────┘
                │ pornește livrarea
                ▼
           ┌──────────┐    dispozitivul confirmă succesul    ┌────────────┐
           │   sent   │ ──────────────────────────────────▶  │ completed  │ (final)
           └────┬─────┘                                      └────────────┘
                │ dispozitivul întoarce o eroare
                ▼
           ┌──────────┐
           │  failed  │ (final)
           └──────────┘

   Așteptarea push expiră (60 s) sau supraveghetorul de siguranță preia
   o comandă rămasă în pending/sent peste 180 s:
                       ┌──────────┐
                       │ timeout  │ (final)
                       └──────────┘

Odată ce o comandă ajunge în completed, failed sau timeout, e-bon nu o mai modifică.

Unde apare:

  • Răspunsurile API la GET /api/v1/commands/:id și GET /api/v1/devices/:deviceId/commands/:id, pe câmpul status.
  • Plicurile de webhook command.completed, command.failed și command.timeout — vezi Evenimente de webhook.
  • Coloana Dispozitive → Activitate din portal.

Pentru fluxul complet de livrare (conexiune activă plus fallback prin push), vezi Fluxul de emitere a bonului. Pentru catalogul tipurilor de comandă, vezi Tipuri de comandă.

Citește starea de conectivitate a dispozitivului

Fiecare AMEF înregistrat în e-bon poartă o stare de conectivitate care reflectă dacă cloud-ul îl poate atinge în acest moment.

ValoareCând o vezi
onlineDispozitivul este conectat la e-bon și gata să primească comenzi.
offlineDispozitivul nu este conectat. Comenzile noi vor aștepta până când revine.

Dispozitivul comută între online și offline pe toată durata de viață a înregistrării sale; nu există stare finală.

Unde apare:

  • Răspunsurile API la GET /api/v1/devices și GET /api/v1/devices/:id, pe câmpul status.
  • Plicurile de webhook device.online și device.offline.
  • Ecusonul de stare de pe cardul dispozitivului din portal (roșu/gri).

Citește starea livrării unui webhook

Fiecare eveniment de webhook pe care e-bon îl trimite către endpoint-ul tău creează o înregistrare de livrare cu propria sa stare. Poți inspecta livrările pentru a-ți depana integrarea.

ValoareCând o vezi
pendingLivrarea este în așteptare sau între încercări de reluare. Nu s-a stabilit încă rezultatul final.
successEndpoint-ul tău a întors un răspuns 2xx la una dintre încercări. Stare finală.
failedToate cele cinci încercări de livrare au eșuat. Stare finală.

Ciclul de viață:

   dispatch
     │
     ▼
  ┌──────────┐  încercarea 1 reușește (2xx)   ┌──────────┐
  │ pending  │ ───────────────────────────▶   │ success  │ (final)
  └────┬─────┘                                └──────────┘
       │ încercarea eșuează
       ▼
  ┌──────────┐  o încercare ulterioară reușește   ┌──────────┐
  │ pending  │ ─────────────────────────────────▶ │ success  │ (final)
  │  reluări │
  └────┬─────┘
       │ încercarea 5 tot eșuează
       ▼
  ┌──────────┐
  │  failed  │ (final)
  └──────────┘

După un răspuns non-2xx livrarea rămâne pending și este reluată după programul [60 s, 5 min, 30 min, 2 h, 12 h]. Se fac maximum 5 încercări. Dacă un webhook acumulează 20 de livrări eșuate consecutiv, este dezactivat automat și un administrator trebuie să-l reactiveze din portal.

Unde apare:

  • Răspunsul API la GET /api/v1/webhooks/:id/deliveries, pe câmpul status.
  • Panoul Setări → Webhook-uri → livrări din portal.
  • Webhook-ul părinte expune și lastDeliveryStatus (success sau failed), actualizat la fiecare rezultat final.

Pentru contractul de reluări, regula de auto-dezactivare și cum se capturează corpul răspunsului, vezi Evenimente webhook.

Citește severitatea alertelor de dispozitiv

Când un dispozitiv este într-o stare care necesită atenție (hârtie aproape terminată, capac deschis, raport Z restant etc.), e-bon atașează o severitate fiecărei alerte.

ValoareCând o vezi
warningPentru condiții care nu blochează: hârtie puțină, memorie fiscală aproape plină, raport Z restant.
errorPentru condiții care blochează: capac deschis, dispozitiv deconectat.

Alertele sunt calculate la momentul citirii pornind de la starea curentă a dispozitivului — nu sunt stocate. Când un dispozitiv are mai multe alerte, cea mai mare severitate câștigă culoarea ecusonului din portal (eroarea bate avertismentul).

Unde apare:

  • Răspunsurile API la GET /api/v1/devices/alerts și GET /api/v1/devices/:id/alerts, pe câmpul severity al fiecărei alerte.
  • Culoarea ecusonului de pe cardul dispozitivului din portal.

Pentru regulile și pragurile din spatele fiecărui tip de alertă, vezi Alerte din portal.

Urmărește starea unui raport ANAF

Rapoartele Jurnal Electronic (JE) poartă o stare de acceptare ANAF care reflectă ce s-a întâmplat după ce administratorul a depus fișierul pe ANAF SPV.

ValoareCând o vezi
pendingRaportul a fost trimis pe ANAF SPV; administratorul nu a înregistrat încă un rezultat.
acceptedAdministratorul a marcat depunerea SPV ca acceptată de ANAF.
rejectedAdministratorul a marcat depunerea SPV ca respinsă de ANAF.
errorAdministratorul a marcat depunerea SPV ca având eroare (de ex. eroare de transport).
Acest câmp este condus de administrator. e-bon nu apelează direct ANAF SPV. Administratorul depune JE-ul pe portalul SPV și apoi înregistrează rezultatul pe raport apelând PATCH /api/v1/reports/je/:id cu noua valoare anafStatus. Valorile accepted, rejected și error pot fi resetate dacă administratorul trebuie să corecteze o intrare anterioară.
   JE generat (stare absentă sau 'pending')
                 │
                 ▼
       ┌──────────────────┐
       │     pending      │
       └────────┬─────────┘
                │ administratorul depune pe SPV, apoi face PATCH la raport:
                ├────────────▶ ┌──────────┐
                │              │ accepted │
                │              └──────────┘
                ├────────────▶ ┌──────────┐
                │              │ rejected │
                │              └──────────┘
                └────────────▶ ┌──────────┐
                               │  error   │
                               └──────────┘

Unde apare:

  • Răspunsurile API la GET /api/v1/reports/je și GET /api/v1/reports/je/:id, pe câmpul anafStatus.
  • Coloana Rapoarte → Stare ANAF din portal.

Pentru procesul de depunere SPV și fundalul legal, vezi Raportare ANAF.

Identifică tipurile de bon

Fiecare bon poartă un tip care indică natura sa legală. Tipul este setat la emiterea bonului și nu se mai schimbă.

ValoareCe înseamnă
saleUn bon fiscal de vânzare standard — cazul dominant.
refundUn bon de retur; întoarce numerar, dar nu are statutul legal de storno.
stornoUn bon de stornare fiscală (storno) care anulează legal o vânzare anterioară și face referire la cea originală.
Emiterea de storno este disponibilă astăzi doar din portal. Nu există un endpoint REST public pentru emiterea unui storno tipizat; acțiunea fiscală corespunzătoare trece prin comanda print_reversal_receipt (vezi Tipuri de comandă). Pentru definiția legală a stornoului, vezi glosarul.

Unde apare:

  • Răspunsurile API pentru resursele de bon, pe câmpul Receipt.type.
  • Coloana Bonuri → Tip din portal.

Identifică rolurile de utilizator

Fiecare utilizator aparține unei organizații cu unul din trei roluri. Schimbările de rol sunt aplicate direct de un administrator sau de proprietar — nu există un flux de tranziție.

ValoareCe permite
ownerControl administrativ complet: facturare, gestionarea membrilor, acțiuni ireversibile precum ștergerea organizației.
adminControl operațional complet, mai puțin acțiunile rezervate proprietarului: gestionează dispozitive, locații, membri, rapoarte, webhook-uri, chei API.
operatorUtilizare zilnică: emite bonuri, rulează rapoarte, vizualizează alerte. Nu poate modifica setările la nivel de organizație.

Unde apare:

  • Rolul apare ca un claim pe fiecare cerere autentificată și în câmpul User.role pe endpoint-urile de listare a membrilor și de utilizator curent.
  • Coloana Setări → Organizație → Membri din portal.

Pentru cum fiecare rol controlează API-ul și pentru matricea RBAC completă, vezi Autentificare și autorizare.

Identifică planurile de abonament

Fiecare organizație este pe unul din trei niveluri de abonament. Planul controlează plafoanele de dispozitive, debitul API și accesul la funcționalitățile plătite.

ValoareCe înseamnă
freeNivel implicit — număr de dispozitive plafonat, debit API plafonat, abonamente la webhook-uri limitate.
proNivel plătit — plafoane mai mari, fan-out complet de webhook-uri, retenție completă a rapoartelor.
enterpriseNivel negociat — plafoane personalizate, prioritizare la suport.

Unde apare:

  • Răspunsurile API, pe câmpul Organization.plan.
  • Setări → Abonament din portal.

Impunerea nivelului este aplicată la fiecare cerere API pentru a controla funcționalitățile plătite — vezi Autentificare și autorizare.

Unde mergi mai departe

  • API Comenzi — plicul de cerere și contractul de polling pentru comenzi de bon.
  • Evenimente de webhook — lista completă de plicuri, inclusiv command.completed, command.failed, command.timeout, device.online și device.offline.
  • Portal — Dispozitive — unde apar starea dispozitivului și severitățile de alertă în interfață.
  • Portal — Alerte — regulile de derivare din spatele fiecărei alerte.
  • Fluxul de emitere a bonului — ciclul complet al unei comenzi, inclusiv fallback-ul conexiune activă / push.
  • Evenimente webhook — ciclul complet de livrare și contractul de reluări.
  • Autentificare și autorizare — porțile pentru roluri și impunerea nivelului de abonament.
  • Raportare ANAF — fluxul stării ANAF condus de administrator.
  • Glosar — vocabularul fiscal românesc referit aici (storno, AMEF, raport Z etc.).
  • Tipuri de comandă — catalogul per tip care folosește ciclul de viață al stării unei comenzi.