Skip to Content

Odoo 19 brojevi dokumenata iz prefiksa, godine i brojača – modul document_number_prefix_year i zamka pri istovremenom kreiranju

3. novembar 2026 | Odoo 19 Community | Sopstveni razvoj
3. новембар 2026. by
Odoo 19 brojevi dokumenata iz prefiksa, godine i brojača – modul document_number_prefix_year i zamka pri istovremenom kreiranju

Odoo 19 modul document_number_prefix_year: brojevi dokumenata iz prefiksa, godine i brojača

„AN26000001“ govori više od „S00001“: to je ponuda, potiče iz 2026. i prva je. Mnoga preduzeća, pre svega ona koja prelaze sa starijeg sistema na Odoo, žele da zadrže upravo takve brojeve dokumenata. Sam Odoo numeriše ponude, naloge i otpremnice sopstvenim nizovima (S00001, WH/OUT/00001, P00001), a fakture prefiksom dnevnika i godinom (INV/2026/00001).

Zato smo napisali modul Document Numbering by Prefix and Year (document_number_prefix_year) za Odoo 19. Dostupan je kao slobodan softver pod LGPL-3 licencom na GitHubu:

github.com/Alex0176/odoo-document-number-prefix-year

Unapred iskrena napomena: Ovaj modul u Biricon IT Services ne koristimo. Objavljujemo ga zato što je gotov, dokumentovan i opremljen testovima i drugima može uštedeti posao. Ko ga koristi, trebalo bi da pročita odeljke o ograničenjima i Testovi .

Šema numerisanja

Svaki broj se sastoji od tri dela: prefiksa po vrsti dokumenta, godine i brojača sa fiksnim brojem cifara. Prefiks, format godine (26 ili 2026) i broj cifara podešavate po firmi pod Podešavanja → Numerisanje dokumenata.

Sastav broja dokumenta AN26000001 iz prefiksa, godine i brojača, sa tabelom vrsta dokumenata

Obrađuju se ponude, narudžbine klijenata, fakture klijentima i knjižna odobrenja, otpremnice, prijemi robe i nabavne narudžbine. Prefiksi na slici su samo primeri: AN, AU, RE, GU, LI, WE, BE. Ko ostavi prefiks praznim, za tu vrstu dokumenta zadržava standardno numerisanje Odooa. Modul dakle ne radi ništa dok ga ne podesite.

Kako se brojevi ponašaju

  • Svake godine iznova. Brojač sa promenom godine ponovo počinje od 1.
  • Nastavak posle uvezenih brojeva. Modul traži najviši postojeći broj istog prefiksa i godine, bez obzira na to koliko je dug. Ako se iz starog sistema u bazi nalazi AN26119, sledeća ponuda glasi AN26000120. To je razlog zašto je modul pogodan za prelaske: stari dokumenti se uvoze sa originalnim brojevima, a novi dokumenti se bez prekida nadovezuju.
  • Novi broj narudžbine pri potvrdi. Potvrđena ponuda po želji dobija broj iz niza narudžbina. Broj ponude ostaje sačuvan u polju Broj ponude na narudžbini i vidljiv je u obrascu, listi i pretrazi.
  • Fakture pri knjiženju. Fakture klijentima i knjižna odobrenja dobijaju svoj broj tek pri knjiženju, a ne pri kreiranju. Obrisani nacrti zato ne ostavljaju prazninu. Godina potiče iz datuma fakture: faktura od 30.12.2025. koja se knjiži 2.1.2026. nosi broj RE25….
  • Sve ostalo ostaje. Fakture dobavljača, uplate, knjiženja i proizvodni nalozi zadržavaju standardne nizove Odooa. Postojeći nazivi se nikada ne prepisuju, čak ni ako modul ponovo isključite.

Osetljivi deo: dva korisnika istovremeno

Sopstvena dodela brojeva izgleda jednostavno: naći najviši broj, dodati jedan. Nije tako čim dva korisnika u istom trenutku kreiraju ponudu. Oba čitaju „najviši broj = 0“, oba dodeljuju AN26000001. Odoo za to kod svojih nizova ima sekvence baze podataka. Kod sopstveno izgrađenog broja to nedostaje, a za ponude i nabavne narudžbine u Odoou pritom ne postoji provera jedinstvenosti naziva: dva dokumenta sa istim brojem se jednostavno sačuvaju.

