Skip to Content

Slovenija – Davčna blagajna

Beta Licenca: LGPL-3 PMISuite/Beta Različica: 18.0

Jezik / Language: English | Slovenščina

Modul povezuje Odoo 18 s slovenskim sistemom FURS/eDavki za davčno potrjevanje računov (davčna blagajna) prek protokola JSON/JWS.

Trenutna različica modula: 18.0.1.0.0. Dokumentacija je bila preverjena glede na trenutno delovno drevo 9. oktobra 2026. Davčno potrjevanje je ločeno od izmenjave e-SLOG.

Za nastavitve po korakih, vsakodnevno delo, ponovno pošiljanje in trenutne omejitve uporabniškega vmesnika glejte ilustrirani uporabniški priročnik v angleščini.

Funkcionalnosti

  • Nastavitve FURS za posamezno družbo in okolje (testno ali produkcijsko).

  • Upravljanje fiskalnih digitalnih potrdil PKCS#12 s preverjanjem veljavnosti.

  • Preverjanje podpisov odgovorov s potrdili za podpisovanje odgovorov; preverjanje je lahko izključeno, opozorilno ali strogo.

  • Posamična in paketna prijava poslovnih prostorov.

  • Nastavitev elektronskih naprav s povezavami na dnevnike in načine plačila ter preverjanjem številčenja računov.

  • Davčno potrjevanje računov in dobropisov s podpisovanjem sporočil JSON/JWS.

  • Shranjevanje zaščitne oznake izdajatelja računa (ZOI) in enkratne identifikacijske oznake računa (EOR) ter prikaz kode QR na izpisu računa.

  • Ročno davčno potrjevanje ter samodejno potrjevanje ob knjiženju ali plačilu.

  • Revizijska sled sporočil FURS s podatki o poti in končni točki, zgoščenimi vrednostmi ter metapodatki prenosa.

  • Načrtovanje ponovnih poskusov z naraščajočimi časovnimi zamiki in izbirno asinhrono obdelavo z modulom queue_job.

  • Usklajenost ponovnih poskusov s končnim stanjem sporočila: ob sprejemu ali zavrnitvi se načrtovani ponovni poskusi odstranijo.

  • Paketno pošiljanje računov in prijav poslovnih prostorov s povezovanjem posameznih odgovorov z izvirnimi zapisi.

  • Čarovnik za iskanje zapisov za naknadno obdelavo in trajno spremljanje postopkov ponovnega pošiljanja.

  • Evidentiranje izida vsake postavke postopka ponovnega pošiljanja, vključno s stanjem rezultata, časovnimi oznakami, EOR, ZOI in napakami.

  • Ločevanje podatkov med družbami ter vloge upravitelja, operaterja in revizorja.

Odvisnosti

  • Moduli Odoo: account, mail, l10n_si2.

  • Knjižnice Python: cryptography, requests.

  • Izbirno: queue_job, če je nameščen in omogočen.

Varnost in pravice dostopa

  • FURS upravitelj nastavitev (FURS Configuration Manager): poln dostop do nastavitev in upravljanja digitalnih potrdil. Ta skupina vključuje skupino FURS upravitelj (FURS Manager). Članstvo zgolj v osnovni skupini upraviteljev ne zagotavlja pravic dostopa do modela nastavitev ali polj z digitalnimi potrdili.

  • FURS operater (FURS Operator): davčno potrjevanje, ponovni poskusi, postopki ponovnega pošiljanja ter delo s poslovnimi prostori in napravami.

  • FURS revizor (FURS Auditor): dostop do revizijske sledi in postopkov ponovnega pošiljanja samo za branje.

Polji za priponko digitalnega potrdila in njegovo geslo sta dostopni le uporabnikom z vlogo FURS upravitelj nastavitev. Pravila dostopa do zapisov preprečujejo vpogled v podatke družb, za katere uporabnik nima dovoljenj.

