Operațiuni Dispozitive

Această secțiune este referința completă a operațiunilor de dispozitiv care pot fi executate prin API-ul HTTP (POST /devices/operation), prin API-ul WebSocket (acțiunea 203) sau - pentru un subset - prin fișiere INP. Toate transporturile execută exact aceeași logică internă; diferă doar transportul.

Structura Cererii

Fiecare cerere de operațiune are aceeași structură de nivel superior:

{
  "device_id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",   // UUID-ul unui dispozitiv configurat
  "operation": {
    "type": "nume_operatiune",                            // tipul operațiunii, în snake_case
    // ... câmpuri specifice operațiunii
  }
}
  • device_id este UUID-ul de configurare al dispozitivului (câmpul config.id returnat de GET /devices/fiscal / GET /devices/pos). Nu este numărul de serie hardware.
  • Operațiunile fiscale necesită UUID-ul unui dispozitiv fiscal; operațiunile POS necesită UUID-ul unui terminal POS. Trimiterea unei operațiuni POS către un dispozitiv fiscal (sau invers) returnează eroarea 400. Dispozitivele hibride (case de marcat cu POS integrat) apar în ambele liste cu același UUID și acceptă ambele familii de operațiuni.
  • Toate sumele monetare sunt numere întregi în bani (cenți), dacă nu se specifică altfel explicit.
  • Un Idempotency-Key opțional (header HTTP) / idempotency_id (WebSocket) face operațiunea idempotentă: retrimiterile cu aceeași cheie returnează rezultatul unicei execuții.

Structura Răspunsului

La succes, fiecare operațiune returnează JSON cu "status": 0, un mesaj msg lizibil, plus câmpuri specifice operațiunii (documentate mai jos, per operațiune). La eșec, răspunsul este:

{
  "status": 500,                          // cod de eroare specific aplicației (întreg pozitiv)
  "error": "Lipsă hârtie în imprimantă.", // mesaj lizibil (în română)
  "receipt": "..."                        // OPȚIONAL: doar la unele erori POS (ex: chitanța unei tranzacții refuzate)
}

Vezi Coduri Eroare pentru lista completă. Notă: codurile de eroare sunt numere întregi pozitive.

Operațiuni Dispozitive Fiscale

Descriere: Tipărește un bon fiscal cu produse, text liber, plăți și, opțional, datele cumpărătorului. Este cea mai complexă și cea mai importantă operațiune din sistem.

Parametri:

ParametruTipObligatoriuDescriere
linesArray<ReceiptLine>DaLiniile bonului, în ordinea de tipărire (produse, text liber, subtotal). Este necesară cel puțin o linie item, cu excepția bonului anulat.
paymentsArray<PaymentLine>DaLiniile de plată. Suma lor trebuie să fie exact egală cu totalul bonului (vezi Validare mai jos). Poate fi [] doar când close_action este "void".
buyerBuyerInfoNuIdentificarea cumpărătorului pentru bonuri cu codul fiscal al clientului (CUI/CIF).
receipt_discountDiscountNuDiscount sau majorare la nivel de bon, aplicată totalului.
flagsReceiptFlagsNuIndicatori de comportament. Implicit: {"is_invoice": false, "skip_background_sync": false}.
close_actionStringDa"close" (fiscalizare normală) sau "void" (bonul este deschis, apoi anulat integral - nu se fiscalizează nimic).
Obiectul ReceiptLine

O linie de bon este un obiect etichetat - type selectează varianta:

// Linie de produs (vânzare)
{
  "type": "item",
  "description": "Nume Produs",      // "name" este acceptat ca alias
  "quantity_thousandths": 1000,      // 1000 = 1.000 bucăți (3 zecimale implicite)
  "unit_price_cents": 1500,          // 1500 = 15.00; valorile negative sunt acceptate pentru corecții
  "vat": "19%",                      // vezi „Valori TVA" mai jos
  "discount": {                      // OPȚIONAL: discount/majorare la nivel de produs
    "kind": "percent",
    "basis_points": 1000,            // 1000 = 10.00%
    "is_surcharge": false
  },
  "um": "buc",                       // OPȚIONAL: unitate de măsură; gol/lipsă devine "buc"
  "department": 3                    // OPȚIONAL: cod departament (1-99)
}

// Linie de text liber
{
  "type": "text",
  "text": "Text de tipărit"
}

