Skip to Content

Odoo 19: dokumentu-zenbakiak aurrizkiarekin, urtearekin eta kontagailuarekin – document_number_prefix_year modulua eta dokumentuak aldi berean sortzearen arriskua

2026ko azaroaren 3a | Odoo 19 Community | Garapen propioa
2026(e)ko azaroakren 3(a) by
Odoo 19: dokumentu-zenbakiak aurrizkiarekin, urtearekin eta kontagailuarekin – document_number_prefix_year modulua eta dokumentuak aldi berean sortzearen arriskua

Odoo 19rako document_number_prefix_year modulua: dokumentu-zenbakiak aurrizkiz, urtez eta kontagailuz osatuta

«AN26000001» zenbakiak «S00001» zenbakiak baino informazio gehiago ematen du: aurrekontu bat da, 2026koa da eta lehena da. Enpresa askok, batez ere sistema zaharrago batetik Odoora igarotzen direnek, dokumentu-zenbakiak horrelaxe mantendu nahi dituzte. Odoo berak bere segidak erabiltzen ditu aurrekontuak, eskaerak eta albaranak zenbakitzeko (S00001, WH/OUT/00001, P00001), eta fakturetarako egunkariaren aurrizkia eta urtea erabiltzen ditu (INV/2026/00001).

Horretarako garatu dugu Document Numbering by Prefix and Year modulua (document_number_prefix_year), Odoo 19rako. Software libre gisa eskuragarri dago GitHub-en, LGPL-3 lizentziarekin:

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

Aldez aurreko sailkapen zintzo bat: Biricon IT Servicesen modulu hau ez dugu erabiltzen. Argitaratzen dugu amaitua, dokumentatua eta probekin hornitua dagoelako, eta besteen lana aurrez dezakeelako. Erabiltzen duenak Mugak eta Probak irakurri.

Zenbakitze-eskema

Zenbaki bakoitzak hiru zati ditu: dokumentu mota bakoitzeko aurrizki bat, urtea eta digitu kopuru finkoko kontagailu bat. Aurrizkia, urtearen formatua (26 edo 2026) eta digitu kopurua enpresa bakoitzerako konfiguratzen dira, Ezarpenak → Dokumentuen zenbakitzea atalean.

AN26000001 dokumentu-zenbakiaren osaera, aurrizkia, urtea eta kontagailua erabiliz, dokumentu moten taularekin

Aurrekontuak, bezeroen eskaerak, bezeroentzako fakturak eta abonu-fakturak, albaranak, salgaien sarrerak eta erosketa-eskaerak hartzen ditu barne. Irudiko aurrizkiak adibideak baino ez dira: AN, AU, RE, GU, LI, WE, BE. Aurrizki bat hutsik utziz gero, dokumentu mota horrek Odooren zenbakitze lehenetsia gordetzen du. Beraz, moduluak ez du ezer egiten konfiguratu arte.

Zenbakiek nola funtzionatzen duten

  • Urtero berriro hasita. Urtea aldatzean, kontagailua 1etik hasten da berriro.
  • Inportatutako zenbakietatik aurrera. Moduluak aurrizki eta urte bereko zenbakirik handiena bilatzen du, haren luzera edozein dela ere. Aurreko sistematik ekarritako AN26119 datu-basean badago, hurrengo aurrekontuaren zenbakia AN26000120 izango da. Horregatik da egokia modulua sistema batetik bestera igarotzeko: dokumentu zaharrak jatorrizko zenbakiekin inportatzen dira, eta berriek segidari jarraitzen diote etenik gabe.
  • Eskaera-zenbaki berria baieztatzean. Nahi izanez gero, baieztatutako aurrekontuak eskaeren segidako zenbaki bat jasotzen du. Aurrekontuaren zenbakia eskaerako Aurrekontu-zenbakia eremuan gordetzen da, eta formularioan, zerrendan eta bilaketan ikus daiteke.
  • Fakturak kontabilizatzean. Bezeroen fakturek eta abonuek zenbakia kontabilizatzean jasotzen dute, ez sortzean. Ezabatutako zirriborroek, beraz, ez dute hutsunerik uzten. Urtea faktura-datatik dator: 2025-12-30eko faktura bat 2026-1-2an kontabilizatzen bada, RE25… deituko da.
  • Gainerako guztia bere horretan. Hornitzaileen fakturek, ordainketek, kontabilitate-idazpenek eta fabrikazio-aginduek Odooren segida lehenetsiak mantentzen dituzte. Lehendik dauden izenak ez dira inoiz berridazten, modulua berriro desaktibatzen baduzu ere.