Vloga upravitelja nastavitev ne vključuje vloge operaterja. Upravitelju nastavitev dodelite tudi vlogo FURS operater, če mora uporabljati čarovnike za prijavo poslovnih prostorov ali naknadno obdelavo in ponovno pošiljanje, ki so namenjeni samo operaterjem. Revizorji imajo pravico dostopa do postopkov ponovnega pošiljanja, vendar je priloženi meni Obnovitveni zagoni (Recovery Runs) viden le operaterjem in upraviteljem nastavitev. Uporabniki računovodstva podedujejo vlogo revizorja.

Nastavitev

  • Družba: preverite identifikacijsko številko za DDV in nastavitve slovenske lokalizacije.

  • Okolje: v nastavitvah FURS izberite testno ali produkcijsko okolje.

  • Fiskalno potrdilo: naložite digitalno potrdilo PKCS#12 in vnesite njegovo geslo.

  • Potrdilo za odgovore: če je preverjanje podpisov omogočeno, naložite potrdilo FURS za podpisovanje odgovorov.

  • Davčna številka dobavitelja: vnesite davčno številko brez predpone SI.

  • Poslovni prostori: ustvarite vsaj en poslovni prostor in ga prijavite z uradno oznako.

  • Elektronske naprave: povežite naprave z dnevniki in poslovnimi prostori ter določite oznake elektronskih naprav.

  • Preverjanje številčenja: za vsako napravo izberite opozorilni ali strogi način.

Nastavitve, poslovni prostori in naprave so dostopni v meniju Računovodstvo → Nastavitve → Slovenija FURS (Accounting → Configuration → Slovenia FURS). Sporočila, neuspešna davčna potrjevanja in postopki ponovnega pošiljanja so v meniju Računovodstvo → Poročanje → Slovenija FURS (Accounting → Reporting → Slovenia FURS). Vidnost menijev je odvisna od zgoraj navedenih uporabniških vlog.

Trenutno dejanje za nastavitve vsebuje nedefinirano vrednost company_id v kontekstu, več dejanj za sezname pa še zahteva tree namesto list za Odoo 18. Navedene poti zato niso vse uporabne brez popravkov. Pred uporabo preverite omejitve navigacije v priročniku in spodnji seznam TODO.

Pri novih nastavitvah so privzeto izbrani testno okolje, časovna omejitev 30 sekund, izključeno samodejno davčno potrjevanje in izključeno preverjanje podpisov odgovorov. Preverjanje podpisov omogočite premišljeno in izberite Opozorilo (Warn) ali Strogo (Strict). Opozorilni način zabeleži napake pri preverjanju in nadaljuje obdelavo; strogi način ob neuspešnem preverjanju prepreči označitev računa kot sprejetega. Privzeti način preverjanja številčenja na napravah je Opozorilo.

Če je v kontekstu podana vrednost furs_environment, se nastavitve za račun izberejo glede na to vrednost. Sicer imajo aktivne produkcijske nastavitve prednost pred testnimi. Ustvarjanje testnih nastavitev zato ne zagotavlja njihove uporabe, če so hkrati aktivne tudi produkcijske nastavitve.

Vzpostavitev testnega okolja FURS

Obrazec nastavitev prikazuje možnosti Test in Produkcija (Production), naslove URL izbranih storitev API ter povezavi do testnih portalov za preverjanje računov in poslovnih prostorov. Privzeta izbira je testno okolje. Naslovi URL so namenjeni samo branju in se določijo glede na izbrano okolje.

