← DokArh Portal
sprint

Fenix V4 — Invoicing Modul (globalni fakturni sustav)

Kreator: CC + Ivan Brtan Datum: 2026-05-18 Status:
WeisE3™ ID: v4_invoicing_0013_2026_05_18
tipsprint
revision0013
sto_trebaPrekopiraj invoicing logiku iz fina-connect u Fenix V4 kao superiorniji async FastAPI modul. 10x bolji kod: RRIF matematika, multi-jurisdikcija, async, puni audit trail.
faze[ { "naziv": "tax.py", "status": "DONE", "opis": "Multi-jurisdikcija engine: HR PDV, DE MwSt, AT USt, CH MWST. RRIF standard: aggregate base → round(HALF_UP) → tax na zbroju. 4 decimale za unit_price." }, { "naziv": "models.py", "status": "DONE", "opis": "SQLAlchemy 2.x async modeli. Invoice, Line, Profile, Sequence, Acknowledgement, Event. ZAKON 27 polja: weise3_id, bunker_seal_id, created_at." }, { "naziv": "schemas.py", "status": "DONE", "opis": "
endpointi[ "POST /api/v4/invoicing/invoices", "GET /api/v4/invoicing/invoices", "GET /api/v4/invoicing/invoices/{invoice_id}", "PATCH /api/v4/invoicing/invoices/{invoice_id}/status", "POST /api/v4/invoicing/invoices/{invoice_id}/recalculate", "GET /api/v4/invoicing/portal/{token}", "POST /api/v4/invoicing/portal/{token}/acknowledge" ]
razlike_od_fina_connect[ "Async SQLAlchemy 2.x (ne sync Django ORM)", "RRIF standard: aggregate base ROUND_HALF_UP (ne round po liniji)", "Multi-jurisdikcija: HR/DE/AT/CH u jednom enginu", "Status transition graph: _ALLOWED_TRANSITIONS dict", "InvoiceEvent immutable audit log (INSERT only)", "InvoiceAcknowledgement: idempotent po invoice+IP, SHA-256 content hash", "SELECT FOR UPDATE na InvoiceSequence (nema race condition)", "ZAKON 27 trojka na svim modelima", "client_token UUID za portal (ne session
zakon[ "ZAKON 26", "ZAKON 27", "ZAKON 32", "ZAKON 0" ]
napomenafina-connect invoicing zamrznut — sav novi razvoj u V4. Taj modul je globalni standard koji se poziva iz svake prilike.
bunker_seal_id