Bizonylatnapló
A Számla Agent nem tud nyugtákat dátum szerint listázni, ezért a NAV napi összesítő és a napi zárás a saját nyilvántartásodból számol. A kassza/journal ezt a nyilvántartást adja: minden elkészült bizonylatot rögzít, és jelzi, ha egy kiállítás kimenetele bizonytalan maradt.
Az onDocumentError: 'throw' miatt ha a naplóba írás nem sikerül, a hívás DocumentHookError-t dob (benne a már elkészült bizonylattal), így a kimaradt bejegyzés nem marad észrevétlen.
NAV napi összesítő a naplóból#
A receipts() a teszt nyugtákat alapból kihagyja (includeTest: true esetén benne vannak). Egy lekérdezés legfeljebb 366 napot fog át.
Befejezetlen tételek: írj előbb, aztán állíts ki#
Ha a folyamat a kiállítás közben leáll (serverless időkorlát, összeomlás), a napló nem tudja, hogy elkészült-e a bizonylat. A trackReceipt() és a trackInvoice() ezt kezeli: a kiállítás előtt befejezetlen tételt rögzít, utána lezárja.
| Kimenet | A napló állapota |
|---|---|
| Sikeres kiállítás (vagy már létező bizonylat) | Rögzítve, a befejezetlen tétel törölve. |
| Biztos hiba (például validáció) | Nincs bizonylat, a befejezetlen tétel törölve. |
| Bizonytalan hiba (időtúllépés, hálózat) vagy összeomlás | A tétel befejezetlen marad. |
| A bizonylat elkészült, de a naplóba írás elbukott | JournalWriteError, benne az eredménnyel; a tétel befejezetlen marad. |
A befejezetlen tételeket a settle() zárja le: rendelésszám alapján megkeresi a bizonylatokat a Számlázz.hu-n, és amit megtalál, rögzíti.
A meg nem talált tételek alapból befejezetlenek maradnak (releaseNotFound: true esetén törlődnek), mert egy meg nem talált bizonylat azt jelenti, hogy a rendeléshez még ki kell állítani.
Egyeztetés az adatkapcsolat archívumával#
A Számlázz.hu adatkapcsolata a napi nyugtaarchívumot is elküldheti. Ez a forrás-igazság: a reconcile() pótolja a naplóból hiányzó nyugtákat, és jelzi azokat, amelyek a naplóban vannak, de az archívumban nincsenek.
dryRun: true esetén csak jelent, nem ír.
Tárolók#
| Tároló | Mikor |
|---|---|
kvJournal(store) | Redis, Upstash vagy Durable Object; a tárolónak tudnia kell atomikus számlálót (increment). |
memoryJournal() | Tesztekhez és egyetlen folyamathoz. |
Saját JournalStorage | SQL adatbázishoz: hat metódust kell megírnod (bejegyzés írása, olvasása, listázása, és ugyanez a befejezetlen tételekre). |
A kvJournal alapból 400 napig őrzi a bejegyzéseket (retentionDays), a befejezetlen tételeket 30 napig. A napló nem helyettesíti a Számlázz.hu archívumát, csak a napi jelentésekhez és egyeztetéshez kell.