// Linie de subtotal
{
  "type": "subtotal",
  "discount": {                      // OPȚIONAL: discount/majorare aplicată subtotalului curent
    "kind": "percent",
    "basis_points": 1000,
    "is_surcharge": false
  }
}
Valori TVA (câmpul vat)

Câmpul vat este un șir de caractere care acceptă următoarele forme:

FormăExempluSemnificație
Procent"19%", "9.5%"Driverul mapează procentul la grupa de TVA a dispozitivului cu exact acea cotă. Dacă nicio grupă activă nu corespunde, operațiunea eșuează cu o eroare descriptivă. "0%" preferă grupa E.
Literă"A""H"Grupa de TVA a dispozitivului, direct. Trebuie să fie activă pe dispozitiv (verificată față de cotele citite la conectare), cu excepția "D" care este întotdeauna acceptată. Literele mici sunt respinse.
"scutit""scutit"Scutit de TVA: identic cu "0%" - mapează la o grupă de 0%, preferând E.
"neimpozabil""neimpozabil"Neimpozabil: mapează la o grupă de 0%, preferând o grupă diferită de E și folosind E doar dacă este singura grupă de 0%.
Obiectul PaymentLine
{
  "method": "cash",                  // vezi tabelul metodelor de plată
  "amount_cents": 1500
}

Metode de plată (method):

CodDenumire
cashNumerar
cardCard
creditCredit
tichete_masaTichete de masă
tichete_valoriceTichete valorice
voucherVoucher
plata_modernaPlată modernă
cashbackPlată cu card + avans în numerar. Suma plătită trebuie să depășească totalul bonului; diferența este înmânată clientului ca numerar.
alte_metodeAlte metode
Obiectul BuyerInfo
{
  "vat_number": "RO12345678"         // codul fiscal al clientului (CUI/CIF)
}
Obiectul Discount

Folosit pentru discounturi/majorări la nivel de produs, de subtotal și de bon. kind selectează varianta:

// Procentual
{
  "kind": "percent",
  "basis_points": 1000,              // 1000 = 10.00%
  "is_surcharge": false              // false = discount, true = majorare
}

// Sumă absolută
{
  "kind": "absolute",
  "amount_cents": 500,               // 500 = 5.00 (întotdeauna pozitiv)
  "is_surcharge": false
}
Obiectul ReceiptFlags
IndicatorTipImplicitDescriere
is_invoicebooleanfalseDeschide bonul ca bon de tip factură (cu codul fiscal al cumpărătorului).
skip_background_syncbooleanfalseSare peste sincronizarea internă a vânzărilor de după tipărire, pentru acest bon.
Validare și Preprocesare

Înainte ca ceva să fie trimis către dispozitiv, driverul validează și normalizează cererea. O validare eșuată returnează eroarea 400 cu un mesaj descriptiv și nu se tipărește nimic.

  • Diacriticele sunt eliminate din denumirile produselor, unitățile de măsură și liniile de text liber.
  • Produsele cu preț zero (unit_price_cents = 0) sunt convertite în note de text liber (ex: 2 buc PUNGA 0 lei), deoarece casele de marcat resping liniile de vânzare cu valoare zero.
  • Bonul trebuie să conțină cel puțin o linie de produs (cu excepția bonului anulat).
  • Totalul bonului trebuie să fie strict pozitiv după toate discounturile (cu excepția bonului anulat).
  • Suma plăților trebuie să fie exact egală cu totalul bonului. Excepție: când există o plată cashback, suma trebuie să fie mai mare sau egală cu totalul. Totalul unei linii se calculează ca quantity_thousandths × unit_price_cents / 1000, rotunjit „half away from zero".
  • Este permisă o singură linie de subtotal cu discount per bon, iar un discount de subtotal nu poate fi combinat cu receipt_discount.
  • TVA-ul fiecărui produs este validat față de cotele active pe dispozitiv (vezi Valori TVA mai sus).
  • Când close_action este "void", toate validările de vânzare de mai sus sunt sărite: bonul este deschis și apoi anulat, iar plățile nu sunt înregistrate.

Răspuns:

{
  "status": 0,
  "msg": "Receipt printed",
  "slip_number": 123,                // numărul bonului fiscal
  "z_report_number": 45,             // numărul raportului Z de care aparține bonul
  "fiscal_receipt_count": 1050,      // contorul de bonuri fiscale al dispozitivului
  "bon_id": "1234...32cifre"         // bon-ID-ul din codul QR (doar Datecs, când e activat); null altfel
}

