NAV kliens
A createNavReceiptClient() a NAV nyugta-adatszolgáltatási interfészét hívja (/receipt-if, teszt és éles környezet). Lekérdezi a NAV-nál rögzített napi összesítőket, és ha neked kell beküldeni (például a kézi nyugtatömb nyugtáit), beküldi, javítja vagy érvényteleníti őket. Az SHA-512 jelszó-hasht és az SHA3-512 kérésaláírást maga készíti, függőség nélkül.
Technikai felhasználó#
A géppel történő adatszolgáltatáshoz a NAV Felhasználókezelőjében (UAM) technikai felhasználó kell, nyugta-adatszolgáltatási jogosultsággal és aláírókulccsal. Ennek adatai kellenek a klienshez:
| Opció | Alapérték | Jelentés |
|---|---|---|
environment | – | test vagy production. Kötelező, hogy ne küldj véletlenül élesbe. |
login, password | – | A technikai felhasználó. A jelszó helyett a nagybetűs SHA-512 hash is megadható (passwordHash). |
signatureKey | – | Az aláírókulcs. |
taxNumber | – | A cég adószáma vagy törzsszáma. |
predecessorTaxNumber | – | Jogelőd törzsszáma, ha kell. |
softwareName | – | A kiállító szoftver neve a beküldésekhez. |
allowWrite | false | Beküldés, javítás és érvénytelenítés engedélyezése. |
timeoutMs | 15000 | Egy kérés időkorlátja. |
fetch, baseUrl | – | Egyedi fetch vagy cím, például teszthez. |
A NAV token 5 percig érvényes. A kliens tárolja és újrahasznosítja, lejárat vagy 401 válasz után egyszer újat kér.
Lekérdezés#
A listReports() egy oldalt ad vissza (page, pageSize, rendezés), a listAllReports() végiglapozza az időszakot. Az állapot RECORDED (érvényes) vagy INVALIDATED (érvénytelenített vagy javítással felülírt). A softwareName megmutatja, melyik szoftver küldte be, így látod, mit jelentett a Számlázz.hu.
Beküldés#
Beküldés előtt a kiállító szoftver nevét egyszer rögzíteni kell a NAV-nál, különben EPGP0002 hibát kapsz:
A registerSoftware() idempotens: ha a név már rögzítve van, nem küld újra. A submitReport() beküldés előtt ellenőrzi az adatokat (dátum, sorszám, pénznem, árfolyam, kategóriák, összegek és darabszámok), és megnézi, van-e már érvényes adatszolgáltatás ugyanarra a tárgynapra és kezdő sorszámra:
- ha van, és az adatai egyeznek, nem küld újra, hanem
created: falseeredményt ad, - ha van, de eltér,
conflicthibát dob a meglévő azonosítójával. Ilyenkor a javítás a helyes út, nem az újraküldés.
Javítás és érvénytelenítés#
A javítás új rekordot hoz létre, a régi INVALIDATED lesz. A kezdő sorszám nem javítható: ha az hibás, érvénytelenítsd a jelentést, és küldj be újat. Egy rekord csak egyszer javítható (EPGP0051), a további javítás a javítással létrejött új rekordra megy.
Segédlisták#
A vatCategories() a NAV áfakategóriáit adja érvényességi idővel, a currencies() a beküldhető pénznemeket. A kassza/reports napi összesítője ugyanezeket a kategóriákat használja.
Hibák#
Minden hiba NavReceiptError, az isNavReceiptError() típusőrrel szűkítheted.
| Kategória | Jelentés |
|---|---|
auth | Hibás technikai felhasználó, jelszó vagy aláírókulcs |
validation | Hibás adat (a fieldErrors mezőnként megmondja, mi) |
business | Üzleti szabály, például nem rögzített szoftver (EPGP0002) |
conflict | Ugyanarra a napra és sorszámra már van eltérő adatszolgáltatás |
write_blocked | Írás allowWrite: true nélkül |
technical, network, timeout | Átmeneti hiba, a retryable igaz |
configuration, unexpected_response | Beállítási hiba vagy váratlan NAV válasz |
A NAV EPGP hibakódja a code mezőben van, a magyar javítási tipp a hint mezőben.