pos/router.py: mock ZKI/JIR → pravi fiscal/service.py pozivi · pos/router.py: _parse_br_ozn_rac() — izvlači BrOznRac int iz 'R-42/1/1' · pos/router.py: _send_jir_background() — JIR async background ta
tipfiskal_implementacija
statusLIVE
sto_je_napravljeno[
"pos/router.py: mock ZKI/JIR → pravi fiscal/service.py pozivi",
"pos/router.py: _parse_br_ozn_rac() — izvlači BrOznRac int iz 'R-42/1/1'",
"pos/router.py: _send_jir_background() — JIR async background task (48h rok)",
"pos/router.py: PNP izračun po stavci (line_base * pnp_stopa/100)",
"fiscal/models.py: pnp_stopa Decimal(5,2) na FiscalConfig",
"fiscal/service.py: pnp_stopa parametar u save_cert_file()",
"fiscal/router.py: pnp_stopa Form param na /cert/upload, pnp_stopa u FiscalHe
tok_po_racunu{
"1_zki": "compute_zki_offline() — RSA-SHA1+MD5, OFFLINE, tiska se odmah",
"2_pnp": "line_base * (pnp_stopa/100) po stavci — 0 ako općina nema PNP",
"3_jir": "background_tasks.add_task(_send_jir_background) — ne blokira blagajnu",
"fallback": "ako nema FiscalConfig → mock ZKI (prefiks ZKI-MOCK::), upozorenje u logu"
}
pnp_logika{
"tko_postavlja": "blagajnik/voditelj JEDNOM pri cert uploadu — stopa po prostoru",
"kako": "POST /api/v1/fiscal/cert/upload pnp_stopa=3 (ili 0, 1.5, 2)",
"izracun": "pnp_iznos = line_base * pnp_stopa/100, zaokruženo na 0.01",
"fina": "PNP NE ulazi u ZKI/JIR — FINA ne zna za PNP, to je komunalni prihod",
"racun_prikaz": "pnp_iznos se prikazuje kao zaseban redak na računu (PDF template — TODO)"
}
pilot_uvjettest-firma pekare: kruh (PDV 5%, PNP 0) vs kava (PDV 25%, PNP 3%) — usporedba sa Synesisom
otvoreno{
"pdf_template": "PNP redak u PDF predlošku — Korak 3 FISKAL",
"jir_retry": "Celery Beat retry za pending JIR (background task ne retryira sam) — Korak 2",
"48h_health": "pending_count/hours u fiscal_health — aktivira se kad jir='' stariji od 48h"
}
dokazano{
"import": "fiscal/router, service, models, pos/router — import ok",
"model_fields": "pnp_stopa na FiscalConfig: True, pnp_iznos na InvoiceLine: True",
"migration": "alembic upgrade 0024 → ok",
"servis": "gunicorn-fenix-v4 restart → active"
}
chain_prevc1205_fiskal_sprint_v1.dok.json