Trimitere automată card către POS: Dacă este activată în configurarea dispozitivului fiscal (auto_send_card_to_pos + linked_pos_device_id), suma plăților card și cashback este trimisă mai întâi ca vânzare către terminalul POS asociat. Dacă tranzacția POS eșuează, bonul fiscal nu este tipărit și se returnează eroarea POS.

Verificarea conexiunii: operațiunea eșuează imediat cu eroarea 1004 dacă dispozitivul fiscal nu este în starea Connected.

Descriere: Tipărește un bon nefiscal (text liber) pe dispozitivul fiscal. Util pentru documente proforma, bonuri de comandă sau orice informație care nu trebuie fiscalizată.

Parametri:

ParametruTipObligatoriuDescriere
linesArray<NonFiscalLine>DaLiniile de text de tipărit.
Obiectul NonFiscalLine
// Linie de text simplă
{
  "type": "text",
  "text": "Text de tipărit"
}

// Linie de text cu formatare (respectată pe dispozitivele Datecs; celelalte tipăresc text simplu)
{
  "type": "text",
  "text": "Text formatat",
  "formatting": {
    "bold": true,
    "italic": false,
    "double_height": true,
    "underline": false,
    "alignment": "center",           // "left" (implicit), "center", "right"
    "condensed": false
  }
}

Răspuns: aceeași formă ca la print_receipt; câmpurile numerice se referă la contoare nefiscale și pot fi 0, în funcție de dispozitiv:

{
  "status": 0,
  "msg": "Receipt printed",
  "slip_number": 0,
  "z_report_number": 0,
  "fiscal_receipt_count": 0
  "bon_id": null
}

Descriere: Tipărește un raport X (totaluri zilnice, fără închiderea zilei fiscale).

Parametri: niciunul (în afară de type).

Răspuns:

{
  "status": 0,
  "msg": "Report printed",
  "report_number": 45,               // contorul raportului
  "grand_total_sell": 123456,        // totalul general al zilei, în bani
  "payment_totals": [                // totaluri per metodă de plată (poate fi gol dacă dispozitivul
    { "method": "cash", "amount": 100000 },   //   nu le-a putut raporta; sume în bani)
    { "method": "card", "amount": 23456 }
  ],
  "vat_totals": [                    // totaluri per grupă de TVA; doar grupele cu amount > 0
    { "letter": "A", "value": 1900, "amount": 100000 }  // value = cota în sutimi de procent (basis points)
  ],
  "full_text": null                  // textul complet al raportului; populat doar la rapoartele Z pe Datecs
}

Note:

  • payment_totals[].method folosește aceleași coduri ca plățile bonului (cash, card, …).
  • Granularitatea payment_totals depinde de dispozitiv: unele dispozitive au mai puține registre fizice de plată și grupează mai multe metode împreună.
  • Un array payment_totals/vat_totals gol înseamnă că dispozitivul nu a putut furniza detalierea - nu înseamnă vânzări zero.

Descriere: Tipărește un raport Z (închiderea fiscală de zi). Resetează contoarele zilnice.

Parametri: niciunul.

Răspuns: identic ca formă cu print_x (vezi mai sus). full_text conține textul complet al raportului tipărit pe dispozitivele Datecs, null în rest.

Descriere: Tipărește raportul pe departamente (vânzările zilnice grupate pe departamente), fără a închide ziua fiscală și fără a reseta vreun contor.

Parametri: niciunul.

Răspuns: raportul se tipărește doar pe hârtie - nu se returnează totaluri:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

Note:

  • Suportat pe dispozitivele Datecs, Daisy, Tremol și Custom. Dispozitivele al căror protocol nu are un raport pe departamente returnează eroarea 1015 (operațiune nesuportată).
  • În interfața cu fișiere INP, același raport se declanșează cu Z,1,______,_,__;3; (legacy/FPrint) sau D^ (simplu/modern).

deposit_cash

Descriere: Înregistrează o introducere de numerar (serviciu intrare) în casa de marcat.

Parametri:

ParametruTipObligatoriuDescriere
amountintegerDaSuma introdusă, în bani. Trebuie să fie > 0 (0 returnează eroarea 400).

Răspuns:

{
  "status": 0,
  "msg": "Cash operation successful",
  "total_cash_drawer": 1250.75       // totalul de numerar din sertar DUPĂ operațiune,
}                                     //   în lei, ca număr zecimal - NU în bani