FURS uporablja preverjanje pristnosti z digitalnimi potrdili (vzajemni TLS) in podpisana sporočila JSON, ne pa prijave v API z uporabniškim imenom in geslom. Skupno testno uporabniško ime ali geslo, ki bi ga lahko priložili modulu, ne obstaja. Geslo potrdila (Certificate Password) je geslo vašega digitalnega potrdila PKCS#12; pridobite ga skupaj s potrdilom pri izdajatelju. Uporabniški računi za spletni aplikaciji eDavki in miniBlagajna so ločeni od te povezave.

  1. Za razvijalsko testno digitalno potrdilo zaprosite na naslovu sd.fu@gov.si. Navedite naziv družbe, ki razvija rešitev. FURS izda datoteko .p12 za anonimizirano testno identiteto z naključno dodeljeno davčno številko.

  2. V ločeni testni podatkovni zbirki ustvarite nastavitve FURS z izbiro Okolje = Test (Environment = Test). Datoteko naložite v polje Fiskalno potrdilo (Fiscal Certificate) in vnesite njeno geslo. Dodeljeno davčno številko vnesite v polje Davčna številka dobavitelja (Supplier Tax Number). Pri pripravi računov, prijav poslovnih prostorov in izračunu ZOI se uporabi ta številka namesto davčne številke družbe.

  3. Z uradne strani FURS za razvijalce prenesite DavPotRacTEST.cer. Naložite ga v polje Certifikat odgovora (Response Certificate), omogočite preverjanje podpisov in izberite Strogo (Strict), da preizkusite preverjanje odgovorov. Strežniško potrdilo TLS in potrdilo za podpisovanje odgovorov imata različna namena.

  4. Preverite, ali gostitelj Odoo zaupa veljavni verigi digitalnih potrdil SIGOV-CA/SI-TRUST, navedeni na tej strani, in ali lahko vzpostavi povezavo prek vrat TCP 9002. Preverjanje potrdil TLS mora ostati vključeno; ne izključujte ga zaradi napak pri preverjanju zaupanja.

  5. Z gumbom Preizkusi povezavo (Test Connection) izvedite preizkus povezave (Echo). Nato prijavite testni poslovni prostor, nastavite napravo in davčno potrdite vzorčni račun. Sam preizkus povezave ne preveri vsebine računa, številčenja ali prijave poslovnega prostora.

  6. Poslane zapise preverite na spodaj navedenih portalih. Uporabite dodeljeno testno davčno številko ter oznake računa oziroma poslovnega prostora, ki jih zahteva posamezni portal.

Naslovi URL testnih storitev in portalov (tehnična specifikacija FURS, različica 3.2, razdelek 6.1):

Pred prehodom v produkcijsko okolje v produkcijski podatkovni zbirki izberite Okolje = Produkcija (Environment = Production) ter uporabite produkcijsko fiskalno potrdilo z njegovim geslom, dejansko davčno številko zavezanca in veljavno produkcijsko potrdilo za podpisovanje odgovorov (DavPotRac). Produkcijsko okolje uporablja naslov https://blagajne.fu.gov.si:9003 z enakimi potmi API. Produkcijske poslovne prostore prijavite ločeno. Testnih potrdil ni mogoče uporabljati v produkcijskem okolju, produkcijskih potrdil pa ne v testnem.

Testna davčna potrjevanja izvajajte samo v testni podatkovni zbirki. Račun, sprejet v testnem okolju, modul že označi kot sprejetega in ga ob zamenjavi okolja ne pošlje samodejno znova. Sprememba okolja v nastavitvah vpliva tudi na vse nadaljnje zahtevke, ki te nastavitve uporabljajo, vključno s ponovnimi poskusi. Namesto spreminjanja namena nastavitev z obstoječimi sporočili uporabljajte ločene nastavitve in podatkovne zbirke.

Viri, preverjeni 3. oktobra 2026: zgoraj navedena uradna stran za razvijalce in tehnična specifikacija FURS, različica 3.2 (23. marec 2026), razdelki 2, 2.3 in 6.1. FURS priporoča najmanj dva dni stabilnega delovanja v testnem okolju pred prehodom v produkcijo. Digitalna potrdila se lahko zamenjajo; veljavna javna potrdila pridobite pri FURS. Modulu ne prilagajte potrdil ali zasebnih poverilnic.

