{"id":"c1295","filename":"c1295_joppd_generator.dok.json","weise3_id":"","tip":"implementacija","naziv":"JOPPD XML generator — fenix-v4 konto","kreator":"genesis","datum":"2026-06-08","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"implementacija","naziv":"JOPPD XML generator — fenix-v4 konto","sto_treba":"JOPPD v1-1 XML generator s A=B kontrolom, HR stopama 2026, XSD validacijom","faze":[{"naziv":"XSD analiza","status":"gotovo","sto":"ObrazacJOPPD-v1-1.xsd + tipovi + primjeri procitani. NS: http://e-porezna.porezna-uprava.hr/sheme/zahtjevi/ObrazacJOPPD/v1-1. Stranica A (zbirni) + Stranica B (redak po primatelju). P1-P17 polja mapirani."},{"naziv":"Generator joppd_xml.py","status":"gotovo","sto":"688 linija. JoppdPrimatelj + JoppdObrazac dataclass. izracunaj_placa() helper (bruto->neto, 2026 stope). provjeri_a_b_jednakost() OBAVEZNA kontrola. generiraj_joppd_xml() raises ValueError ako A!=B. validiraj_joppd_xml() putem lxml XSD."},{"naziv":"Router endpointi","status":"gotovo","sto":"POST /api/v4/konto/joppd-xml — prima JoppdObrazacIn JSON, vraca XML file. POST /api/v4/konto/joppd-kalkulacija — query params (bruto, OIB), vraca izracunate vrijednosti."},{"naziv":"Live test","status":"gotovo","sto":"Bruto 1000 EUR, Zagreb: MO1=150, MO2=50, HZZO=165, Porez=48, Prirez=4.80, Neto=747.20. OznakaIzvjesca 26181. A=B: True. XSD validacija: True. Pokrenuto i prikazano."}],"stope_2026":{"mo_i_stup":"15%","mo_ii_stup":"5%","hzzo":"16.5%","zastita_zdravlja":"0.5%","zaposljavanje":"1.7%","osobni_odbitak_mj":"560 EUR","porez_nizа":"20% do 50000 EUR/god","porez_visa":"30% iznad 50000 EUR/god"},"oznaka_izvjesca":"GGDDD — npr. 26181 za 2026-06-30 (dan 181)","a_b_kontrola":"ZAKON — generator odbacuje XML ako A != zbroj B","zakon":"ZAKON_NAD_ZAKONIMA (pokrenuto+prikazano), ZAKON 32","datum":"2026-06-08"}}