Coduri Eroare
Această pagină este referința completă a codurilor de eroare returnate de driverul FisCool, pe toate interfețele (HTTP, WebSocket, erorile de execuție INP).
Formatul Răspunsului de Eroare
Toate API-urile returnează erorile într-un format JSON consecvent:
{
"status": 500, // cod de eroare specific aplicației (întreg pozitiv)
"error": "Lipsă hârtie în imprimantă.", // mesaj lizibil (în română)
"receipt": "..." // OPȚIONAL: prezent doar la unele erori POS
}
- Câmpul
statusdin corp este codul de eroare al aplicației, documentat mai jos; statusul HTTP al răspunsului urmează convențiile REST (vezi maparea pe pagina API HTTP). - Câmpul opțional
receiptapare la erorile de tranzacție POS care au produs o chitanță tipăribilă (ex: o vânzare refuzată).
Erori de Aplicație
Erori generate de driver - înainte de sau în jurul comunicării cu dispozitivul.
| Cod | Tip Eroare | Descriere | Status HTTP | Cauze Frecvente |
|---|---|---|---|---|
| 400 | Config | Eroare de configurare/validare în cerere sau în configurarea dispozitivului | 400 | Parametri invalizi, plăți ≠ total, cotă TVA inactivă |
| 404 | DeviceNotFound | Dispozitivul specificat nu a fost găsit | 404 | device_id necunoscut, dispozitiv șters |
| 408 | Timeout | Operațiunea a expirat | 408 | Dispozitivul nu a răspuns la timp |
| 1000 | Internal | Eroare internă a driverului | 500 | Erori neașteptate la rulare |
| 1001 | Persistence | Eroare de citire/scriere pe disc | 500 | Erori de sistem de fișiere, permisiuni, disc plin |
| 1002 | Serialization | Eroare de (de)serializare a datelor | 500 | JSON malformat, format de date neașteptat |
| 1003 | ApiServer | Eroare a serverului API HTTP | 500 | Probleme la pornirea/rularea serverului |
| 1004 | Connection | Eroare de conexiune înainte de comunicarea cu dispozitivul | 503 | TCP refuzat, port serial indisponibil, dispozitiv offline |
| 1005 | Internet | Problemă de conectivitate la internet | 502 | Fără internet, eroare DNS |
| 1006 | Update | Eroare în procesul de actualizare | 503 | Server de actualizare indisponibil, fișiere corupte |
| 1007 | Platform | Eroare specifică platformei | 500 | Funcționalitate OS indisponibilă |
| 1008 | SecretDataCorrupted | Datele protejate au fost alterate | 500 | Corupția fișierelor de configurare |
| 1009 | Unlicensed | Dispozitivul nu este licențiat | 403 | Licență lipsă sau expirată pentru acest dispozitiv |
| 1010 | LicenseCorruption | Datele de licență au fost alterate | 403 | Corupția fișierului de licență |
| 1011 | Network | Eroare generală de rețea | 502 | Timeout-uri, conexiune resetată |
| 1012 | Crypto | Eroare de operațiune criptografică | 500 | Eșec la criptare/decriptare, probleme cu cheile |
| 1013 | LicenseCheckFailed | Verificarea online a licenței a eșuat | 503 | Server de licențe indisponibil |
| 1014 | StartupError | Eroare la pornirea aplicației | 500 | Eșec la inițializarea serviciilor |
| 1015 | NotSupported | Operațiune nesuportată de acest dispozitiv | 501 | Funcție indisponibilă pe modelul de dispozitiv (ex: control sertar) |
Erori Dispozitive Fiscale (500–599)
Erori raportate de dispozitivele fiscale - probleme hardware, de stare sau operaționale. Mesajele sunt afișate exact cum sunt returnate în câmpul error.
Erori Hardware și de Stare (500–519)
| Cod | Eroare | Mesaj | Rezolvare |
|---|---|---|---|
| 500 | NoPaper | Lipsă hârtie în imprimantă. | Încărcați o rolă de hârtie |
| 501 | NearPaperEnd | Rola de hârtie este aproape goală. | Înlocuiți rola în curând |
| 502 | CoverOpen | Capacul imprimantei este deschis. | Închideți capacul dispozitivului |
| 503 | PrinterMechanismFailure | Eroare mecanică imprimantă. | Verificați obstrucțiile; poate fi necesar service |
| 504 | CutterError | Eroare la tăietorul de hârtie. | Îndepărtați blocajul de hârtie, verificați cutter-ul |
| 505 | DeviceBusy | Dispozitivul este ocupat. Încercați din nou. | Așteptați și reîncercați |
| 506 | ClockError | Eroare ceas intern dispozitiv. | Sincronizați ora dispozitivului; verificați bateria internă |
| 507 | LowBattery | Baterie descărcată. | Conectați la alimentare |
| 508 | GeneralDeviceError | Eroare generală dispozitiv (Cod: n) | Verificați conexiunea; codul original al dispozitivului este inclus când e cunoscut |
| 509 | GeneralDeviceErrorMessage | mesaj specific dispozitivului | Textul mesajului vine direct de la dispozitiv/driver |
Erori de Memorie Fiscală și Jurnal Electronic (520–529)
| Cod | Eroare | Mesaj | Rezolvare |
|---|---|---|---|
| 520 | FiscalMemoryFull | Memoria fiscală este plină. | Este necesară înlocuirea dispozitivului |
| 521 | FiscalMemoryError | Eroare citire/scriere memorie fiscală. | Este necesar service |
| 522 | FiscalMemoryNearFull | Memoria fiscală este aproape plină. | Planificați înlocuirea dispozitivului |
| 523 | EJFull | Jurnalul electronic este plin. | Exportați/înlocuiți suportul JE |
| 524 | EJError | Eroare jurnal electronic. | Verificați starea JE; poate fi necesar service |
| 525 | EJNearFull | Jurnalul electronic este aproape plin. | Exportați datele JE |
Erori Operaționale (530–549)
| Cod | Eroare | Mesaj | Rezolvare |
|---|---|---|---|
| 530 | ReceiptOpen | Există deja un bon fiscal deschis. Anulați-l sau finalizați-l. | Anulați sau finalizați bonul deschis |
| 531 | ReceiptNotOpen | Niciun bon fiscal deschis pentru această operațiune. | Deschideți mai întâi un bon |
| 532 | DayClosed | Raportul Z a fost deja emis. Deschideți o nouă zi fiscală. | Începeți o nouă zi fiscală |
| 533 | DayNotClosed | Ziua fiscală nu este închisă (Raport Z neemis). | Tipăriți raportul Z |
| 534 | DailyLimitReached | Limită zilnică atinsă (detalii). | Tipăriți raportul Z / așteptați ziua fiscală următoare |
| 535 | TimeNeedsSync | Data/ora dispozitivului necesită sincronizare. | Sincronizați ceasul dispozitivului |
| 536 | CashLow | Fonduri insuficiente în casă pentru extragere. | Introduceți numerar sau reduceți suma |
| 537 | InvalidAmount | Sumă invalidă pentru operațiune (ex: zero). | Folosiți o sumă validă, mai mare ca zero |
| 538 | NotFiscalized | Dispozitivul nu este fiscalizat. | Fiscalizați prin tehnician autorizat |
| 539 | DailyReportingRequired | Este necesară emiterea raportului Z. | Tipăriți raportul Z obligatoriu |
| 540 | InvalidVatRate | Cotă TVA invalidă sau inactivă pe dispozitiv. | Folosiți o cotă TVA activă pe dispozitiv |
| 541 | OperationNotPermitted | Operațiune nepermisă în starea curentă. | Verificați starea dispozitivului și ordinea operațiunilor |
| 542 | BlockingPeriodActive | Dispozitiv blocat temporar (ex: 24h fără comunicare). | Urmați procedura de deblocare |
| 543 | TooManyArticlesOnReceipt | Prea multe articole pe bonul fiscal. | Împărțiți tranzacția pe mai multe bonuri |
| 544 | ZNeeded | Este necesar să se tipărească raportul Z. | Tipăriți raportul Z înainte de a continua |
| 545 | NFReceiptOpen | Există deja un bon nefiscal deschis. | Închideți bonul nefiscal deschis |
Erori de Comandă și Sintaxă (550–559, 599)
| Cod | Eroare | Mesaj | Rezolvare |
|---|---|---|---|
| 550 | InvalidCommand | Comandă invalidă pentru dispozitiv. | Folosiți comenzi suportate de modelul de dispozitiv |
| 551 | InvalidSyntaxOrParam | Sintaxă sau parametru invalid pentru comandă. | Verificați formatul și valorile parametrilor |
| 552 | WrongOperatorPassword | Parolă operator incorectă. | Folosiți parola de operator corectă |
| 599 | Other | mesaj (Cod: n) | Eroare specifică dispozitivului; codul original este inclus |
Erori Terminale POS (600–611)
Erori specifice operațiunilor pe terminalele POS. Acestea pot purta câmpul opțional receipt cu chitanța terminalului.
| Cod | Eroare | Mesaj | Rezolvare |
|---|---|---|---|
| 600 | PosDeclinedGeneric | Tranzacție POS refuzată. | Verificați cardul; încercați altă metodă de plată |
| 601 | PosDeclinedInsufficientFunds | Fonduri insuficiente. | Clientul trebuie să folosească alt card/altă metodă |
| 602 | PosDeclinedCardExpired | Card expirat. | Clientul trebuie să folosească un card valid |
| 603 | PosDeclinedIncorrectPin | PIN incorect. | Reîncercați cu PIN-ul corect |
| 604 | PosTransactionCancelled | Tranzacție POS anulată. | Anulată de client sau de terminal |
| 605 | PosTimeout* | mesaj de timeout (mai multe variante) | Verificați conexiunea terminalului și reîncercați. Codul 605 acoperă toate situațiile de timeout POS (așteptarea răspunsului, ACK la inițierea conexiunii, ACK de comandă, rezultatul tranzacției); mesajul identifică faza exactă. |
| 606 | PosCommunicationError | Eroare de comunicație cu terminalul POS. | Verificați cablurile/rețeaua către terminal |
| 607 | PosTransactionReversed | Tranzacție POS inversată (ex: refuz semnătură). | Tranzacția a fost inversată de terminal |
| 608 | PosDeclinedByTerminal | Tranzacție POS refuzată de terminal (eroare locală). | Verificați starea terminalului |
| 609 | PosSettlementFailed | Închiderea de zi POS (settlement) a eșuat. | Verificați terminalul și reîncercați închiderea |
| 610 | PosInvalidResponseData | Răspuns invalid de la terminalul POS. | Verificați firmware-ul terminalului; contactați suportul |
| 611 | PosOperationFailed | Operațiune POS eșuată: detalii. | Vezi detaliile din mesaj |
Erori de Imprimantă (2001–2005)
Erori din subsistemul de tipărire nefiscală (/printers/print_html și acțiunea de tipărire WebSocket).
| Cod | Eroare | Descriere | Rezolvare |
|---|---|---|---|
| 2001 | PrinterNotFound | Imprimanta specificată nu a fost găsită | Verificați instalarea și numele imprimantei |
| 2002 | Tauri | Eroare a framework-ului aplicației | Verificați log-urile; reporniți aplicația |
| 2003 | HtmlRendering | Eroare la randarea conținutului HTML | Verificați validitatea HTML-ului |
| 2004 | PrintJob | Eroare la execuția lucrării de tipărire | Verificați starea imprimantei și hârtia |
| 2005 | Resource | Resursă necesară negăsită | Verificați căile resurselor și permisiunile |
Bune Practici de Tratare a Erorilor
- Intervale de coduri: categorisiți după interval:
- 400, 404, 408: erori de cerere/configurare - corectați cererea
- 1000–1015: erori de aplicație - verificați starea driverului/sistemului
- 500–599: erori de dispozitiv fiscal - verificați dispozitivul
- 600–611: erori POS - tratați starea tranzacției
- 2001–2005: erori de imprimantă - verificați configurarea imprimantei
- Logica de reîncercare:
- Erori tranzitorii (505, 408, 1004, 1005, 605, 606): pot fi reîncercate cu backoff - dar pentru vânzările POS folosiți întotdeauna un
Idempotency-Key, ca reîncercarea să nu poată debita dublu. - Erori de stare (530, 531, 532, 544, 545): rezolvați mai întâi starea dispozitivului, apoi reîncercați.
- Erori de configurare (400, 404, 540, 1009): nu reîncercați fără a corecta cererea/configurarea.
- Erori tranzitorii (505, 408, 1004, 1005, 605, 606): pot fi reîncercate cu backoff - dar pentru vânzările POS folosiți întotdeauna un
- Mesaje pentru utilizatori: mesajele din
errorsunt deja text prietenos în română, potrivit pentru afișare directă. - Logging: logați întotdeauna atât codul, cât și mesajul complet.
Scenarii Frecvente de Eroare
Tipărirea Bonurilor
530 (ReceiptOpen) → anulați/finalizați bonul rămas deschis pe dispozitiv
544 (ZNeeded) → tipăriți mai întâi raportul Z
400 (Config) → plățile nu corespund totalului, cotă TVA inactivă, fără linii de produs
1004 (Connection) → dispozitivul nu este conectat
Conectivitatea Dispozitivelor
404 (DeviceNotFound) → device_id greșit / dispozitiv șters
1004 (Connection) → conexiunea de rețea/serială a eșuat
505 (DeviceBusy) → dispozitivul răspunde dar este ocupat - reîncercați
509/508 (GeneralError) → dispozitivul e accesibil dar a raportat o eroare
Tranzacții POS
600–603 → problemă card/plată - este necesară acțiunea clientului
604 → anulată - nicio acțiune suplimentară
605–606 → problemă de comunicare - verificați terminalul, reîncercați (idempotență!)
609 → închiderea de zi a eșuat - verificați starea terminalului
Notă: corpul erorii poate include "receipt" cu chitanța de refuz.
Testarea Integrării
Testați tratarea erorilor pentru aceste scenarii critice:
- Dispozitiv deconectat în timpul operațiunii
- Condiții de lipsă hârtie
- Bon rămas deschis pe dispozitiv
- Eșecuri de comunicare și refuzuri ale terminalului POS
- Raport Z necesar
- Eșecuri de validare a licenței