Postopki davčnega potrjevanja

  • Ročno davčno potrjevanje računa z gumbom Fiskaliziraj zdaj (Fiscalize Now).

  • Samodejno davčno potrjevanje ob knjiženju, če je omogočeno na izbrani napravi ali v nastavitvah.

  • Preverjanje pogojev za potrjevanje ob plačilu pri zapisu polja payment_state; upoštevajo se dnevniki in načini usklajenih plačil ter nastavitev samodejnega potrjevanja na napravi ali v nastavitvah FURS.

  • Podpora davčnemu potrjevanju dobropisov.

  • Ob sprejetem odgovoru se shrani EOR in posodobi stanje računa.

  • Zavrnjeni odgovori in napake ostanejo vidni skupaj s kodami in opisi napak.

Za davčno potrjevanje mora biti račun ali dobropis kupca knjižen, družba mora biti slovenska, nastavitve FURS morajo biti aktivne, naprava in poslovni prostor pa pripravljena za uporabo. Že sprejeti računi se ne pošiljajo znova. Pri samodejnih postopkih se prestrežene uporabniške napake zabeležijo v razpravi na zapisu. Po knjiženju ali plačilu preverite stanje davčnega potrjevanja in izid sporočila.

Sprožilni mehanizem ob plačilu je odvisen od izrecnega zapisa prek ORM, ki vsebuje polje payment_state; ni povratni klic ob usklajevanju. Zgolj sprememba izračunanega stanja plačila ne dokazuje, da se je ta mehanizem izvedel. Ustrezen dnevnik ali način plačila lahko izpolni pogoje tudi pri delnih plačilih ali plačilih z različnimi načini; davčno potrjevanje ni omejeno na v celoti plačane račune. Pri dejanskem postopku obdelave plačila preverite zabeleženi sprožilec in rezultat davčnega potrjevanja.

Paketna obdelava in ponovno pošiljanje

  • Paketna dejanja za račune in poslovne prostore pošiljajo združene zapise ter posamezne odgovore povežejo z ustreznimi računi ali poslovnimi prostori.

  • Postopki ponovnega pošiljanja omogočajo načrtovanje in izvedbo posamičnega ali paketnega ponovnega pošiljanja.

  • Čarovnik za naknadno obdelavo omogoča poskusno načrtovanje brez pošiljanja in odpre zapise, ki izpolnjujejo pogoje.

  • Zaključen postopek ponovnega pošiljanja evidentira izide obdelave. Sprejem je treba preveriti pri vsaki postavki posebej; samo pošiljanje ga ne dokazuje.

Samodejni ponovni poskusi so predvideni pri prekoračitvi časovne omejitve, napakah povezave in napakah HTTP 5xx, ob upoštevanju največjega števila poskusov in načrtovanega časa izvedbe. Časovni zamiki znašajo 5, 15, 60 in nato 1440 minut. Priloženo načrtovano opravilo za ponovne poskuse se izvaja vsakih 15 minut, zato načrtovani čas ne pomeni natančnega časa izvedbe. Ob sprejemu ali zavrnitvi se načrtovani ponovni poskusi odstranijo.

Potek ponovnega pošiljanja

Postopki so namenjeni revizijskemu pregledu in nadzorovanemu ponovnemu pošiljanju:

  • V čarovniku za naknadno obdelavo filtrirajte račune oziroma sporočila po datumu, napravi, poslovnem prostoru in omejitvah ponovnih poskusov, nato ustvarite postopek ponovnega pošiljanja.

  • Zaradi sledljivosti postopki evidentirajo vsako izbrano postavko, razlog za preskok in nastalo sporočilo, vključno z izrecnim stanjem rezultata in časovnimi oznakami za posamezno postavko.

  • Način obdelave je lahko dry_run (samo načrtovanje), single (posamična obdelava) ali batch (združevanje po nastavitvah, napravi in poslovnem prostoru).

  • Sprejeti zapisi se preskočijo; sporočila, za katera ponovni poskus ni dovoljen, se ohranijo z jasno navedenim razlogom.

  • Rezultati posodobijo število sprejetih, zavrnjenih, neuspešnih in preskočenih postavk. Vidni so operaterjem in revizorjem, tudi kadar delni odgovori na paketno pošiljanje vsebujejo različne izide.