withdraw_cash

Descriere: Înregistrează o retragere de numerar (serviciu ieșire) din casa de marcat.

Parametri:

ParametruTipObligatoriuDescriere
amountintegerDaSuma retrasă, în bani. Trebuie să fie > 0. Retragerea unei sume mai mari decât există în sertar returnează eroarea 536.

Răspuns: aceeași formă ca la deposit_cash (total_cash_drawer în lei, zecimal).

chime

Descriere: Declanșează semnalul acustic (buzzer-ul) al dispozitivului fiscal. Pe dispozitivele fără buzzer controlabil se tipărește în schimb o notă nefiscală scurtă, astfel încât acțiunea să fie totuși observabilă.

Parametri: niciunul.

Răspuns:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

open_drawer

Descriere: Deschide sertarul de bani conectat la dispozitivul fiscal.

Parametri:

ParametruTipObligatoriuDescriere
pulse_duration_ms number Nu Durata impulsului de deschidere, în milisecunde. Când lipsește, se aplică valoarea implicită a driverului (Datecs: 200 ms; Daisy: ultima valoare configurată pe dispozitiv). Dispozitivele Tremol ignoră complet acest parametru. Dispozitivele fără control de sertar returnează eroarea 1015.

Răspuns:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

anaf_export

Descriere: Exportă fișierele de date fiscale pentru raportarea ANAF într-un folder local.

Parametri:

ParametruTipObligatoriuDescriere
rangeAnafExportRangeDaInterval de date sau interval de numere Z (neetichetat - tipurile câmpurilor decid, vezi mai jos).
destination_pathstringDaCalea unde se scrie exportul, pe mașina pe care rulează driverul.
Obiectul AnafExportRange
// Interval de date (șiruri, AAAA-LL-ZZ)
{ "start": "2023-12-01", "end": "2023-12-31" }

// Interval de numere Z (numere întregi)
{ "start": 1, "end": 10 }

Răspuns:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

anaf_status

Descriere: Citește starea de sincronizare ANAF de la dispozitivul fiscal.

Parametri: niciunul.

Răspuns: câmpul data este un șir JSON codificat care conține una dintre:

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "\"Success\""
}

// data se decodifică într-una dintre:
"Success"                                                    // ultima sincronizare OK
{ "Failed": { "error_code": -3, "error_message": "..." } }   // ultima sincronizare a eșuat
"Unknown"                                                    // nesuportat / necunoscut

Descriere: Încarcă o imagine de logo în dispozitivul fiscal, pentru a fi tipărită pe bonuri. Driverul convertește imaginea în formatul nativ al dispozitivului; folosiți get_logo_dimensions pentru a afla dimensiunea optimă.

Parametri:

ParametruTipObligatoriuDescriere
image_datastringDaImagine codificată Base64 (PNG, JPG, …).

Răspuns:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

get_logo_dimensions

Descriere: Returnează dimensiunile logo-ului (în pixeli) suportate de dispozitiv.

Parametri: niciunul.

Răspuns: data este un șir JSON codificat:

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "{\"width\":576,\"height\":128}"
}

fiscal_memory_report

Descriere: Tipărește un raport de memorie fiscală pentru un interval de date sau de numere Z, pe imprimanta dispozitivului.

Parametri:

ParametruTipObligatoriuDescriere
rangeFiscalRangeDaInterval de date sau de numere Z (neetichetat, aceeași convenție ca la anaf_export).
report_typestringDa"short" sau "detailed".
Obiectul FiscalRange
// Interval de date (șiruri, AAAA-LL-ZZ)
{ "start": "2023-12-01", "end": "2023-12-31" }

// Interval de numere Z (numere întregi)
{ "start": 1, "end": 10 }

Răspuns:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

je_report

Descriere: Generează un raport din jurnalul electronic (JE), fie tipărit pe dispozitiv, fie returnat ca text.

Parametri:

ParametruTipObligatoriuDescriere
rangeJeReportRangeDaObiect de interval etichetat (vezi mai jos).
doc_typestringDaFiltrul tipului de document (vezi lista).
output_modestringDa"print_on_device" sau "read_line_by_line".
Obiectul JeReportRange (etichetat cu type)
// Interval de date
{ "type": "date", "start": "2023-12-01", "end": "2023-12-31" }

// Interval de numere Z
{ "type": "z_number", "start": 1, "end": 10 }