Očigledna zaštita je blokada. Modul po firmi, prefiksu i godini uzima blokadu baze podataka (PostgreSQL Advisory Lock) koja traje do kraja transakcije. Drugi korisnik čeka dok prvi ne završi. Ali to nije dovoljno, što smo otkrili pokusom na kopiji produktivne baze podataka:

Vremenski tok dva korisnika: bez drugog čitanja oba dodeljuju isti broj, sa drugim čitanjem drugi dobija sledeći broj

Odoo radi sa nivoom izolacije REPEATABLE READ. Stanje baze podataka koje transakcija vidi zamrzava se pri njenom prvom upitu. Korisnik B to stanje već ima, pre nego što A završi. Ako B zatim čeka na blokadu i dobije je, sa svojim starim stanjem čita „najviši broj = 0“ i dodeljuje broj po drugi put. Blokada je uredila redosled, ali nije osvežila znanje.

Rešenje je drugo čitanje preko sopstvenog, kratkotrajnog pristupa bazi podataka, koji vidi sve već potvrđene redove. Veća od dve vrednosti pobeđuje. Prvo čitanje ostaje potrebno, jer samo ono poznaje brojeve koje ista transakcija već dodelila, ali još nije potvrdila, na primer pri uvozu više dokumenata odjednom.

Ovo smo proverili sa dve transakcije kod kojih je druga dokazano povukla svoje stanje pre commita prve, a zatim čekala na blokadu. Bez drugog čitanja oba naloga su dobila isti broj, sa njim brojeve 1 i 2.

Važno za procenu: Ovaj pokus je ručna provera. On nije deo automatskih testova, jer su za to potrebne dve prave veze sa bazom podataka koje Odoo testno okruženje (jedna jedina transakcija po testu) ne obezbeđuje.

Tehnička realizacija

DokumentTačka priključenja
Ponudasale.order.create, kada je naziv prazan, / ili New
Narudžbina klijentasale.order.action_confirm, pre standardne potvrde
Faktura, knjižno odobrenjeaccount.move._set_next_sequence, poziva se pri knjiženju
Otpremnica, prijem robestock.picking.create prema vrsti operacije
Nabavna narudžbinapurchase.order.create
  • Brojač. Najviši broj pronalazi regularni izraz (^<Stamm>([0-9]{1,15})$, koren se maskira) po firmi, uključujući nazive bez firme.
  • Fakture. _set_next_sequence upisuje naziv i poziva _compute_split_sequence, kako bi logika sekvenci Odooa (prefiks, broj, prepoznavanje godine za sledeću fakturu dnevnika) ostala usklađena.
  • Podešavanja. Polja firme document_number_* odražavaju se u res.config.settings. Podešavanja odbijaju prefikse sa razmakom ili cifrom na kraju.
  • Prevod. Nemački prevod je uključen.

Instalacija i podešavanje

  1. Folder document_number_prefix_year staviti u putanju dodataka.
  2. Osvežiti listu aplikacija, instalirati modul. Preduslovi su Prodaja, Nabavka, Magacin i Računovodstvo.
  3. Pod Podešavanja → Numerisanje dokumenata uneti prefikse, format godine i broj cifara.
  4. Prvo isprobati na kopiji. Broj dokumenta se kasnije ne može automatski vratiti unazad, a kod faktura za broj je vezana obaveza čuvanja i provere.

ograničenjima

Šest ograničenja modula: korpe za kupovinu, format godine, jedna serija po firmi, pravila za prefikse, malo testova, samo navedeni dokumenti

  • Ponude se numerišu pri kreiranju. Obrisane ili stornirane ponude ostavljaju praznine. Isto važi za svaku narudžbinu klijenta koju kreira neki drugi modul: korpe veb prodavnice (website_sale) su narudžbine u statusu Ponuda i troše po jedan broj. Bez praznina su samo fakture i knjižna odobrenja, jer se numerišu pri knjiženju.
  • Format godine ne menjati u toku rada. Sa korenom AN26 modul postojeći AN2026000001 čita kao brojač 26000001. Format odredite pre prvog dokumenta.
  • Brojač najviše 15 cifara. Duži nizovi cifara posle korena ignorišu se pri traženju najvišeg broja.
  • Nema odvojenih serija po dnevniku ili magacinu. Brojač važi po firmi, prefiksu i godini. Više prodajnih dnevnika deli brojač faktura.
  • Prefiksi ne smeju sadržati razmak niti se završavati cifrom, inače se prefiks, godina i brojač više ne mogu razdvojiti.
  • Obrađuju se samo navedene vrste dokumenata.