Preizkusi s povezavo na FURS

Preizkusi z dejanskimi klici storitev FURS se privzeto preskočijo. Trenutni pogoj za njihov zagon sprejme vsako neprazno vrednost spremenljivke L10N_SI_FURS_LIVE_TESTS, tudi 0. Za izključitev zunanjih klicev spremenljivke ne nastavite; za zavesten vklop jo nastavite na 1. Ti preizkusi pošiljajo zahtevke v testno storitev FURS, vključno s prijavami poslovnih prostorov in računi.

Okoljske spremenljivke, uporabljene v teh preizkusih:

  • L10N_SI_FURS_LIVE_TESTS=1

  • L10N_SI_FURS_CERT_PATH=/path/to/test-certificate.p12

  • L10N_SI_FURS_CERT_PASSWORD=...

  • L10N_SI_FURS_RESPONSE_CERT_PATH=/path/to/furs-response-cert.pem

  • L10N_SI_FURS_SUPPLIER_TAX_NUMBER=...

  • L10N_SI_FURS_COMPANY_VAT=...

  • L10N_SI_FURS_PREMISE_ID=...

  • L10N_SI_FURS_DEVICE_ID=...

Vsak preizkus preveri svoj nabor obveznih spremenljivk. Preizkus povezave (Echo) zahteva fiskalno potrdilo, geslo in davčno številko dobavitelja; preizkusi računov dodatno zahtevajo oznaki poslovnega prostora in naprave. Identifikacijska številka družbe za DDV je izbirna nadomestna vrednost. Potrdilo za podpisovanje odgovorov je potrebno pri preizkusu preverjanja podpisov, ne pa pri vseh preizkusih z dejanskimi klici.

Poverilnic in digitalnih potrdil nikoli ne shranjujte v repozitorij.

Preverjanje za razvijalce

Vsak razred Python ima svojo izvorno datoteko, tudi servisne izjeme in testni nadomestni objekti. Imena testnih datotek sledijo osnovnim imenom izvornih datotek: test_furs_config.py na primer preverja models/furs_config.py. Pripone za posamezne scenarije ločujejo paketne in varnostne preizkuse ter izbirne preizkuse z zunanjimi storitvami. Nadomestni objekti za večkratno uporabo so v imeniku tests/doubles/. Model postopka ponovnega pošiljanja in model njegovih postavk ter njuni preizkusi se vzdržujejo ločeno.

Metode imajo dokumentiran namen in pomembne prehode med stanji. Komentarji v kodi pojasnjujejo povezovanje paketnih odgovorov, ohranjanje revizijske sledi, začasne datoteke TLS in izbirne razširitvene točke čakalne vrste. Ozko omejene oznake za preverjanje kode ohranjajo namerne razširitvene točke Odoo in dinamično dodane metode; preverjanja za modul kot celoto ne izključijo.

Za celoten modul izvedite nastavljena preverjanja Ruff in preglede PyCharm ter uporabite orodje PMIVerse run_lint_addon.sh --addon <addon-path> --check. Za merjenje pokritosti s preizkusi na omejenem naboru modulov in z uporabo podatkovne zbirke uporabite run_pytest_repo.sh --addons <addon-path>. Z možnostjo --cov-branch preverite tudi nepreizkušene veje odločanja, ne le nepokritih vrstic. Preizkusi z dejanskimi klici FURS naj ostanejo izključeni, razen če so zunanji klici izrecno predvideni.

