{"id":985,"date":"2025-11-10T12:30:50","date_gmt":"2025-11-10T11:30:50","guid":{"rendered":"https:\/\/inf.com.hr\/?p=985"},"modified":"2025-11-10T12:30:50","modified_gmt":"2025-11-10T11:30:50","slug":"raverus-open-source","status":"publish","type":"post","link":"https:\/\/inf.com.hr\/index.php\/2025\/11\/10\/raverus-open-source\/","title":{"rendered":"Raverus open-source"},"content":{"rendered":"\n<h1 class=\"wp-block-heading has-large-font-size\">\ud83d\udcd8 <strong>FISKAL \u2013 UPUTE ZA KORI\u0160TENJE<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\">\ud83e\udde9 <strong>Uvod<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Program <strong>Fiskal<\/strong> bazira se na Raverusevom open\u2011source modulu za komunikaciju s CIS serverom Porezne uprave. CIS svakom ra\u010dunu dodjeljuje <strong>JIR<\/strong> \u2013 jedinstveni identifikator koji se mora ispisati na ra\u010dunu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Program radi u pozadini kao <strong>systray ikona<\/strong> i slu\u017ei kao posrednik izme\u0111u POS sustava i Porezne uprave.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\">\u2705 <strong>Kratke upute za korisnike<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">\ud83d\udd0d <strong>Kada provjeriti ra\u010dun?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nakon svakog fiskaliziranog ra\u010duna provjerite:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ima li ra\u010dun <strong>JIR<\/strong><\/li>\n\n\n\n<li>je li JIR razli\u010dit od prethodnog ra\u010duna<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">\u2757 <strong>Ako JIR nedostaje<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ra\u010dun treba ponovno fiskalizirati:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud83d\udc49 <strong>Klik na gumb \u201cFiskalizacija\u201d<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Program \u0107e pokrenuti cijeli proces iznova.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">\ud83d\udeab <strong>Va\u017eno<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ne bri\u0161ite fiskalizirane ra\u010dune<\/li>\n\n\n\n<li>ako se problem ponavlja \u2192 kontaktirajte podr\u0161ku<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\">\ud83d\udd33 <strong>QR kod<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>obavezan od 2021.<\/li>\n\n\n\n<li>program ga generira automatski<\/li>\n\n\n\n<li>prije fiskalizacije koristi <strong>ZKI<\/strong>, nakon fiskalizacije <strong>JIR<\/strong><\/li>\n\n\n\n<li>povremeno ga skenirajte radi provjere<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\">\ud83d\udee0\ufe0f <strong>TEHNI\u010cKA VERZIJA (za podr\u0161ku i napredne korisnike)<\/strong><\/h1>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\">\ud83d\udd10 <strong>Certifikati (.pfx \/ .p12)<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">\ud83d\udce6 <strong>\u0160to su .pfx i .p12 datoteke?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Oba formata su PKCS#12 i sadr\u017ee:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>certifikat<\/li>\n\n\n\n<li>privatni klju\u010d<\/li>\n\n\n\n<li>lanac certifikata<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Razlika je samo u ekstenziji.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">\ud83d\udcc1 <strong>Gdje instalirati certifikat?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Preporu\u010deno:<\/strong> \ud83d\udc49 <code>LocalMachine\\My<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Izbjegavati:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Desktop<\/li>\n\n\n\n<li>Downloads<\/li>\n\n\n\n<li>slanje certifikata mailom bez enkripcije<\/li>\n\n\n\n<li>lozinke u .txt datotekama<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\">\u2699\ufe0f <strong>PowerShell \u2013 preporu\u010deni na\u010din za uvoz i izvoz certifikata<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PowerShell je pouzdaniji od MMC\u2011a jer:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>uvijek uvozi certifikat s exportable klju\u010dem<\/li>\n\n\n\n<li>izvoz je pouzdan<\/li>\n\n\n\n<li>radi i na serverima bez GUI\u2011ja<\/li>\n\n\n\n<li>izbjegava MMC bugove<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\ud83e\uddf0<\/strong><strong> PowerShell primjer \u2013 uvoz i izvoz certifikata:<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code># Putanja do originalnog .p12 certifikata\n$p12Path = \"D:\\Cert\\FISKAL_CERT.p12\"\n\n# Lozinka za .p12 certifikat\n$p12Password = ConvertTo-SecureString -String \"Lozinka123\" -Force -AsPlainText\n\n# Uvoz certifikata u LocalMachine\\My s exportable klju\u010dem\n$cert = Import-PfxCertificate -FilePath $p12Path -CertStoreLocation \"Cert:\\LocalMachine\\My\" -Password $p12Password -Exportable\n\n# Putanja za izvoz .pfx fajla\n$pfxPath = \"D:\\Cert\\FISKAL_EXPORT.pfx\"\n\n# Lozinka za novi .pfx fajl\n$pfxPassword = ConvertTo-SecureString -String \"Lozinka123\" -Force -AsPlainText\n\n# Izvoz certifikata u .pfx\nExport-PfxCertificate -Cert $cert -FilePath $pfxPath -Password $pfxPassword<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\">\u2699\ufe0f <strong>Osnovno pode\u0161avanje programa<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>certifikat mora biti instaliran ili spremljen na disk<\/li>\n\n\n\n<li>nakon pokretanja pojavljuje se systray ikona<\/li>\n\n\n\n<li>prvi put: desni klik \u2192 Namje\u0161tanja \u2192 kartica <strong>System<\/strong><\/li>\n\n\n\n<li>preporuka: fiskalizirati jedan probni ra\u010dun<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Request \/ Response datoteke<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>request.txt<\/strong> \u2013 POS puni<\/li>\n\n\n\n<li><strong>response.txt<\/strong> \u2013 POS \u010dita<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f POS mora obrisati response file nakon \u010ditanja.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Log folder<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nije obavezan<\/li>\n\n\n\n<li>preporu\u010duje se kod nestabilnih mre\u017ea<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Timeout<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nestrpljivi: 2\u20133 s<\/li>\n\n\n\n<li>strpljivi: 9\u201310 s<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f manji timeout = ve\u0107a \u0161ansa za gre\u0161ku<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Polling period<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0 s \u2192 .NET watcher<\/li>\n\n\n\n<li>1\u20132 s \u2192 mre\u017eni diskovi<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Offline mode<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>ne \u0161alje podatke na CIS<\/li>\n\n\n\n<li>vra\u0107a samo ZKI<\/li>\n\n\n\n<li>ra\u010duni se \u0161alju kad internet proradi<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">\u26a0\ufe0f ra\u010dun nije fiskaliziran dok se ne po\u0161alje<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Vi\u0161estruke instance<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Program sprje\u010dava pokretanje vi\u0161e instanci.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Response file \u2013 struktura<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Format: <code>JIR;UUID;ZKI;KontrolniBroj<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>JIR \u2013 36 znakova<\/li>\n\n\n\n<li>UUID \u2013 36 znakova<\/li>\n\n\n\n<li>ZKI \u2013 32 znaka<\/li>\n\n\n\n<li>kontrolni broj \u2013 20 znakova<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\">\u2757 <strong>Gre\u0161ke u response fileu<\/strong><\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>ZKI postoji, JIR ne<\/strong> \u2192 ra\u010dun se mo\u017ee ispisati, ali ga treba ponovno fiskalizirati<\/li>\n\n\n\n<li><strong>nema ni ZKI\u2011ja<\/strong> \u2192 ra\u010dun se <strong>ne smije<\/strong> ispisati<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>To\u010dan datum i vrijeme<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">CIS odbija ra\u010dune s krivim timestampom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Ostalo<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>program je 32\u2011bitni<\/li>\n\n\n\n<li>radi na svim Windowsima<\/li>\n\n\n\n<li>koristi .NET 4.5<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\">\ud83d\udccc <strong>FISKALIZACIJA \u2013 TEHNI\u010cKI OPIS <\/strong>(za developere i integratore)<\/h1>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>1. Priprema okru\u017eenja<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>bri\u0161u se <code>response.txt<\/code> i <code>tmp_request.txt<\/code><\/li>\n\n\n\n<li>postavljaju se po\u010detne vrijednosti (TIP_R, OIB_DJELATNIKA)<\/li>\n\n\n\n<li>definiraju se putanje za radne datoteke (<code>request.txt<\/code>, <code>tmp_request.txt<\/code>, <code>response.txt<\/code>)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>2. Provjera prethodne fiskalizacije<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ako ra\u010dun ve\u0107 ima <strong>JIR<\/strong>, fiskalizacija se ne ponavlja.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>3. Generiranje request datoteke<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>kreira se privremena datoteka <code>tmp_request.txt<\/code><\/li>\n\n\n\n<li>upisuje se svih <strong>12 redova<\/strong> u fiksnom formatu<\/li>\n\n\n\n<li>datoteka se zatvara<\/li>\n\n\n\n<li>radi se <strong>atomski RENAME<\/strong> \u2192 <code>request.txt<\/code><\/li>\n\n\n\n<li>ako rename ne uspije \u2192 radi se retry<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Svrha:<\/strong> sprje\u010davanje o\u0161te\u0107enih datoteka i problema s antivirusom ili sporim diskom.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>4. \u010cekanje na response datoteku<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>do <strong>15 poku\u0161aja<\/strong><\/li>\n\n\n\n<li>svaki poku\u0161aj \u010deka do <strong>4 sekunde<\/strong><\/li>\n\n\n\n<li>unutar \u010dekanja radi se polling svakih 10\u201350 ms<\/li>\n\n\n\n<li>ako <code>response.txt<\/code> ne stigne \u2192 ide se u sljede\u0107i poku\u0161aj<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Svrha:<\/strong> otpornost na spor disk, antivirusne lockove i spor start Raverusa.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>5. Otvaranje response datoteke<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ako <code>response.txt<\/code> postoji:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>poku\u0161ava se otvoriti do <strong>20 puta<\/strong><\/li>\n\n\n\n<li>izme\u0111u poku\u0161aja kratka pauza<\/li>\n\n\n\n<li>\u010dita se <strong>zadnji neprazni redak<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Svrha:<\/strong> rje\u0161ava antivirusne lockove, BOM i nepotpune zapise.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>6. Parsiranje odgovora<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Format: <code>JIR;UUID;ZKI<\/code><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>polja se prepoznaju prema <code>;<\/code><\/li>\n\n\n\n<li>provjerava se duljina i valjanost<\/li>\n\n\n\n<li>ako polja nisu ispravna \u2192 retry<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>7. Upis u bazu<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ako je parsiranje uspje\u0161no:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>upisuju se <strong>JIR<\/strong>, <strong>UUID<\/strong>, <strong>ZKI<\/strong><\/li>\n\n\n\n<li>procedura zavr\u0161ava uspje\u0161no<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ako nije &#8211; ide se u sljede\u0107i retry ciklus.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>8. Retry mehanizam<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Do <strong>5 kompletnih ciklusa<\/strong>, svaki uklju\u010duje:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>brisanje starih datoteka<\/li>\n\n\n\n<li>generiranje novog requesta<\/li>\n\n\n\n<li>\u010dekanje responsea<\/li>\n\n\n\n<li>parsiranje<\/li>\n\n\n\n<li>upis<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ako svih 5 poku\u0161aja ne uspije \u2192 korisnik dobiva jasnu poruku, ra\u010dun ostaje nefiskaliziran.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Ukupno vrijeme<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>jedan ciklus: do <strong>4 sekunde \u010dekanja<\/strong><\/li>\n\n\n\n<li>maksimalno: <strong>5 \u00d7 4 = 20 sekundi<\/strong> (ovisno o konfiguraciji mo\u017ee biti i do 50 sekundi &#8211; ispravno)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-medium-font-size\"><strong>Svrha retry mehanizma<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Retry rje\u0161ava:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>antivirusne lockove<\/li>\n\n\n\n<li>spor disk i Windows caching<\/li>\n\n\n\n<li>prazne ili nepotpune response datoteke<\/li>\n\n\n\n<li>neuspjeli rename<\/li>\n\n\n\n<li>spor start Raverusa<\/li>\n\n\n\n<li>sporadi\u010dne gre\u0161ke u komunikaciji<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Retry ne produ\u017euje \u010dekanje \u2014 resetira cijeli ciklus.<\/strong><strong><\/strong><\/p>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\">\ud83d\udd27 <strong>PROMJENE U FISKALIZACIJI I QR KODU <\/strong>(za developere i integratore)<\/h1>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\"><strong>1. Pobolj\u0161anja u fiskalizaciji<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udee1<\/strong><strong> Sprje\u010davanje dvostruke fiskalizacije<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Program provjerava postoji li JIR prije slanja. Ako postoji \u2192 fiskalizacija se ne ponavlja.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\u2699<\/strong><strong> Stabilno generiranje request datoteke<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Umjesto direktnog pisanja u <code>request.txt<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>kreira se privremena datoteka<\/li>\n\n\n\n<li>upisuje se svih 12 redova<\/li>\n\n\n\n<li>radi se atomska zamjena (RENAME)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nema o\u0161te\u0107enih datoteka<\/li>\n\n\n\n<li>antivirus i spor disk vi\u0161e ne prekidaju proces<\/li>\n\n\n\n<li>fiskalizacija je pouzdanija<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udd01<\/strong><strong> Napredni retry sustav za \u010dekanje odgovora<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>do <strong>15 poku\u0161aja<\/strong><\/li>\n\n\n\n<li>svaki poku\u0161aj \u010deka do <strong>4 sekunde<\/strong><\/li>\n\n\n\n<li>kratke pauze izme\u0111u poku\u0161aja<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>radi na sporim ra\u010dunalima<\/li>\n\n\n\n<li>radi na mobilnom internetu<\/li>\n\n\n\n<li>radi kad antivirus blokira datoteku<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83e\uddf1<\/strong><strong> Retry za file-lock (antivirus fix)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ako antivirus zaklju\u010da <code>response.txt<\/code>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>program poku\u0161ava otvoriti datoteku do <strong>20 puta<\/strong><\/li>\n\n\n\n<li>izme\u0111u poku\u0161aja kratka pauza<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nema vi\u0161e gre\u0161aka \u201cdatoteka je u upotrebi\u201d<\/li>\n\n\n\n<li>fiskalizacija ne puca zbog antivirusa<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udce4<\/strong><strong> Pouzdano \u010ditanje odgovora<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Novi kod:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u010dita sve retke<\/li>\n\n\n\n<li>uzima zadnji neprazni red<\/li>\n\n\n\n<li>provjerava strukturu i duljinu<\/li>\n\n\n\n<li>provjerava JIR, UUID i ZKI<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>nema pogre\u0161nog parsiranja<\/li>\n\n\n\n<li>radi i s praznim redcima<\/li>\n\n\n\n<li>radi i ako antivirus doda BOM<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udd0d<\/strong><strong> Dinami\u010dko parsiranje<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Polja se prepoznaju prema <code>;<\/code>, bez fiksnih pozicija.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>otpornost na promjene formata<\/li>\n\n\n\n<li>nema krivo izrezanih polja<\/li>\n\n\n\n<li>nema praznih vrijednosti<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\uddc4<\/strong><strong> Sigurniji upis u bazu<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Upis se radi samo ako su svi podaci valjani.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>sprje\u010dava upis u pogre\u0161an zapis<\/li>\n\n\n\n<li>stabilniji rad baze<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udce2<\/strong><strong> Jasna poruka ako fiskalizacija ne uspije<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ako svih 5 ciklusa padne:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>korisnik dobiva jasnu poruku<\/li>\n\n\n\n<li>ra\u010dun ostaje nefiskaliziran<\/li>\n\n\n\n<li>ni\u0161ta se ne upisuje u bazu<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\"><strong>2. Pobolj\u0161anja u generiranju QR koda<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udd11<\/strong><strong> QR kod je valjan tek nakon fiskalizacije<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Prije fiskalizacije QR kod koristi <strong>ZKI<\/strong>. Nakon fiskalizacije koristi <strong>JIR<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udd04<\/strong><strong> QR kod sada koristi JIR (umjesto ZKI)<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Za fiskalizirane ra\u010dune QR kod koristi:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&amp;jir=<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Za nefiskalizirane ra\u010dune:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>&amp;zki=<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>QR kod je potpuno uskla\u0111en s pravilima fiskalizacije<\/li>\n\n\n\n<li>fiskalizirani ra\u010duni se mogu provjeriti na Poreznoj<\/li>\n\n\n\n<li>QR kod se automatski prilago\u0111ava statusu ra\u010duna<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udcb6<\/strong><strong> Format iznosa ostaje nepromijenjen<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Primjeri:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>5,00<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>36,75<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>120,00<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\ud83d\udcc5<\/strong><strong> Format datuma i vremena ostaje nepromijenjen<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Primjer:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>04.05.2026_11:44<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading has-medium-font-size\"><strong>\u267b<\/strong><strong> Automatska regeneracija QR koda<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">QR kod se generira pri svakom ispisu. Ako je ra\u010dun naknadno fiskaliziran \u2192 QR se automatski regenerira.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Prednosti:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>korisnik ne mo\u017ee ispisati stari QR kod<\/li>\n\n\n\n<li>QR je uvijek ispravan<\/li>\n\n\n\n<li>nema ru\u010dnog brisanja ili ponovnog generiranja<\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading has-large-font-size\"><strong>Sa\u017eetak promjena<\/strong><\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li>fiskalizacija je stabilnija i otpornija<\/li>\n\n\n\n<li>sprije\u010dena dvostruka fiskalizacija<\/li>\n\n\n\n<li>uveden napredni retry sustav<\/li>\n\n\n\n<li>upis JIR\/UUID\/ZKI je sigurniji<\/li>\n\n\n\n<li>QR kod koristi JIR nakon fiskalizacije<\/li>\n\n\n\n<li>QR kod se automatski regenerira<\/li>\n\n\n\n<li>cijeli proces je br\u017ei, pouzdaniji i sigurniji<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\ud83d\udcd8 FISKAL \u2013 UPUTE ZA KORI\u0160TENJE \ud83e\udde9 Uvod Program Fiskal bazira se na Raverusevom open\u2011source modulu za komunikaciju s CIS serverom Porezne uprave. CIS svakom ra\u010dunu dodjeljuje JIR \u2013 jedinstveni identifikator koji se mora ispisati na ra\u010dunu. Program radi u pozadini kao systray ikona i slu\u017ei kao posrednik izme\u0111u POS sustava i Porezne uprave. \u2705 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-985","post","type-post","status-publish","format-standard","hentry","category-alati-i-preporuke"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/posts\/985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/comments?post=985"}],"version-history":[{"count":0,"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/posts\/985\/revisions"}],"wp:attachment":[{"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/media?parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/categories?post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inf.com.hr\/index.php\/wp-json\/wp\/v2\/tags?post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}