Alderdi korapilatsua: bi erabiltzaile aldi berean

Zenbakiak esleitzeko sistema propio bat erraza dirudi: zenbakirik handiena bilatu eta bat gehitu. Baina ez da hain erraza bi erabiltzailek une berean aurrekontu bana sortzen dutenean. Biek «zenbakirik handiena = 0» irakurtzen dute, eta biek AN26000001 esleitzen dute. Odoorek datu-baseko sekuentziak ditu bere segidetarako. Norberak sortutako zenbakitze-sisteman hori falta da, eta, gainera, aurrekontuetan eta erosketa-eskaeretan Odoorek ez du izenaren bakartasuna egiaztatzen: zenbaki bereko bi dokumentuak besterik gabe gordetzen dira.

Babesteko modurik agerikoena blokeo bat da. Moduluak datu-baseko blokeo bat hartzen du enpresa, aurrizki eta urte bakoitzeko (PostgreSQL Advisory Lock), eta transakzioa amaitu arte mantentzen du. Bigarren erabiltzaileak lehenak amaitu arte itxaroten du. Baina hori ez da nahikoa, eta produkzioko datu-basearen kopia batean egindako proba bati esker ohartu ginen:

Bi erabiltzaileren denbora-lerroa: bigarren irakurketarik gabe, biek zenbaki bera esleitzen dute; bigarren irakurketarekin, bigarrenak hurrengo zenbakia jasotzen du

Odoorek REPEATABLE READ isolamendu-mailarekin lan egiten du. Transakzio batek ikusten duen datu-basearen egoera lehen kontsultan finkatzen da. B erabiltzaileak egoera hori badu jada A erabiltzaileak amaitu aurretik. Gero B-k blokeoaren zain itxaron eta lortzen badu, bere egoera zaharrarekin «zenbakirik handiena = 0» irakurtzen du, eta zenbakia bigarren aldiz esleitzen du. Blokeoak ordena arautu du, baina ez du ikusgai duen informazioa eguneratu.

Irtenbidea bigarren irakurketa bat egitea da, iraupen laburreko datu-baseko konexio bereizi baten bidez; konexio horrek dagoeneko berretsitako errenkada guztiak ikusten ditu. Bi balioetatik handiena hartzen da. Lehen irakurketa beharrezkoa da oraindik, hark bakarrik ezagutzen baititu transakzio berak dagoeneko esleitu baina oraindik berretsi ez dituen zenbakiak, adibidez hainbat dokumentu batera inportatzean.

Bi transakziorekin egiaztatu dugu hori: bigarrenak bere egoera lehenengoaren commit-a baino lehen hartu zuela frogatu genuen, eta ondoren blokeoaren zain egon zen. Bigarren irakurketarik gabe, bi eskaerek zenbaki bera jaso zuten; bigarren irakurketarekin, 1 eta 2 zenbakiak.

Kontuan hartzeko ohar garrantzitsua: saiakuntza hau eskuzko egiaztapena da. Ez da proba automatizatuen parte, benetako bi datu-baseko konexio behar dituelako, eta Odooren proba-inguruneak ez dituelako eskaintzen: transakzio bakarra erabiltzen du proba bakoitzeko.

Inplementazio teknikoa

