«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.
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
AN26119datu-basean badago, hurrengo aurrekontuaren zenbakiaAN26000120izango 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:
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
| Dokumentua | Esku hartzeko puntua |
|---|---|
| Aurrekontua | sale.order.create, izena hutsik dagoenean edo / edo New denean |
| Salmenta-eskaera | sale.order.action_confirm, berrespen estandarraren aurretik |
| Faktura, faktura zuzentzailea | account.move._set_next_sequence, kontabilizatzean deitzen zaio |
| Albarana, salgaien sarrera | stock.picking.create, eragiketa motaren arabera |
| Erosketa-eskaera | purchase.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_sequencemetodoak izena idazten du eta_compute_split_sequencemetodoari deitzen dio, Odooren sekuentzia-logikak koherente jarrai dezan (aurrizkia, zenbakia eta egunkariko hurrengo fakturarako urtea hautematea). - Ezarpenak. Enpresaren
document_number_*eremuakres.config.settingsereduan islatzen dira. Ezarpenek ez dituzte onartzen zuriuneak dituzten edo amaieran digitu bat duten aurrizkiak. - Itzulpena. Alemanezko itzulpena barne dago.
Instalazioa eta konfigurazioa
- Jarri
document_number_prefix_yearkarpeta gehigarrien bidean. - Eguneratu aplikazioen zerrenda eta instalatu modulua. Salmentak, Erosketak, Inbentarioa eta Kontabilitatea behar dira.
- Sartu aurrizkiak, urtearen formatua eta digitu kopurua Ezarpenak → Dokumentuen zenbakitzea atalean.
- Probatu lehenik kopia batean. Dokumentu baten zenbakia ezin da gero automatikoki lehengoratu, eta fakturen kasuan, zenbakiari lotuta daude gordetzeko eta egiaztatzeko betebeharrak.
Mugak
- 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
AN26bada, moduluak lehendik dagoenAN2026000001zenbakia irakurtzean26000001hartzen 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.