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