DokumentuaEsku hartzeko puntua
Aurrekontuasale.order.create, izena hutsik dagoenean edo / edo New denean
Salmenta-eskaerasale.order.action_confirm, berrespen estandarraren aurretik
Faktura, faktura zuzentzaileaaccount.move._set_next_sequence, kontabilizatzean deitzen zaio
Albarana, salgaien sarrerastock.picking.create, eragiketa motaren arabera
Erosketa-eskaerapurchase.order.create
  • Kontagailua. Adierazpen erregular batek (^<Stamm>([0-9]{1,15})$, erroko karaktere bereziak ihes eginda) aurkitzen du enpresa bakoitzeko zenbakirik handiena, enpresarik gabeko izenak ere kontuan hartuta.
  • Fakturak. _set_next_sequence metodoak izena idazten du eta _compute_split_sequence metodoari deitzen dio, Odooren sekuentzia-logikak koherente jarrai dezan (aurrizkia, zenbakia eta egunkariko hurrengo fakturarako urtea hautematea).
  • Ezarpenak. Enpresaren document_number_* eremuak res.config.settings ereduan islatzen dira. Ezarpenek ez dituzte onartzen zuriuneak dituzten edo amaieran digitu bat duten aurrizkiak.
  • Itzulpena. Alemanezko itzulpena barne dago.

Instalazioa eta konfigurazioa

  1. Jarri document_number_prefix_year karpeta gehigarrien bidean.
  2. Eguneratu aplikazioen zerrenda eta instalatu modulua. Salmentak, Erosketak, Inbentarioa eta Kontabilitatea behar dira.
  3. Sartu aurrizkiak, urtearen formatua eta digitu kopurua Ezarpenak → Dokumentuen zenbakitzea atalean.
  4. Probatu lehenik kopia batean. Dokumentu baten zenbakia ezin da gero automatikoki lehengoratu, eta fakturen kasuan, zenbakiari lotuta daude gordetzeko eta egiaztatzeko betebeharrak.

Mugak

Moduluaren sei muga: erosketa-saskiak, urtearen formatua, enpresa bakoitzeko serie bakarra, aurrizkien arauak, proba gutxi eta aipatutako dokumentuak soilik

  • Aurrekontuak sortzean zenbakitzen dira. Ezabatutako edo bertan behera utzitako aurrekontuek hutsuneak uzten dituzte. Gauza bera gertatzen da beste modulu batek sortutako salmenta-eskaera guztiekin: lineako dendako erosketa-saskiak (website_sale) Aurrekontua egoeran dauden eskaerak dira, eta bakoitzak zenbaki bat kontsumitzen du. Fakturek eta faktura zuzentzaileek bakarrik dute hutsunerik gabeko zenbakitzea, kontabilizatzean zenbakitzen baitira.
  • Ez aldatu urtearen formatua sistema erabiltzen ari den bitartean. Erroa AN26 bada, moduluak lehendik dagoen AN2026000001 zenbakia irakurtzean 26000001 hartzen du kontagailutzat. Ezarri formatua lehen dokumentua sortu aurretik.
  • Kontagailuak gehienez 15 digitu ditu. Erroaren ondoko digitu-segida luzeagoak ez dira kontuan hartzen zenbakirik handiena bilatzean.
  • Ez dago egunkari edo biltegi bakoitzerako serie bereizirik. Kontagailua enpresaren, aurrizkiaren eta urtearen araberakoa da. Salmenta-egunkari batek baino gehiagok fakturen kontagailu bera partekatzen dute.
  • Aurrizkiek ezin dute zuriunerik izan, ezta amaieran digiturik ere; bestela, ezin dira aurrizkia, urtea eta kontagailua bereizi.
  • Aipatutako dokumentu motak soilik kudeatzen dira.

Probak

Moduluak hamar proba automatiko dakartza. Hauek egiaztatzen dituzte:

  • Aurrekontua eta berrespena: aurrekontuaren eta eskaeraren zenbakiak, aurrekontu-zenbakia mantentzea
  • inportatutako zenbaki baten ondoren zenbatzen jarraitzea (AN26119 → AN26000120)
  • lehendik dauden dokumentuak gero berriro ez zenbakitzea
  • faktura, faktura zuzentzailea eta fakturaren dataren araberako urte-aldaketa
  • erosketa-eskaera eta albaranak
  • aurrizki hutsa: Odooren zenbaki estandarra mantentzen da
  • lau digituko urtea
  • karaktere bereziak dituen aurrizkia
  • hainbat zenbaki transakzio berean
  • digitu-segida oso luzeak ez dira kontuan hartzen