Znane omejitve

  • Nekatera dejanja menijev in stari pogoji vidnosti niso združljivi z Odoo 18. Vidnost gumba ne nadomesti strežniškega preverjanja pogojev za izvedbo.

  • Zaporedje naprave preverja le predpono in pripono; ne ustvarja številk računov in ne dokazuje neprekinjenega ali zakonsko ustreznega številčenja.

  • Dobropisi uporabljajo absolutne zneske brez sklica na prvotni račun. Davčni številki operaterja in dobavitelja programske opreme uporabljata nastavljeno številko dobavitelja; ločeni nastavitvi identitet blagajnika in dobavitelja programske opreme nista na voljo.

  • Davčni podatki se združijo iz knjiženih davčnih postavk po številčni stopnji z absolutnimi osnovami in zneski. Kategorije UNECE in klavzule e-SLOG se ne preslikajo v zahtevek FURS. Preverite oprostitve, obrnjeno davčno obveznost in nestandardne davčne nastavitve.

  • Časovne oznake zahtevkov uporabljajo časovni pas konteksta uporabnika. Za slovenski postopek nastavite Europe/Ljubljana in preverite tudi uporabnike opravil v čakalni vrsti.

  • Sprejeta sporočila so zaščitena pred spremembami uporabnikov brez vloge upravitelja, niso pa nespremenljiva za upravitelje nastavitev ali superuporabnike. Napaka prenosa pri ročnem zahtevku lahko razveljavi ustvarjanje lokalnega revizijskega sporočila; po napakah preverite dejansko shranjene podatke.

  • Omejitev enoličnosti nastavitev velja tudi za arhivirane zapise iste družbe in okolja. V testu sprejeti račun se pozneje ne pošlje samodejno v produkcijo.

  • Paketno obdelavo je treba preveriti glede na najnovejšo različico specifikacije, ki jo uporablja storitev FURS.

  • Preizkusi z dejanskimi klici zahtevajo testne poverilnice oziroma potrdila FURS.

  • Obdelava prek čakalne vrste je izbirna.

  • Pri uvedbi v produkcijo je treba določiti način preverjanja podpisov odgovorov in naložiti ustrezno potrdilo za podpisovanje odgovorov.

TODO

  • Popraviti kontekst dejanja nastavitev, stare vrste seznamov in pogoje vidnosti ter preveriti menije in gumbe za posamezne vloge.

  • Preveriti ali nadomestiti sprožilec izrecnega zapisa payment_state pri dejanskem postopku usklajevanja plačil, preden se zanesete na samodejno davčno potrjevanje ob plačilu.

  • Zagotoviti popolne zahtevke za dobropise in popravke ter ločeni identiteti operaterja in dobavitelja programske opreme za predvideno produkcijsko uporabo.

  • Pred produkcijskim sprejemom preveriti paketne zahtevke, dejanske klice FURS, izpise, ponovne poskuse in obnovitvene postopke s predvidenimi potrdili in posli.

Kontrolni seznam pred uvedbo v produkcijo

  • Veljavnost testnega digitalnega potrdila je preverjena.

  • Poslovni prostor je prijavljen v testnem okolju.

  • Vzorčni račun je davčno potrjen v testnem okolju.

  • Če je vključeno strogo preverjanje, je naloženo potrdilo za podpisovanje odgovorov.

  • Pravila številčenja računov so odobrena.

  • Pravila za sprožitev davčnega potrjevanja ob plačilu so odobrena.

  • Postopek varnostnega kopiranja in obnovitve je preizkušen.

Prijava napak

Napake se spremljajo v sistemu za prijavo težav repozitorija PMISuite. Pred prijavo preverite, ali je bila težava že prijavljena. Navedite različici modula in Odoo, korake za ponovitev težave ter pričakovani in dejanski rezultat. Uporabite izmišljene primere in odstranite občutljive podatke.

Avtorstvo in vzdrževanje

Avtorji

Sodelujoči

  • Matjaž Mozetič

Vzdrževalci

LUXIM MATMOZ

Trenutni vzdrževalec:

sysadminmatmoz

Luxim je neodvisna družba za raziskave, razvoj in uvedbo rešitev, usmerjena v reševanje zahtevnih problemov v ekosistemu Odoo.

Odoo Community Association

Luxim je aktiven član združenja OCA (Odoo Community Association).