ISFiscalService API
Serviciul Windows care tipăreşte bonurile fiscale şi rapoartele emise de aplicaţia comercială, le înregistrează în jurnalul electronic şi le transmite în ISFiscalCloud şi MEV.
Prezentare
- Aplicaţia comercială a unui terţ, integrată cu ISFiscalCloud, rulează în punctul de vânzare şi transmite vânzările către serviciul web ISFiscalService. Fiecare bon şi raport primeşte la salvare un număr de ordine unic şi un cod QR, apoi se tipăreşte pe imprimanta fiscală sau POS.
- Bonurile fiscale, bonurile de serviciu şi rapoartele se transmit concomitent în ISFiscalCloud şi în MEV — nu întâi într-unul şi apoi în celălalt.
- Orice cumpărător care a primit un bon cu cod QR îi poate verifica autenticitatea pe freceipt.eservicii.md sau mev.sfs.md, iar comerciantul îşi vede bonurile în cabinetul de pe mev.md.
Conexiune şi formate
Serviciul ascultă local, pe calculatorul casei, la portul 9203 (se poate schimba prin cheia Port din appSettings a fişierului de configurare al serviciului). Fiecare metodă e disponibilă prin trei puncte de acces — segmentul din adresă alege formatul atât pentru cerere, cât şi pentru răspuns:
| Format | Adresă | Content-Type |
|---|---|---|
| JSON | http://localhost:9203/fpservice/json/{Metodă} | application/json |
| XML | http://localhost:9203/fpservice/xml/{Metodă} | application/xml |
| SOAP | http://localhost:9203/fpservice/soap · WSDL: http://localhost:9203/fpservice?wsdl | text/xml |
Diferenţe între formate
ErrorCodevine în JSON ca număr (0), iar în XML ca nume (OK).- Datele calendaristice vin în JSON în formatul WCF
/Date(ms+zona)/— milisecunde de la 1970-01-01 UTC plus fusul orar —, iar în XML ca ISO 8601. - Cererile XML poartă spaţiul de nume
http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service, iar elementele se scriu în ordine alfabetică, ca în exemple.
Coada de sarcini
Metodele de înregistrare nu tipăresc sincron: pun o sarcină în coada serviciului şi întorc imediat identificatorii ei. TaskId e numărul din coadă, ShiftId — tura (raportul zilnic), ShiftOrderId — numărul în cadrul turei, TaskUid — GUID-ul, al vostru sau atribuit automat.
Câmpurile comune ale tranzacţiilor
Metodele care citesc tranzacţii înapoi (Get…) întorc, pe lângă câmpurile proprii, aceste câmpuri:
| Câmp | Tip | Descriere |
|---|---|---|
Date | datetime | Momentul executării (tipăririi) tranzacţiei |
MEVDate | datetime? | Data înregistrării în MEV; null dacă încă nu a ajuns acolo |
MEVID | string | Identificatorul atribuit de MEV |
MEVResponse | string | Răspunsul MEV la înregistrare |
TaskId | int | Numărul tranzacţiei în coada serviciului |
ShiftId | int | Tura (raportul zilnic) |
ShiftOrderId | int | Numărul tranzacţiei în cadrul turei |
CloudSyncWarning = true nu e o eroare: sarcina s-a înregistrat, dar în coadă există tranzacţii încă netransmise în MEV. Verificaţi GetServiceState. Dacă situaţia persistă peste limita offline, bonurile noi se emit ca bonuri de plată — vezi regulile.
Fluxul tipic
La pornirea aplicaţiei — GetServiceState. Dacă
GeneralErroretrue, arătaţi operatorului cauza din indicatorii de stare.La începutul turei, dacă e nevoie de numerar pentru rest — RegisterServiceReceipt cu sumă pozitivă.
La fiecare vânzare — RegisterFiscalReceipt cu propriul
Uid. Linkul dinQRse afişează cumpărătorului. La timeout sau eroare de reţea, retrimiteţi aceeaşi cerere cu acelaşiUid: dacă bonul intrase, primiţi eroarea46şiTaskIdlui, nu un bon dublu.Dacă bonul nu s-a tipărit (hârtie terminată etc.) — PrintCopy după
Uid, nu o nouă înregistrare: un bon repetat ar însemna o a doua vânzare în MEV.La închiderea zilei — extragerea numerarului (RegisterServiceReceipt cu sumă negativă), apoi raportul Z (RegisterReport,
CloseReport=true). La 24 de ore de la deschiderea turei, serviciul respinge bonurile până la Z.Pentru reconciliere — GetReports şi GetTransactions dau lista, iar metodele
Get…dau fiecare tranzacţie aşa cum a înregistrat-o serviciul.
Înregistrarea bonului fiscal
Înregistrează în coada serviciului fiscal sarcina de tipărire a unui bon fiscal. Răspunsul conţine linkul de verificare MEV, care trebuie afişat cumpărătorului ca cod QR sau tipărit la finalul bonului.
Repetarea e sigură. Dacă trimiteţi un Uid deja înregistrat, serviciul nu creează un al doilea bon: întoarce ErrorCode = 46 (ProcessingTaskExists) împreună cu TaskId al bonului existent. Deci, la un timeout, retrimiteţi aceeaşi cerere cu acelaşi Uid.
| Câmp | Tip | Descriere |
|---|---|---|
ClientEmail | string | E-mailul clientului, pentru trimiterea copiei bonului. Obligatoriu la DisplayType = 3. |
ClientPhone | string | Telefonul clientului, pentru trimiterea copiei prin SMS. Obligatoriu la DisplayType = 2. |
DisplayType | int | Modul de prezentare a bonului: 0 — tipărire pe hârtie (implicit); 1 — cod QR pe ecranul cumpărătorului; 2 — SMS; 3 — e-mail |
FooterText | string | Text liber tipărit la finalul bonului |
ForcePrint | bool | Tipărire forţată pe hârtie — are prioritate faţă de toţi ceilalţi parametri şi faţă de setările modulului fiscal |
HeaderText | string | Text liber tipărit la începutul bonului |
Lines | BillLine[] | Liniile bonului — cel puţin una. Structura |
MyDiscountUid | guid | Identificatorul clientului în sistemul de fidelizare MyDiscount |
Number | string | Numărul bonului în sistemul extern de evidenţă |
Payments | BillPayment[] | Plăţile bonului — cel puţin una. Structura |
PrinterURI | string | URI-ul imprimantei POS conectate la serviciu pentru tipărirea bonului. Gol — se tipăreşte pe imprimanta implicită din Windows. |
Uid | guid | GUID-ul bonului în sistemul extern. Gol — îl atribuie serviciul. Recomandat: trimiteţi-l mereu — face repetarea cererii sigură şi permite copia după propriul identificator. |
Lines · BillLine
Cel puţin o linie.
| Câmp | Tip | Descriere |
|---|---|---|
Code | string | Codul produsului în sistemul extern |
Discount | decimal | Reducere, în lei, pe suma totală a liniei |
Margin | decimal | Adaos, în lei, pe suma totală a liniei |
Name | string | Denumirea produsului; obligatorie |
Price | decimal | Preţul unitar; mai mare decât 0 |
Quantity | decimal | Cantitatea; mai mare decât 0, până la 3 zecimale |
UnitCode | int | Codul unităţii de măsură după clasificarea MEV: 1 — litri, 2 — metri cubi, 3 — produs care nu e combustibil, 0 — nespecificat. Contează doar la staţiile PECO — vezi regulile. |
UnitName | string | Denumirea unităţii de măsură |
VAT | string | Codul cotei TVA: o literă A–Z dintre cele configurate în serviciu (lista vine în GetServiceState → VATRates), sau _ — fără TVA. Obligatoriu. |
Payments · BillPayment
Cel puţin o plată. Sumele trebuie să acopere bonul — vezi regulile.
| Câmp | Tip | Descriere |
|---|---|---|
Amount | decimal | Suma plăţii; mai mare decât 0 |
BankResponse | string | Răspunsul terminalului bancar, la plata cu cardul |
Code | string | Codul tipului de plată — vezi tipurile de plată |
RRN | string | RRN-ul tranzacţiei bancare, la plata cu cardul |
Reguli de validare
Serviciul verifică bonul înainte să-l pună în coadă. Unele reguli depind de activitatea casei — câmpul ActivityType din GetServiceState: ACPS — comerţ, ACPPGL — staţie PECO, ACPSPPGL — staţie PECO cu magazin.
- Suma bonului. Suma unei linii =
round(Quantity × Price, 2) − Discount + Margin; suma bonului e suma liniilor. - Plăţile. Dacă plăţile sunt mai mici decât bonul — eroarea
41. Dacă sunt mai mari, diferenţa e restul, şi restul se dă numai din numerar (cod1): dacă plata în numerar nu acoperă restul — eroarea42. - Staţie PECO (
ACPPGL). O singură linie şi o singură plată.UnitCodeadmis:0,1,2;0se înregistrează ca litri. - PECO cu magazin (
ACPSPPGL).UnitCodeadmis:0–3. Liniile cu1sau2sunt combustibil, cele cu0sau3— marfă. Un bon care conţine combustibil are o singură plată. - Rotunjirea la combustibil. La un bon cu o singură linie, de combustibil, o diferenţă între plată şi bon de cel mult preţul a 10 ml (
Price / 100) e acceptată: suma liniei devine suma plăţii. - Codurile de plată admise depind de activitate — vezi tipurile de plată. Altfel — eroarea
28. - Ceasul. Dacă ora calculatorului e mai mică decât a ultimei tranzacţii înregistrate — eroarea
7. - Tura de 24 de ore. La mai mult de 24 de ore de la deschiderea turei — eroarea
9, până la raportul Z. Dacă în serviciu e configurat raportul Z automat, serviciul îl face singur şi înregistrează bonul. - Fără legătură cu MEV. Dacă tranzacţiile netransmise în MEV au depăşit limita offline (sau limita e
0şi cloud-ul nu răspunde), bonul nu se respinge: se înregistrează ca bon de plată, cu serie şi număr din intervalul alocat casei (GetTransactions îl arată cuType=12, detaliile — GetPaymentReceipt). Dacă intervalul lipseşte sau s-a epuizat — eroarea13.
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
CloudSyncWarning | bool | În coadă există cel puţin o sarcină care încă nu a fost transmisă în MEV |
ShiftId | int | Identificatorul turei (raportului zilnic) în care s-a înregistrat sarcina |
ShiftOrderId | int | Numărul de ordine al sarcinii în cadrul turei |
TaskId | int | Numărul de ordine al sarcinii în coada serviciului fiscal |
TaskUid | guid | Identificatorul unic al sarcinii — egal cu Uid din cerere sau atribuit automat dacă acesta lipsea |
QR | string | Linkul spre portalul MEV pentru validarea bonului. Se afişează ca QR pe ecranul cumpărătorului sau se tipăreşte la finalul bonului. |
POST http://localhost:9203/fpservice/json/RegisterFiscalReceipt
Content-Type: application/json
{
"ClientEmail": "",
"ClientPhone": "",
"DisplayType": 0,
"FooterText": "Thank you!",
"ForcePrint": true,
"HeaderText": "Operator 1",
"Lines": [{
"Code": "2",
"Discount": 2.00,
"Margin": 0.00,
"Name": "Ext DE5",
"Price": 31.50,
"Quantity": 2.150,
"UnitCode": 1,
"UnitName": "liters",
"VAT": "A"
}],
"Number": "248",
"Payments": [{
"Amount": 100.00,
"BankResponse": "",
"Code": "1",
"RRN": ""
}],
"PrinterURI": "",
"Uid": "3d0f65db-9f8f-49bc-b71d-8fc014f4af98"
}
{
"ErrorCode": 0,
"ErrorMessage": "",
"CloudSyncWarning": false,
"ShiftId": 11,
"ShiftOrderId": 1,
"TaskId": 46,
"TaskUid": "3d0f65db-9f8f-49bc-b71d-8fc014f4af98",
"QR": "https://mev.sfs.md/receipt-verifier/33C303B4706C3467CCD14EAA6662CEDE"
}
Aceeaşi cerere în XML
POST http://localhost:9203/fpservice/xml/RegisterFiscalReceipt
Content-Type: application/xml
<RegisterFiscalReceiptRequest xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service">
<ClientEmail></ClientEmail>
<ClientPhone></ClientPhone>
<DisplayType>0</DisplayType>
<FooterText>Thank you!</FooterText>
<ForcePrint>true</ForcePrint>
<HeaderText>Operator 1</HeaderText>
<Lines>
<BillLine>
<Code>2</Code>
<Discount>2.00</Discount>
<Margin>0.00</Margin>
<Name>Ext DE5</Name>
<Price>31.50</Price>
<Quantity>2.150</Quantity>
<UnitCode>1</UnitCode>
<UnitName>liters</UnitName>
<VAT>A</VAT>
</BillLine>
</Lines>
<Number>248</Number>
<Payments>
<BillPayment>
<Amount>100.00</Amount>
<BankResponse></BankResponse>
<Code>1</Code>
<RRN></RRN>
</BillPayment>
</Payments>
<PrinterURI></PrinterURI>
<Uid>2a0ce057-213b-4837-b3c7-d77c91e4661c</Uid>
</RegisterFiscalReceiptRequest>
<RegisterFiscalReceiptResponse xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>OK</ErrorCode>
<ErrorMessage/>
<CloudSyncWarning>false</CloudSyncWarning>
<ShiftId>10</ShiftId>
<ShiftOrderId>8</ShiftOrderId>
<TaskId>44</TaskId>
<TaskUid>2a0ce057-213b-4837-b3c7-d77c91e4661c</TaskUid>
<QR>https://mev.sfs.md/receipt-verifier/5CA4D2CA0450DF80FEB2A62354D75311</QR>
</RegisterFiscalReceiptResponse>
Înregistrarea bonului de serviciu
Înregistrează un bon de serviciu pentru introducerea (Amount > 0) sau extragerea (Amount < 0) numerarului din casă. Suma extrasă nu poate depăşi numerarul din sertar pe tura curentă — plăţile în numerar plus introducerile, minus extragerile şi restul dat —, altfel eroarea 40. Suma 0 — eroarea 24.
| Câmp | Tip | Descriere |
|---|---|---|
Amount | decimal | Suma introdusă; valoare negativă — suma extrasă |
Reason | int | Motivul extragerii: 0 — restituire, 1 — încasare. Câmpul e acceptat, dar versiunea curentă a serviciului nu îl prelucrează. |
ForcePrint | bool | Tipărire forţată pe hârtie (are prioritate faţă de setările modulului fiscal) |
PrinterURI | string | URI-ul imprimantei POS conectate la serviciu pentru tipărirea bonului de serviciu. Gol — se tipăreşte pe imprimanta implicită din Windows. |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
CloudSyncWarning | bool | În coadă există cel puţin o sarcină care încă nu a fost transmisă în MEV |
ShiftId | int | Identificatorul turei (raportului zilnic) în care s-a înregistrat sarcina |
ShiftOrderId | int | Numărul de ordine al sarcinii în cadrul turei |
TaskId | int | Numărul de ordine al sarcinii în coada serviciului fiscal |
TaskUid | guid | Identificatorul unic al sarcinii (atribuit automat) |
POST http://localhost:9203/fpservice/json/RegisterServiceReceipt
Content-Type: application/json
{
"Amount": 10.22,
"ForcePrint": true,
"PrinterURI": ""
}
{
"ErrorCode": 0,
"ErrorMessage": "",
"CloudSyncWarning": false,
"ShiftId": 11,
"ShiftOrderId": 3,
"TaskId": 49,
"TaskUid": "22ebb07d-57d6-4b5b-96bd-ee6bfd9bebb6"
}
Aceeaşi cerere în XML
POST http://localhost:9203/fpservice/xml/RegisterServiceReceipt
Content-Type: application/xml
<RegisterServiceReceiptRequest xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service">
<Amount>10.22</Amount>
<ForcePrint>true</ForcePrint>
<PrinterURI></PrinterURI>
</RegisterServiceReceiptRequest>
<RegisterServiceReceiptResponse xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>OK</ErrorCode>
<ErrorMessage/>
<CloudSyncWarning>false</CloudSyncWarning>
<ShiftId>11</ShiftId>
<ShiftOrderId>4</ShiftOrderId>
<TaskId>50</TaskId>
<TaskUid>def450fe-f9d5-4aa6-a0de-e11c94774b54</TaskUid>
</RegisterServiceReceiptResponse>
Înregistrarea raportului zilnic
Înregistrează sarcina de generare şi tipărire a raportului zilnic: cu închiderea turei (raport Z) sau fără (raport X). Raportul Z închide tura curentă; dacă nu era deschisă nicio tură, se deschide şi se închide una goală. Cât timp un Z anterior încă se procesează — eroarea 10. Pe casele cu memorie fiscală, o eroare a memoriei blochează raportul Z, dar nu şi raportul X — acesta rămâne disponibil pentru verificarea casei.
| Câmp | Tip | Descriere |
|---|---|---|
CloseReport | bool | true — raport cu închidere (Z), false — fără închidere (X) |
ForcePrint | bool | Tipărire forţată pe hârtie. Raportul Z poate fi tipărit şi fără ea, dacă serviciul e configurat să tipărească mereu Z. |
PrinterURI | string | URI-ul imprimantei POS conectate la serviciu pentru tipărirea raportului. Gol — se tipăreşte pe imprimanta implicită din Windows. |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
CloudSyncWarning | bool | În coadă există cel puţin o sarcină care încă nu a fost transmisă în MEV |
ShiftId | int | Identificatorul turei (raportului zilnic) în care s-a înregistrat sarcina |
ShiftOrderId | int | Numărul de ordine al sarcinii în cadrul turei |
TaskId | int | Numărul de ordine al sarcinii în coada serviciului fiscal |
TaskUid | guid | Identificatorul unic al sarcinii (atribuit automat) |
POST http://localhost:9203/fpservice/json/RegisterReport
Content-Type: application/json
{
"CloseReport": false,
"ForcePrint": true,
"PrinterURI": ""
}
{
"ErrorCode": 0,
"ErrorMessage": "",
"CloudSyncWarning": false,
"ShiftId": 11,
"ShiftOrderId": 6,
"TaskId": 52,
"TaskUid": "9cc9ac78-270d-429a-9867-c386e3e29409"
}
Aceeaşi cerere în XML
POST http://localhost:9203/fpservice/xml/RegisterReport
Content-Type: application/xml
<RegisterReportRequest xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service">
<CloseReport>false</CloseReport>
<ForcePrint>true</ForcePrint>
<PrinterURI></PrinterURI>
</RegisterReportRequest>
<RegisterReportResponse xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>OK</ErrorCode>
<ErrorMessage/>
<CloudSyncWarning>false</CloudSyncWarning>
<ShiftId>11</ShiftId>
<ShiftOrderId>7</ShiftOrderId>
<TaskId>53</TaskId>
<TaskUid>ec76c1ba-0dc4-4685-bd8a-994d35fad2e5</TaskUid>
</RegisterReportResponse>
Tipărirea textului nefiscal
Înregistrează sarcina de tipărire a unui text liber pentru cumpărător — fără valoare fiscală.
| Câmp | Tip | Descriere |
|---|---|---|
Lines | string[] | Rândurile de tipărit; cel puţin unul, altfel eroarea 20 |
PrinterURI | string | URI-ul imprimantei POS conectate la serviciu pentru tipărirea textului. Gol — se tipăreşte pe imprimanta implicită din Windows. |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
CloudSyncWarning | bool | În coadă există cel puţin o sarcină care încă nu a fost transmisă în MEV |
ShiftId | int | Identificatorul turei (raportului zilnic) în care s-a înregistrat sarcina |
ShiftOrderId | int | Numărul de ordine al sarcinii în cadrul turei |
TaskId | int | Numărul de ordine al sarcinii în coada serviciului fiscal |
POST http://localhost:9203/fpservice/json/PrintNonFiscalText
Content-Type: application/json
{
"Lines": ["Acesta este un exemplu", "de bon nefiscal."],
"PrinterURI": ""
}
{
"ErrorCode": 0,
"ErrorMessage": "",
"CloudSyncWarning": false,
"ShiftId": 11,
"ShiftOrderId": 5,
"TaskId": 63
}
Tipărirea copiei unui bon sau raport
Înregistrează sarcina de retipărire a unui bon fiscal, bon de serviciu sau raport X/Z înregistrat anterior prin acest serviciu. Textul nefiscal şi copiile nu se copiază. Copia se tipăreşte mereu pe hârtie, cu filigranul COPIE, şi primeşte propriul TaskId. Dacă tranzacţia nu e găsită — eroarea 43.
| Câmp | Tip | Descriere |
|---|---|---|
TaskId | int | Numărul sarcinii din coadă care trebuie retipărită |
TaskUid | guid | GUID-ul tranzacţiei — Uid trimis la înregistrare sau TaskUid primit în răspuns. E suficient unul dintre TaskId şi TaskUid; dacă vin amândouă, contează TaskUid. |
PrinterURI | string | URI-ul imprimantei POS conectate la serviciu pentru tipărirea copiei. Gol — se tipăreşte pe imprimanta implicită din Windows. |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
TaskId | int | Numărul de ordine al sarcinii în coada serviciului fiscal |
POST http://localhost:9203/fpservice/json/PrintCopy
Content-Type: application/json
{
"TaskId": 61,
"TaskUid": "00000000-0000-0000-0000-000000000000",
"PrinterURI": ""
}
{
"ErrorCode": 0,
"ErrorMessage": "",
"TaskId": 67
}
Tipărirea copiei ultimei tranzacţii
Înregistrează sarcina de retipărire a ultimei tranzacţii executate (bon fiscal, bon de serviciu, raport X/Z), cu filigranul COPIE. Metoda nu are parametri. Dacă nu există nicio astfel de tranzacţie — eroarea 43.
Nu are.
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
TaskId | int | Numărul de ordine al sarcinii în coada serviciului fiscal |
GET http://localhost:9203/fpservice/json/PrintLastCopy
<PrintCopyTaskResponse xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>OK</ErrorCode>
<ErrorMessage/>
<TaskId>68</TaskId>
</PrintCopyTaskResponse>
Starea serviciului
Întoarce starea curentă a serviciului fiscal: numerele de înregistrare, ultimele tranzacţii şi indicatorii de eroare. Apelaţi-o la pornirea aplicaţiei şi înaintea unei vânzări, dacă CloudSyncWarning a apărut în răspunsurile anterioare.
Nu are.
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
GeneralError | bool | Indicator general. true — înregistrarea tranzacţiilor e imposibilă acum; cauza o dau indicatorii de mai jos. |
ActivityType | string | Activitatea casei: ACPS — comerţ, ACPPGL — staţie PECO, ACPSPPGL — PECO cu magazin. Determină codurile de plată şi unităţile admise. |
ServiceSerialNumber | string | Numărul de înregistrare al serviciului în MEV |
ServiceDateTime | datetime | Data/ora curentă a serviciului (ceasul calculatorului) |
FiscalMemorySerialNumber | string | Numărul memoriei fiscale; gol dacă casa lucrează fără memorie fiscală |
FiscalMemoryError | bool | Memoria fiscală răspunde cu eroare. Ridică GeneralError. |
FiscalMemoryFiscalized | bool | Memoria fiscală e fiscalizată |
ServiceRegistrationInvalid | bool | Înregistrarea în MEV e anulată sau dispozitivul e necunoscut cloud-ului |
ServiceSignatureInvalid | bool | Cloud-ul a respins tranzacţii din cauza semnăturii digitale. Tranzacţiile sunt blocate. |
ServiceMEVSyncError | bool | Cea mai veche tranzacţie netransmisă în MEV a depăşit limita offline |
ServiceDatabaseCorrupted | bool | Integritatea bazei de date a serviciului e compromisă. Tranzacţiile sunt blocate. |
OfflineModeEnabled | bool | Există tranzacţii netransmise în MEV de peste un minut, dar limita offline nu e încă depăşită |
OfflineHoursLimit | int | Câte ore poate lucra casa cu tranzacţii netransmise. 0 — offline interzis. Pe casele cu memorie fiscală, dacă nu e setat, se aplică 72. |
FirstNotSyncedTransactionDate | datetime? | Data celei mai vechi tranzacţii netransmise în MEV — de la ea se numără timpul offline |
FirstNotSyncedTransactionNumber | int? | TaskId al acelei tranzacţii |
CurrentReportNumber | int? | Numărul turei deschise (ShiftId); null dacă nu e deschisă nicio tură |
CurrentReportDate | datetime? | Data deschiderii turei curente |
CurrentReport24HoursExpired | bool | Au trecut peste 24 de ore de la deschiderea turei. Până la raportul Z bonurile sunt respinse cu eroarea 9. |
VATRates | VATRate[] | Cotele TVA configurate: Code (litera folosită în Lines[].VAT) şi Percent |
… | LastTransactionDate, LastTransactionMEVID, LastTransactionNumber, LastSyncedTransactionDate, ServiceDatetimeInvalid, FiscalMemoryReportNotWritten, PrinterUnavailable, PrinterHasJobsInQueue, PrinterIsOutOfPaper, CompanyState — prezente în răspuns, dar versiunea curentă nu le completează. Nu vă bazaţi pe ele. |
GET http://localhost:9203/fpservice/json/GetServiceState
{
"ErrorCode": 0,
"ErrorMessage": "",
"GeneralError": false,
"ActivityType": "ACPS",
"ServiceSerialNumber": "AA0101000023",
"ServiceDateTime": "/Date(1665499064440+0300)/",
"FiscalMemorySerialNumber": "",
"FiscalMemoryError": false,
"FiscalMemoryFiscalized": false,
"ServiceRegistrationInvalid": false,
"ServiceSignatureInvalid": false,
"ServiceMEVSyncError": false,
"ServiceDatabaseCorrupted": false,
"OfflineModeEnabled": false,
"OfflineHoursLimit": 0,
"FirstNotSyncedTransactionDate": null,
"FirstNotSyncedTransactionNumber": null,
"CurrentReportNumber": 37,
"CurrentReportDate": "/Date(1665480576767+0300)/",
"CurrentReport24HoursExpired": false,
"VATRates": [
{ "Code": "A", "Percent": 20.00 },
{ "Code": "B", "Percent": 8.00 },
{ "Code": "C", "Percent": 0.00 }
]
}
Lista rapoartelor fiscale
Întoarce rapoartele Z executate în ziua indicată, în ordine cronologică. Fără dată — toate. La final se adaugă tura deschisă, dacă are bonuri: fără TaskId şi MEVID, cu Date = momentul cererii — util ca să vedeţi câte bonuri are tura curentă. Cifrele unui raport — GetReport.
| Câmp | Tip | Descriere |
|---|---|---|
onDate | date (query) | Ziua, în formatul YYYY-MM-DD. Opţional. |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
Reports | ReportHeader[] | Rapoartele găsite; câmpurile fiecăruia sunt mai jos |
· Date | datetime | Data înregistrării raportului în modulul fiscal |
· MEVDate | datetime | Data înregistrării raportului în MEV |
· MEVID | string | Identificatorul atribuit de MEV |
· MEVResponse | string | Răspunsul MEV la înregistrare |
· ShiftId | int | Numărul turei (raportului zilnic) |
· ShiftOrderId | int | Numărul sarcinii în cadrul turei |
· TaskId | int | Numărul sarcinii în coadă |
· TaskUid | guid | Identificatorul unic al sarcinii |
· TotalBill | int | Numărul de bonuri fiscale din tură |
GET http://localhost:9203/fpservice/json/GetReports?onDate=2023-08-23
<GetReportsResponse xmlns="http://schemas.datacontract.org/2004/07/Hardware.FiscalPrinters.Service" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<ErrorCode>OK</ErrorCode>
<ErrorMessage/>
<Reports>
<ReportHeader>
<Date>2023-08-23T15:19:18.853</Date>
<MEVDate>2023-08-23T15:19:26.183</MEVDate>
<MEVID>99f5697f-c1a4-4d86-880f-7a8f46015f50</MEVID>
<MEVResponse i:nil="true"/>
<ShiftId>11</ShiftId>
<ShiftOrderId>0</ShiftOrderId>
<TaskId>55</TaskId>
<TaskUid>a414d8d6-1faa-428d-9758-1706266b313e</TaskUid>
<TotalBill>0</TotalBill>
</ReportHeader>
</Reports>
</GetReportsResponse>
Tranzacţiile unei ture
Întoarce toate tranzacţiile turei indicate, în ordine cronologică: bonuri, bonuri de plată, bonuri de serviciu, rapoarte, copii. Pentru detaliile unei tranzacţii folosiţi metoda potrivită tipului ei (GetFiscalReceipt, GetPaymentReceipt, GetServiceReceipt, GetReport).
| Câmp | Tip | Descriere |
|---|---|---|
shiftID | int (query) | Numărul turei — ShiftId din răspunsurile de înregistrare sau CurrentReportNumber din GetServiceState |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
Transactions | TransactionHeader[] | Tranzacţiile; câmpurile fiecăreia sunt mai jos |
· Type | int / enum | Tipul: 0 bon fiscal, 1 text nefiscal, 2 raport X, 3 raport Z, 5 extragere, 6 introducere, 11 copie, 12 bon de plată. În JSON — număr, în XML — nume (Bill, BillNonFiscal, XReport, ZReport, WithdrawalOfFunds, SupplyWithMoney, PrintCopy, PaymentReceipt). |
· TotalAmount | decimal | Suma tranzacţiei |
· Date, MEVDate, MEVID, MEVResponse, TaskId, ShiftOrderId | Ca în câmpurile comune. ShiftId şi TaskUid nu se completează aici. |
GET http://localhost:9203/fpservice/json/GetTransactions?shiftID=11
{
"ErrorCode": 0,
"ErrorMessage": "",
"Transactions": [
{ "Type": 6, "TotalAmount": 500.00, "TaskId": 45, "ShiftOrderId": 0,
"Date": "/Date(1692792000000+0300)/", "MEVDate": "/Date(1692792004000+0300)/",
"MEVID": "4f1c0a2e-7d3b-4c55-9e0a-2b8d6f7e1c90", "MEVResponse": "",
"ShiftId": 0, "TaskUid": "00000000-0000-0000-0000-000000000000" },
{ "Type": 0, "TotalAmount": 65.73, "TaskId": 46, "ShiftOrderId": 1,
"Date": "/Date(1692793158853+0300)/", "MEVDate": "/Date(1692793166183+0300)/",
"MEVID": "99f5697f-c1a4-4d86-880f-7a8f46015f50", "MEVResponse": "",
"ShiftId": 0, "TaskUid": "00000000-0000-0000-0000-000000000000" }
]
}
Bonul fiscal înregistrat
Întoarce bonul fiscal aşa cum l-a înregistrat serviciul — cu preţurile efective, TVA calculat şi restul. Util pentru reconcilierea cu sistemul extern. Dacă tranzacţia nu există sau nu e un bon — eroarea 43.
| Câmp | Tip | Descriere |
|---|---|---|
transactionId | int (query) | TaskId al tranzacţiei — cel primit la înregistrare sau din GetTransactions |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
FiscalReceipt | FiscalReceipt | Bonul; câmpurile sunt mai jos |
· Date | datetime | Momentul executării (tipăririi) tranzacţiei |
· MEVDate | datetime? | Data înregistrării în MEV; null dacă încă nu a ajuns acolo |
· MEVID | string | Identificatorul atribuit de MEV |
· MEVResponse | string | Răspunsul MEV la înregistrare |
· TaskId | int | Numărul tranzacţiei în coada serviciului |
· ShiftId | int | Tura (raportul zilnic) |
· ShiftOrderId | int | Numărul tranzacţiei în cadrul turei |
· Number | string | Number din cerere |
· Uid | guid | Uid al bonului |
· MyDiscountUid, ClientPhone,ClientEmail, HeaderText,FooterText | Aşa cum au venit în cerere | |
· Lines | ReceiptLine[] | Liniile, aşa cum s-au înregistrat: Code, Name, UnitCode, UnitName, Quantity, Amount (cantitate × preţ, înainte de reducere), Discount, Margin, Price (preţul efectiv, după reducere şi adaos) şi VAT — obiect cu Code, Percent, Amount (suma TVA), Brut (suma cu TVA) |
· Payments | ReceiptPayment[] | Code, Amount, RRN, BankResponse |
· Taxes | ReceiptTax[] | Totalurile pe cote TVA: Code, Percent, Amount (suma TVA), Brut (suma cu TVA) |
· SubTotalAmount | decimal | Subtotalul, aşa cum apare pe bon |
· TotalAmount | decimal | Totalul bonului |
· Deposit | decimal | Suma achitată (toate plăţile) |
· Change | decimal | Restul dat |
GET http://localhost:9203/fpservice/json/GetFiscalReceipt?transactionId=46
{
"ErrorCode": 0,
"ErrorMessage": "",
"FiscalReceipt": {
"Date": "/Date(1692793158853+0300)/",
"MEVDate": "/Date(1692793166183+0300)/",
"MEVID": "99f5697f-c1a4-4d86-880f-7a8f46015f50",
"MEVResponse": "",
"TaskId": 46,
"TaskUid": "00000000-0000-0000-0000-000000000000",
"ShiftId": 11,
"ShiftOrderId": 1,
"Number": "248",
"Uid": "3d0f65db-9f8f-49bc-b71d-8fc014f4af98",
"MyDiscountUid": "00000000-0000-0000-0000-000000000000",
"ClientPhone": "",
"ClientEmail": "",
"HeaderText": "Operator 1",
"FooterText": "Thank you!",
"Lines": [{
"Code": "2",
"Name": "Ext DE5",
"UnitCode": 0,
"UnitName": "liters",
"Quantity": 2.150,
"Amount": 67.73,
"Discount": 2.00,
"Margin": 0.00,
"Price": 30.57,
"VAT": { "Code": "A", "Percent": 20.00, "Amount": 10.96, "Brut": 65.73 }
}],
"Payments": [{ "Code": "1", "Amount": 100.00, "RRN": "", "BankResponse": "" }],
"Taxes": [{ "Code": "A", "Percent": 20.00, "Amount": 10.96, "Brut": 65.73 }],
"SubTotalAmount": 65.73,
"TotalAmount": 65.73,
"Deposit": 100.00,
"Change": 34.27
}
}
Bonul de plată înregistrat
Întoarce un bon de plată — bonul pe care serviciul l-a emis în locul celui fiscal, fiindcă legătura cu MEV lipsea peste limita offline (vezi regulile). Are aceleaşi câmpuri ca GetFiscalReceipt, plus seria şi numărul. Dacă tranzacţia nu e un bon de plată — eroarea 43.
| Câmp | Tip | Descriere |
|---|---|---|
transactionId | int (query) | TaskId al tranzacţiei — cel primit la înregistrare sau din GetTransactions |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
PaymentReceipt | PaymentReceipt | Bonul de plată: toate câmpurile din FiscalReceipt plus cel de mai jos |
· SeriaAndNumber | string | Seria şi numărul din intervalul alocat casei |
GET http://localhost:9203/fpservice/json/GetPaymentReceipt?transactionId=47
{
"ErrorCode": 0,
"ErrorMessage": "",
"PaymentReceipt": {
"SeriaAndNumber": "AA0000125",
"Date": "/Date(1692793158853+0300)/",
"MEVDate": null,
"MEVID": "",
"MEVResponse": "",
"TaskId": 47,
"TaskUid": "00000000-0000-0000-0000-000000000000",
"ShiftId": 11,
"ShiftOrderId": 1,
"Number": "248",
"Uid": "3d0f65db-9f8f-49bc-b71d-8fc014f4af98",
"MyDiscountUid": "00000000-0000-0000-0000-000000000000",
"ClientPhone": "",
"ClientEmail": "",
"HeaderText": "Operator 1",
"FooterText": "Thank you!",
"Lines": [{
"Code": "2",
"Name": "Ext DE5",
"UnitCode": 0,
"UnitName": "liters",
"Quantity": 2.150,
"Amount": 67.73,
"Discount": 2.00,
"Margin": 0.00,
"Price": 30.57,
"VAT": { "Code": "A", "Percent": 20.00, "Amount": 10.96, "Brut": 65.73 }
}],
"Payments": [{ "Code": "1", "Amount": 100.00, "RRN": "", "BankResponse": "" }],
"Taxes": [{ "Code": "A", "Percent": 20.00, "Amount": 10.96, "Brut": 65.73 }],
"SubTotalAmount": 65.73,
"TotalAmount": 65.73,
"Deposit": 100.00,
"Change": 34.27
}
}
Bonul de serviciu înregistrat
Întoarce un bon de introducere sau extragere a numerarului. Dacă tranzacţia nu e un bon de serviciu — eroarea 43.
| Câmp | Tip | Descriere |
|---|---|---|
transactionId | int (query) | TaskId al tranzacţiei — cel primit la înregistrare sau din GetTransactions |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
ServiceReceipt | ServiceReceipt | Bonul; câmpurile sunt mai jos |
· Amount | decimal | Suma: pozitivă — introducere, negativă — extragere |
· CashInDrawer | decimal | Numerarul din sertar după operaţie |
· Date | datetime | Momentul executării (tipăririi) tranzacţiei |
· MEVDate | datetime? | Data înregistrării în MEV; null dacă încă nu a ajuns acolo |
· MEVID | string | Identificatorul atribuit de MEV |
· MEVResponse | string | Răspunsul MEV la înregistrare |
· TaskId | int | Numărul tranzacţiei în coada serviciului |
· ShiftId | int | Tura (raportul zilnic) |
· ShiftOrderId | int | Numărul tranzacţiei în cadrul turei |
GET http://localhost:9203/fpservice/json/GetServiceReceipt?transactionId=45
{
"ErrorCode": 0,
"ErrorMessage": "",
"ServiceReceipt": {
"Amount": 500.00,
"CashInDrawer": 500.00,
"Date": "/Date(1692792000000+0300)/",
"MEVDate": "/Date(1692792004000+0300)/",
"MEVID": "4f1c0a2e-7d3b-4c55-9e0a-2b8d6f7e1c90",
"MEVResponse": "",
"TaskId": 45,
"TaskUid": "00000000-0000-0000-0000-000000000000",
"ShiftId": 11,
"ShiftOrderId": 0
}
}
Raportul X sau Z înregistrat
Întoarce cifrele unui raport zilnic: totalurile pe cote TVA şi pe tipuri de plată, numerarul şi, pentru Z, totalurile de la începutul anului. Dacă tranzacţia nu e un raport — eroarea 43.
| Câmp | Tip | Descriere |
|---|---|---|
transactionId | int (query) | TaskId al tranzacţiei — cel primit la înregistrare sau din GetTransactions |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
Report | Report | Raportul; câmpurile sunt mai jos |
· ReportType | int / enum | 1 — Z (RaportZ), 2 — X (RaportX) |
· Total | decimal | Circulaţia zilnică totală |
· TotalUntaxed | decimal | Circulaţia zilnică neimpozitată |
· Tax | decimal | TVA zilnic total |
· TotalBill | int | Numărul de bonuri fiscale |
· LastBillNumber | int | Numărul ultimului bon fiscal |
· Taxes | ReceiptTax[] | Pe cote TVA: Code, Percent, Amount (suma TVA), Brut (suma cu TVA) |
· Payments | ReportPayment[] | Pe tipuri de plată: Code (numele tipului, de ex. NUMERAR), Amount |
· PaymentReceiptsTaxes, PaymentReceiptsPayments | Aceleaşi totaluri, pentru bonurile de plată | |
· CashIn, CashOut | decimal | Numerarul introdus şi extras în tură |
· Balance | decimal | Soldul de numerar din sertar |
· TotalYear, TotalYearTax | decimal | Circulaţia şi TVA de la începutul anului; doar în raportul Z |
· Date | datetime | Momentul executării (tipăririi) tranzacţiei |
· MEVDate | datetime? | Data înregistrării în MEV; null dacă încă nu a ajuns acolo |
· MEVID | string | Identificatorul atribuit de MEV |
· MEVResponse | string | Răspunsul MEV la înregistrare |
· TaskId | int | Numărul tranzacţiei în coada serviciului |
· ShiftId | int | Tura (raportul zilnic) |
· ShiftOrderId | int | Numărul tranzacţiei în cadrul turei |
GET http://localhost:9203/fpservice/json/GetReport?transactionId=55
{
"ErrorCode": 0,
"ErrorMessage": "",
"Report": {
"ReportType": 1,
"Total": 65.73,
"TotalUntaxed": 0.00,
"Tax": 10.96,
"TotalBill": 1,
"LastBillNumber": 1,
"Taxes": [{ "Code": "A", "Percent": 20.00, "Amount": 10.96, "Brut": 65.73 }],
"Payments": [{ "Code": "NUMERAR", "Amount": 65.73 }],
"PaymentReceiptsTaxes": [],
"PaymentReceiptsPayments": [],
"CashIn": 500.00,
"CashOut": 0.00,
"Balance": 565.73,
"TotalYear": 184250.40,
"TotalYearTax": 30708.40,
"Date": "/Date(1692793158853+0300)/",
"MEVDate": "/Date(1692793166183+0300)/",
"MEVID": "99f5697f-c1a4-4d86-880f-7a8f46015f50",
"MEVResponse": "",
"TaskId": 55,
"TaskUid": "00000000-0000-0000-0000-000000000000",
"ShiftId": 11,
"ShiftOrderId": 3
}
}
Imaginea tranzacţiei
Întoarce macheta tipărită a oricărei tranzacţii, ca pagină HTML (lăţime 57 mm, imaginile incluse) codificată Base64. Util pentru a afişa bonul pe ecran sau a-l trimite clientului. Dacă tranzacţia nu există — eroarea 43.
| Câmp | Tip | Descriere |
|---|---|---|
transactionId | int (query) | TaskId al tranzacţiei — cel primit la înregistrare sau din GetTransactions |
| Câmp | Tip | Descriere |
|---|---|---|
ErrorCode | int / enum | Codul erorii; 0 (OK) — metoda s-a executat fără erori. Vezi codurile de eroare. |
ErrorMessage | string | Mesaj explicativ al erorii |
Template | string | HTML codificat Base64 |
GET http://localhost:9203/fpservice/json/GetTransactionTemplate?transactionId=46
{
"ErrorCode": 0,
"ErrorMessage": "",
"Template": "PCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+..."
}
Tipuri de plată
Valoarea câmpului Payments[].Code. Denumirile sunt cele din clasificarea MEV şi apar aşa pe bon.
| Cod | MEV | Descriere | Admis în |
|---|---|---|---|
1 | NUMERAR | numerar | toate |
2 | CARD | card bancar | toate |
3.1 | VAUCHER | voucher | toate |
3.2 | CEC (CERTIFICAT VALORIC) | certificat valoric | toate |
3.3 | TICHET | document cu valoare prestabilită, în lei | toate |
5 | TME | tichet de masă pe suport electronic | ACPS; ACPSPPGL — doar pe bonuri fără combustibil |
6 | ABONAMENT | abonament | toate |
7 | ALT TIP | alt tip | toate |
8.1 | Credit | credit | ACPS (MEV v2), ACPSPPGL |
8.2 | Leasing | leasing | ACPS (MEV v2), ACPSPPGL |
8.3 | Avans | avans | ACPS (MEV v2), ACPSPPGL |
8.4 | Arvuna | arvună | ACPS (MEV v2), ACPSPPGL |
8.5 | Gaj | gaj | ACPS (MEV v2), ACPSPPGL |
Activitatea casei vine în GetServiceState → ActivityType. La o staţie PECO (ACPPGL) sunt admise numai codurile marcate „toate”. Un cod nepermis — eroarea 28.
Coduri de eroare
Valorile câmpului ErrorCode întoarse de toate metodele.
| Cod | Nume | Semnificaţie |
|---|---|---|
| Serviciu | ||
0 | OK | metoda s-a executat fără erori |
1 | ServiceUnknownInternalError | eroare internă necunoscută a serviciului |
2 | ServiceDatabaseNotResponding | baza de date a serviciului nu răspunde |
3 | ServiceDatabaseCorrupted | baza de date a serviciului e deteriorată |
4 | ServiceSignatureInvalid | semnătura digitală a serviciului nu e validă |
5 | ServiceNotConfigured | serviciul nu e configurat sau e configurat greşit |
6 | ServiceActivationCancelled | înregistrarea serviciului în MEV a fost anulată |
7 | ServiceInvalidDateTime | ceasul calculatorului pe care rulează serviciul e setat greşit |
8 | ServiceCloudSyncError | eroare de sincronizare a tranzacţiilor cu ISFiscalCloud şi/sau MEV |
9 | ServiceDailyReportRequired | e necesar raportul zilnic cu închidere (Z) |
10 | ServiceDailyReportPrinting | se tipăreşte raportul zilnic cu închidere |
11 | ServiceCloudConnectionError | eroare de conectare la ISFiscalCloud (doar în configuraţia fără offline) |
12 | ServiceCloudTimeoutError | ISFiscalCloud nu a răspuns la timp (doar în configuraţia fără offline) |
13 | ServicePaymentReceiptRangeNotSet | legătura cu MEV lipseşte peste limita offline, iar intervalul de numere pentru bonurile de plată nu e setat sau s-a epuizat |
14 | ServiceSMSNotConfigured | în cerere e ClientPhone, dar trimiterea SMS nu e configurată în serviciu |
15 | ServiceEmailNotConfigured | în cerere e ClientEmail, dar trimiterea e-mail nu e configurată în serviciu |
16 | ServiceTaskProcessing | în acest moment se înregistrează un bon sau un raport; primirea unui bon nou e temporar imposibilă — repetaţi cererea peste câteva secunde |
| Formatul cererii | ||
20 | FormatBillDoesNotContainLines | bonul nu conţine produse |
21 | FormatBillDoesNotContainPayments | bonul nu conţine plăţi |
22 | FormatIncorrectProductName | denumirea produsului e greşită sau goală |
23 | FormatIncorrectQuantity | cantitate greşită |
24 | FormatIncorrectAmount | sumă greşită |
25 | FormatIncorrectPrice | preţ greşit |
26 | FormatUnknownUnit | unitate de măsură necunoscută sau nepermisă |
27 | FormatUnknownVAT | cotă TVA necunoscută |
28 | FormatUnknownPayment | cod de plată necunoscut |
29 | FormatUnknownDepartment | subdiviziune necunoscută |
30 | FormatPhoneNumberMissing | lipseşte numărul de telefon (necesar pentru DisplayType = 2) |
31 | FormatEmailMissing | lipseşte adresa de e-mail (necesară pentru DisplayType = 3) |
| Procesare | ||
40 | ProcessingInsufficientFundsInBox | numerar insuficient în sertar pentru operaţie |
41 | ProcessingInsufficientPaymentAmount | suma plăţilor e mai mică decât suma produselor |
42 | ProcessingChangeCanNotBeCalculated | restul nu poate fi calculat |
43 | ProcessingTaskNotFound | sarcina nu a fost găsită |
44 | ProcessingTaskFinished | sarcina e deja finalizată |
45 | ProcessingIllegalCommand | comandă nepermisă în starea curentă |
46 | ProcessingTaskExists | un bon cu acest Uid există deja; răspunsul conţine TaskId al lui |
| Imprimantă | ||
61 | PrinterNotFound | imprimanta nu a fost găsită |
62 | PrinterUnavailable | imprimanta nu e disponibilă |
63 | PrinterOffline | imprimanta e în regim offline |
64 | PrinterHasJobsInQueue | coada imprimantei are sarcini neexecutate |
65 | PrinterIsOutOfPaper | imprimanta nu are hârtie |
| Memorie fiscală | ||
71 | FiscalMemoryNotConnected | memoria fiscală nu e conectată |
72 | FiscalMemoryNotFiscalized | memoria fiscală nu e fiscalizată |
73 | FiscalMemoryIDReadingError | eroare la citirea identificatorului memoriei fiscale |
74 | FiscalMemoryWrongID | identificatorul memoriei fiscale e greşit |
75 | FiscalMemoryReportNotWritten | raportul nu a fost scris în memoria fiscală |