Testovi

Modul dolazi sa deset automatskih testova. Oni proveravaju:

  • Ponuda i potvrda: broj ponude i narudžbine, očuvanje broja ponude
  • Nastavak brojanja posle uvezenog broja (AN26119 → AN26000120)
  • nema naknadnog preimenovanja postojećih dokumenata
  • Faktura, knjižno odobrenje i promena godine prema datumu fakture
  • Nabavna narudžbina i otpremnice
  • prazan prefiks: standardni broj Odooa ostaje
  • četvorocifrena godina
  • Prefiks sa posebnim znakovima
  • više brojeva u jednoj transakciji
  • veoma dugi nizovi cifara se ignorišu

Poziv:

odoo-bin -d <Testdatenbank> -i document_number_prefix_year --test-enable --test-tags=/document_number_prefix_year --stop-after-init

Testovi se izvršavaju sa običnim transakcijama. Ponašanje pri istovremenom kreiranju od strane dva korisnika ne spada tu, ono je, kako je gore opisano, ručno provereno na kopiji baze podataka. Ko koristi modul u sistemu sa mnogo istovremenih korisnika, trebalo bi da ponovi taj pokus na sopstvenoj bazi podataka.

Pravna napomena o broju fakture

Fakture moraju prema § 11 UStG da nose uzastopni broj koji se dodeljuje jednokratno radi identifikacije fakture. Modul numeriše fakture pri knjiženju i sa sopstvenim brojačem po prefiksu i godini, što se uklapa. Da li vaše konkretno podešavanje (više dnevnika, knjižna odobrenja sa sopstvenim prefiksom, promena godine) ispunjava zahteve vašeg poreskog savetnika, morate razjasniti sa njim. Ovaj članak nije pravni savet.

Česta pitanja

Zašto jednostavno ne prilagoditi Odoo nizove?

Za fakture to ide preko prefiksa dnevnika. Ali kod ponuda, narudžbina, otpremnica i nabavnih narudžbina ne postoji zajednička šema iz prefiksa, godine i brojača sa promenom godine, a brojač ne poznaje uvezene stare brojeve. Tu modul počinje.

Da li se postojeće numerisanje prepisuje?

Ne. Modul dodeljuje samo nove brojeve. Već sačuvani nazivi ostaju nepromenjeni, i pri isključivanju.

Kako da ga ponovo isključim?

Ispraznite prefiks vrste dokumenta. Tada ga Odoo ponovo numeriše sam. Ni deinstaliranje ne menja već dodeljene brojeve.

Da li ga sami koristite?

Ne. Kod nas rade standardni brojevi Odooa. Modul smo proverili automatskim testovima i opisanim ručnim pokusom, ali ne u tekućem radu sa mnogo korisnika.

Da li radi sa Odoo 17 ili 18?

Testirali smo ga samo sa Odoo 19.0 Community. Za druge verzije može odgovarati ili ne, nismo ga proveravali.

Pod kojom licencom je?

Pod LGPL-3. Greške i poboljšanja možete prijaviti kao Issue u GitHub repozitorijumu .

Podrška kompanije Biricon IT Services

Brinemo o Odoo instalacijama za mala i srednja preduzeća: od uvođenja, preko prilagođavanja i migracija, do tekućeg rada. Ako pri prelasku želite da sačuvate brojeve dokumenata, da proverite dodelu brojeva pod opterećenjem ili da modul poput ovog bezbedno unesete u svoju produktivnu instancu, rado ćemo pomoći. Druge sopstvene razvoje: Firmenbuch i provera adresa za austrijske klijente, Setovi proizvoda u ponudi kao odeljak i Web RBL, lista blokiranja za napadački saobraćaj.

Obratite nam se

Stanje na dan: 3. novembar 2026. Verzija modula 19.0.1.0.0. Svi brojevi u primerima i na slikama su slobodno odabrani.