// Interval de numere de document
{ "type": "doc_number", "start": 100, "end": 200 }
Tipuri de Documente (doc_type)
  • "all" - toate tipurile de documente
  • "fiscal_receipts" - doar bonuri fiscale
  • "z_reports" - doar rapoarte Z
  • "invoices" - doar facturi
  • "non_fiscal_receipts" - doar bonuri nefiscale
  • "numerar" - doar operațiuni de numerar (introducere/retragere)
Moduri de Ieșire (output_mode)
  • "print_on_device" - raportul se tipărește pe dispozitivul fiscal; data din răspuns este gol.
  • "read_line_by_line" - nu se tipărește nimic; textul raportului este returnat în data.

Răspuns:

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "linia1\nlinia2\n..."      // textul raportului când output_mode = "read_line_by_line"
}

get_vat_rates

Descriere: Citește grupele de TVA programate curent pe dispozitiv.

Parametri: niciunul.

Răspuns: data este un șir JSON codificat care mapează literele grupelor la cote în sutimi de procent (basis points; 1900 = 19.00%):

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "{\"A\":1900,\"B\":900,\"C\":500,\"E\":0}"
}

set_vat_rates

Descriere: Programează grupele de TVA ale dispozitivului. Atenție: pe dispozitive reale aceasta este o operațiune cu relevanță fiscală - majoritatea dispozitivelor cer mai întâi un raport Z și limitează numărul total de schimbări de TVA pe durata de viață a dispozitivului (ex: Datecs permite până la 51).

Parametri:

ParametruTipObligatoriuDescriere
ratesobjectDaMapare literă grupă TVA → cotă în sutimi de procent, sau null pentru dezactivarea grupei.
{
  "device_id": "...",
  "operation": {
    "type": "set_vat_rates",
    "rates": { "A": 1900, "B": 900, "C": 500, "D": null, "E": 0 }
  }
}

Răspuns:

{
  "status": 0,
  "msg": "VAT rates programming successful",
  "remaining_changes": 42            // schimbări de TVA rămase permise, sau null dacă dispozitivul nu raportează
}

După programare, driverul recitește cotele de pe dispozitiv și își actualizează automat starea din cache.

schedule_vat_rate_change

Descriere: Programează o schimbare de cote TVA care se execută automat la un moment viitor (ex: o schimbare legislativă de TVA la miezul nopții). Programările sunt persistate și supraviețuiesc repornirilor driverului; la eșec, execuția se reîncearcă la fiecare minut.

Parametri:

ParametruTipObligatoriuDescriere
ratesobjectDaAcelași format ca la set_vat_rates.
execution_timeintegerDaTimestamp Unix în secunde (UTC) la care trebuie să ruleze schimbarea.

Răspuns:

{
  "status": 0,
  "msg": "Operation completed successfully"
}

Programările în așteptare sunt vizibile în obiectul dispozitivului (câmpul scheduled_vat_rate_changes, fiecare intrare cu id-ul ei) returnat de GET /devices/fiscal.

cancel_scheduled_vat_rate_change

Descriere: Anulează o schimbare de cote TVA programată, aflată în așteptare.

Parametri:

ParametruTipObligatoriuDescriere
schedule_idstring (UUID)Daid-ul programării (din scheduled_vat_rate_changes).

Răspuns: {"status": 0, "msg": "Operation completed successfully"}. Returnează eroarea 400 dacă programarea nu există.

get_settings

Descriere: Citește setările dispozitivului gestionate de driver.

Parametri: niciunul.

Răspuns: data este un șir JSON codificat:

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "{\"block_on_auto_z_report\":false,\"include_qr_on_receipt\":true}"
}
SetareTipDescriere
block_on_auto_z_reportboolean | nulltrue: dispozitivul se blochează când un raport Z este scadent; false: tipărește unul automat; null: dispozitivul nu expune această opțiune.
include_qr_on_receiptboolean (opțional)Doar Datecs: dacă pe fiecare bon fiscal se adaugă un cod QR cu bon-ID. Lipsește când dispozitivul nu suportă opțiunea.

set_settings

Descriere: Scrie setările descrise la get_settings.

Parametri:

{
  "device_id": "...",
  "operation": {
    "type": "set_settings",
    "settings": {
      "block_on_auto_z_report": false,
      "include_qr_on_receipt": true
    }
  }
}

Răspuns: {"status": 0, "msg": "Operation completed successfully"}