Deia:

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

Probak ohiko transakzioekin egiten dira. Ez dute aztertzen bi erabiltzailek dokumentuak aldi berean sortzean zer gertatzen den; hori eskuz egiaztatu zen datu-basearen kopia batean, goian azaldu bezala. Modulua aldi bereko erabiltzaile asko dituen sistema batean erabiliko duenak proba hori bere datu-basean errepikatu beharko luke.

Faktura-zenbakiari buruzko lege-oharra

UStG legearen 11. artikuluaren arabera, fakturek zenbaki korrelatibo bat izan behar dute, faktura identifikatzeko behin bakarrik esleitua. Moduluak kontabilizatzean zenbakitzen ditu fakturak, aurrizki eta urte bakoitzerako kontagailu propioarekin; hori bat dator betekizun horrekin. Zure konfigurazio zehatzak (hainbat egunkari, aurrizki propioa duten faktura zuzentzaileak, urte-aldaketa) zerga-aholkulariaren eskakizunak betetzen dituen argitzeko, harekin hitz egin behar duzu. Artikulu hau ez da aholkularitza juridikoa.

Ohiko galderak

Zergatik ez Odooren sekuentziak zuzenean egokitu?

Fakturetan, egunkariaren aurrizkiaren bidez egin daiteke. Baina aurrekontuetan, salmenta-eskaeretan, albaranetan eta erosketa-eskaeretan ez dago aurrizkia, urtea eta kontagailua urte-aldaketarekin uztartzen dituen eskema bateraturik, eta kontagailuak ez ditu inportatutako zenbaki zaharrak ezagutzen. Hori konpontzen du moduluak.

Lehendik dagoen zenbakitzea gainidazten al da?

Ez. Moduluak zenbaki berriak soilik esleitzen ditu. Gordeta dauden izenak ez dira aldatzen, modulua desaktibatzean ere ez.

Nola desaktiba dezaket berriro?

Hustu dokumentu motaren aurrizkia. Horrela, Odook berak zenbakituko ditu berriro. Modulua desinstalatzeak ere ez ditu esleitutako zenbakiak aldatzen.

Zuek erabiltzen al duzue?

Ez. Guk Odooren zenbaki estandarrak erabiltzen ditugu. Modulua proba automatikoekin eta azaldutako eskuzko probarekin egiaztatu dugu, baina ez erabiltzaile asko dituen ekoizpen-ingurune batean.

Odoo 17 edo 18rekin funtzionatzen al du?

Odoo 19.0 Community-rekin soilik probatu dugu. Baliteke beste bertsio batzuekin bateragarria izatea edo ez izatea; ez dugu egiaztatu.

Zer lizentzia du?

LGPL-3 lizentzia du. Erroreen eta hobekuntzen berri emateko, ireki Issue bat GitHub biltegian ; gustura jasoko dugu.

Biricon IT Services-en laguntza

Enpresa txiki eta ertainen Odoo instalazioak kudeatzen ditugu: hasierako ezarpenetik hasi, egokitzapenak eta migrazioak egin, eta eguneroko funtzionamenduraino. Migrazioan dokumentu-zenbakiak mantendu, zenbakien esleipena kargapean egiaztatu edo horrelako modulu bat zure ekoizpen-ingurunean segurtasunez instalatu nahi baduzu, pozik lagunduko dizugu. Beste garapen propio batzuk: Austriako bezeroentzako merkataritza-erregistroa eta helbideen egiaztapena, Produktu multzoak aurrekontuan atal gisa eta Web RBL, eraso-trafikoa blokeatzeko zerrenda.

Jarri gurekin harremanetan orain

Eguneratze-data: 2026ko azaroaren 3a. Moduluaren bertsioa: 19.0.1.0.0. Adibide eta irudietako zenbaki guztiak asmatuak dira.