fiscal_memory_test

Descriere: Rulează un auto-test de memorie fiscală pe dispozitiv.

Parametri:

ParametruTipObligatoriuDescriere
write_testbooleanDatrue efectuează un test de scriere (consumă o înregistrare de test din memoria fiscală!); false efectuează un test doar de citire.

Răspuns: data este un șir JSON codificat:

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "{\"free_records\":14}"     // înregistrări de test rămase (0-16), sau null dacă necunoscut
}

read_status

Descriere: Citește indicatorii detaliați de stare hardware ai dispozitivului (hârtie, capac, bon deschis, memorie fiscală, …). Setul exact de câmpuri este specific dispozitivului.

Parametri: niciunul.

Răspuns: data este un șir JSON codificat:

{
  "status": 0,
  "msg": "Report data retrieved successfully",
  "data": "{\"fields\":[{\"name\":\"NoPaper\",\"description\":\"Lipsă hârtie\",\"value\":0}, ...],\"raw_data\":\"...\"}"
}
  • fields[] - câte o intrare per indicator de stare: name, description lizibilă și value (0/1).
  • raw_data - octeții de stare bruți raportați de dispozitiv, pentru depanare.

Operațiuni Terminale POS

Aceste operațiuni vizează terminalele de plată POS (sau partea POS a dispozitivelor fiscale hibride).

sale

Descriere: Pornește o tranzacție de plată cu cardul pe terminalul POS.

Parametri:

ParametruTipObligatoriuDescriere
amountintegerDaSuma tranzacției, în bani. Trebuie să fie > 0.
suppress_printbooleanNuImplicit false. Când este true, chitanța POS nu este tipărită de terminal - este doar returnată în răspuns (câmpul receipt), pentru a o tipări voi.

Răspuns:

{
  "status": 0,
  "msg": "Sale successful",
  "transaction_id": "000012345678",   // RRN - păstrați-l, este necesar pentru void
  "authorization_code": "123ABC",     // păstrați-l, este necesar pentru void
  "receipt": "..."                    // textul chitanței POS, când este disponibil
}

Cazul de eroare: o tranzacție refuzată/eșuată returnează un răspuns de eroare (coduri 600–611) care poate include și un câmp receipt cu chitanța de refuz.

void

Descriere: Anulează (stornează) o tranzacție de vânzare anterioară.

Parametri:

ParametruTipObligatoriuDescriere
amountintegerDaSuma tranzacției originale, în bani. Trebuie să fie > 0.
transaction_idstringDaRRN-ul returnat de sale-ul original.
authorization_codestringDaCodul de autorizare returnat de sale-ul original.

Răspuns:

{
  "status": 0,
  "msg": "Void successful",
  "receipt": "..."                    // textul chitanței de anulare, când este disponibil
}

settlement

Descriere: Efectuează închiderea de zi (settlement / batch close) pe terminalul POS.

Parametri: niciunul.

Răspuns:

{
  "status": 0,
  "msg": "Settlement successful",
  "receipt": "..."                    // textul raportului de închidere, când este disponibil
}

Tipuri de Răspuns - Rezumat

Fiecare răspuns de succes are una dintre următoarele forme:

TipmsgCâmpuri suplimentareReturnat de
BonReceipt printedslip_number, z_report_number, fiscal_receipt_count, bon_id (nullable)print_receipt, print_non_fiscal_receipt
RaportReport printedreport_number, grand_total_sell, payment_totals, vat_totals, full_textprint_x, print_z
NumerarCash operation successfultotal_cash_drawer (lei, zecimal)deposit_cash, withdraw_cash
DateReport data retrieved successfullydata (șir JSON codificat)anaf_status, je_report, get_settings, get_vat_rates, get_logo_dimensions, fiscal_memory_test, read_status
Programare TVAVAT rates programming successfulremaining_changesset_vat_rates
GolOperation completed successfully-print_department_report, chime, open_drawer, anaf_export, load_logo, fiscal_memory_report, set_settings, schedule_vat_rate_change, cancel_scheduled_vat_rate_change
Vânzare POSSale successfultransaction_id, authorization_code, receiptsale
Anulare POSVoid successfulreceiptvoid
Închidere POSSettlement successfulreceiptsettlement

Exemple de Utilizare

Vezi paginile API HTTP și API WebSocket pentru exemple complete, la nivel de transport, de invocare a acestor operațiuni.