Məzmuna keçin

Prefiks, il və sayğacdan Odoo 19 sənəd nömrələri – document_number_prefix_year modulu və eyni vaxtda yaratma tələsi

3 noyabr 2026 | Odoo 19 Community | Öz hazırlığımız
3 noyabr 2026 tərəfindən
Prefiks, il və sayğacdan Odoo 19 sənəd nömrələri – document_number_prefix_year modulu və eyni vaxtda yaratma tələsi

Odoo 19 modulu document_number_prefix_year: prefiks, il və sayğacdan sənəd nömrələri

“AN26000001” “S00001”-dən daha çox şey deyir: bu, təklifdir, 2026-dan gəlir və birincisidir. Bir çox şirkət, xüsusilə köhnə sistemdən Odoo-ya keçənlər, sənəd nömrələrini məhz belə saxlamaq istəyir. Odoo özü təklifləri, sifarişləri və təhvil vərəqlərini öz ardıcıllıqları ilə (S00001, WH/OUT/00001, P00001), qaimələri isə jurnal prefiksi və il ilə (INV/2026/00001) nömrələyir.

Bunun üçün Document Numbering by Prefix and Year modulunu (document_number_prefix_year) Odoo 19 üçün yazdıq. O, LGPL-3 lisenziyası altında sərbəst proqram təminatı kimi GitHub-dadır:

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

Əvvəlcədən səmimi qiymətləndirmə: Biz modulu Biricon IT Services-də istifadə etmirik. Onu dərc edirik, çünki hazırdır, sənədləşdirilib, testlərlə təchiz olunub və başqalarına iş qənaət edə bilər. Onu istifadə edən şəxs Məhdudiyyətlər və Testlər bölməsini oxumalıdır.

Nömrə sxemi

Hər nömrə üç hissədən ibarətdir: hər sənəd növü üçün prefiks, il və sabit mərtəbə sayı olan sayğac. Prefiksi, il formatını (26 və ya 2026) və mərtəbə sayını hər şirkət üçün Tənzimləmələr → Sənəd nömrələməsi bölməsində təyin edirsiniz.

Prefiks, il və sayğacdan AN26000001 sənəd nömrəsinin quruluşu, sənəd növləri cədvəli ilə

Təkliflər, müştəri sifarişləri, müştəri qaimələri və kredit qaimələri, təhvil vərəqləri, mal qəbulları və satınalma sifarişləri nəzərdə tutulur. Təsvirdəki prefikslər yalnız nümunədir: AN, AU, RE, GU, LI, WE, BE. Prefiksi boş qoyan bu sənəd növü üçün Odoo-nun standart nömrələməsini saxlayır. Yəni modul siz onu tənzimləyənə qədər heç nə etmir.

Nömrələrin necə davranması

  • Hər il yenidən. Sayğac il dəyişəndə yenidən 1-dən başlayır.
  • İdxal edilmiş nömrələrdən sonra davam. Modul eyni prefiks və ildə mövcud olan ən yüksək nömrəni uzunluğundan asılı olmayaraq axtarır. Köhnə sistemdən AN26119 verilənlər bazasındadırsa, növbəti təklif AN26000120 olur. Modulun keçidlər üçün yararlı olmasının səbəbi budur: köhnə sənədlər orijinal nömrələri ilə idxal olunur və yeni sənədlər fasiləsiz davam edir.
  • Təsdiq zamanı yeni sifariş nömrəsi. Təsdiqlənmiş təklif istəyə görə sifariş ardıcıllığından nömrə alır. Təklif nömrəsi sifarişdəki Təklif nömrəsi sahəsində saxlanılır və formada, siyahıda və axtarışda görünür.
  • Qaimələr mühasibat yazısı zamanı. Müştəri qaimələri və kredit qaimələri nömrələrini yaradılarkən deyil, yalnız mühasibat uçotuna keçirilərkən alır. Silinmiş qaralamalar buna görə boşluq qoymur. İl Qaimə tarixindən götürülür: 30.12.2025 tarixli, 2.1.2026-da mühasibat uçotuna keçirilən qaimənin nömrəsi RE25… olur.
  • Qalan hər şey qalır. Təchizatçı qaimələri, ödənişlər, mühasibat yazıları və istehsal sifarişləri Odoo-nun standart ardıcıllıqlarını saxlayır. Mövcud adlar heç vaxt yenidən yazılmır, modulu yenidən söndürsəniz belə.

Həssas hissə: eyni anda iki istifadəçi

Öz nömrə təyinatı sadə görünür: ən yüksək nömrəni tap, üstünə bir gəl. Eyni anda iki istifadəçi təklif yaradanda bu, belə deyil. İkisi də “ən yüksək nömrə = 0” oxuyur, ikisi də AN26000001 təyin edir. Odoo öz ardıcıllıqları üçün buna görə verilənlər bazası sequence-lərinə malikdir. Özünün qurduğu nömrədə bu yoxdur və Odoo-da təkliflər və satınalma sifarişləri üçün üstəlik ad üzrə unikallıq yoxlaması yoxdur: eyni nömrəli iki sənəd sadəcə saxlanılır.

Ağla gələn qoruma kiliddir. Modul hər şirkət, prefiks və il üçün tranzaksiyanın sonuna qədər qalan verilənlər bazası kilidi (PostgreSQL Advisory Lock) götürür. İkinci istifadəçi birincinin bitməsini gözləyir. Lakin bu kifayət etmir və biz bunu istehsal verilənlər bazasının surətində sınaqla tapdıq:

İki istifadəçinin zaman axını: ikinci oxuma olmadan ikisi də eyni nömrəni təyin edir, ikinci oxumayla ikinci istifadəçi növbəti nömrəni alır

Odoo REPEATABLE READ izolyasiya səviyyəsi ilə işləyir. Tranzaksiyanın gördüyü verilənlər bazası vəziyyəti ilk sorğusunda dondurulur. İstifadəçi B bu vəziyyəti A bitməzdən əvvəl artıq əldə edib. B bundan sonra kilidi gözləyib onu alanda, köhnə vəziyyəti ilə “ən yüksək nömrə = 0” oxuyur və nömrəni ikinci dəfə təyin edir. Kilid ardıcıllığı tənzimlədi, lakin məlumatı yeniləmədi.

Həll öz, qısaömürlü verilənlər bazası girişi vasitəsilə ikinci oxumadır, o, artıq təsdiqlənmiş bütün sətirləri görür. İki dəyərdən böyüyü qazanır. İlk oxuma zəruri olaraq qalır, çünki yalnız o, eyni tranzaksiyanın artıq təyin etdiyi, lakin hələ təsdiqləmədiyi nömrələri bilir, məsələn, bir neçə sənədin bir dəfəyə idxalı zamanı.

Biz bunu iki tranzaksiya ilə yoxladıq, onlarda ikincinin vəziyyətini birincinin commit-indən əvvəl aldığı və sonra kilidi gözlədiyi sübut olunub. İkinci oxuma olmadan hər iki sifariş eyni nömrəni aldı, onunla isə 1 və 2 nömrələrini.

Qiymətləndirmə üçün vacib: Bu sınaq əl ilə yoxlamadır. O, avtomatik testlərin hissəsi deyil, çünki bunun üçün iki real verilənlər bazası bağlantısı lazımdır, Odoo-nun test mühiti (hər test üçün tək tranzaksiya) isə bunu təmin etmir.

Texniki həyata keçirilmə

SənədBağlanma nöqtəsi
Təklifad boş, / və ya New olduqda sale.order.create
Müştəri sifarişisale.order.action_confirm, standart təsdiqdən əvvəl
Qaimə, kredit qaiməsiaccount.move._set_next_sequence, mühasibat uçotuna keçirilərkən çağırılır
Təhvil vərəqi, mal qəbuluƏməliyyat növünə görə stock.picking.create
Satınalma sifarişipurchase.order.create
  • Sayğac. Ən yüksək nömrəni hər şirkət üçün adi ifadə tapır (^<Stamm>([0-9]{1,15})$, kök maskalanır), şirkətsiz adlar daxil olmaqla.
  • Qaimələr. _set_next_sequence adı yazır və _compute_split_sequence-i çağırır ki, Odoo-nun ardıcıllıq məntiqi (prefiks, nömrə, jurnalın növbəti qaiməsi üçün il aşkarlanması) uyğun qalsın.
  • Tənzimləmələr. document_number_* şirkət sahələri res.config.settings-də əks olunur. Tənzimləmələr boşluqlu və ya sonu rəqəmlə bitən prefiksləri rədd edir.
  • Tərcümə. Alman dilində tərcümə daxildir.

Quraşdırma və tənzimləmə

  1. document_number_prefix_year qovluğunu addons yoluna qoyun.
  2. Tətbiqlər siyahısını yeniləyin, modulu quraşdırın. İlkin şərtlər Satış, Satınalma, Anbar və Mühasibat tətbiqləridir.
  3. Tənzimləmələr → Sənəd nömrələməsi bölməsində prefiksləri, il formatını və mərtəbə sayını daxil edin.
  4. Əvvəlcə surətdə sınayın. Sənədin nömrəsini sonradan avtomatik geri qaytarmaq olmur və qaimələrdə nömrəyə saxlama və yoxlama öhdəliyi bağlıdır.

Məhdudiyyətlər

Modulun altı məhdudiyyəti: alış-veriş səbətləri, il formatı, hər şirkət üçün bir seriya, prefiks qaydaları, az test, yalnız adı çəkilən sənədlər

  • Təkliflər yaradılarkən nömrələnir. Silinmiş və ya ləğv edilmiş təkliflər boşluq qoyur. Bu, başqa modulun yaratdığı hər müştəri sifarişinə də aiddir: Webshop-un alış-veriş səbətləri (website_sale) Təklif statusunda sifarişlərdir və hər biri bir nömrə sərf edir. Yalnız qaimələr və kredit qaimələri boşluqsuzdur, çünki onlar mühasibat uçotuna keçirilərkən nömrələnir.
  • İl formatını işləyən sistemdə dəyişməyin. AN26 kökü ilə modul mövcud AN2026000001 nömrəsini 26000001 sayğacı kimi oxuyur. Formatı ilk sənəddən əvvəl müəyyən edin.
  • Sayğac ən çoxu 15 mərtəbəli. Kökdən sonra gələn daha uzun rəqəm ardıcıllıqları ən yüksək nömrənin axtarışında nəzərə alınmır.
  • Hər jurnal və ya anbar üçün ayrı seriyalar yoxdur. Sayğac hər şirkət, prefiks və il üçün keçərlidir. Bir neçə satış jurnalı qaimə sayğacını bölüşür.
  • Prefikslərdə boşluq olmamalı və rəqəmlə bitməməlidir, əks halda prefiks, il və sayğac artıq ayrıla bilməz.
  • Yalnız adı çəkilən sənəd növləri əhatə olunur.

Testlər

Modul on avtomatik test təqdim edir. Onlar bunları yoxlayır:

  • Təklif və təsdiq: təklif və sifariş nömrəsi, təklif nömrəsinin saxlanılması
  • İdxal edilmiş nömrədən sonra saymağa davam (AN26119 → AN26000120)
  • mövcud sənədlərin sonradan yenidən nömrələnməməsi
  • Qaimə, kredit qaiməsi və qaimə tarixinə görə il dəyişməsi
  • Satınalma sifarişi və təhvil vərəqləri
  • boş prefiks: Odoo-nun standart nömrəsi qalır
  • dörd rəqəmli il
  • xüsusi simvollu prefiks
  • bir tranzaksiyada bir neçə nömrə
  • çox uzun rəqəm ardıcıllıqları nəzərə alınmır

İcra:

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

Testlər adi tranzaksiyalarla işləyir. İki istifadəçinin eyni vaxtda yaratması zamanı davranış buraya daxil deyil, o, yuxarıda təsvir edildiyi kimi verilənlər bazası surətində əl ilə yoxlanılıb. Modulu çoxlu eyni vaxtlı istifadəçisi olan sistemdə istifadə edən bu sınağı öz verilənlər bazasında təkrarlamalıdır.

Qaimə nömrəsi barədə hüquqi qeyd

Qaimələr § 11 UStG üzrə qaimənin eyniləşdirilməsi üçün bir dəfə təyin edilən ardıcıl nömrə daşımalıdır. Modul qaimələri mühasibat uçotuna keçirilərkən və hər prefiks və il üçün öz sayğacı ilə nömrələyir, bu da uyğun gəlir. Sizin konkret tənzimləməniz (bir neçə jurnal, öz prefiksi olan kredit qaimələri, il dəyişməsi) vergi məsləhətçinizin tələblərinə cavab verirmi, bunu onunla dəqiqləşdirməlisiniz. Bu yazı hüquqi məsləhət deyil.

Tez-tez verilən suallar

Niyə sadəcə Odoo ardıcıllıqlarını uyğunlaşdırmayaq?

Qaimələr üçün bu, jurnal prefiksi vasitəsilə mümkündür. Lakin təkliflərdə, sifarişlərdə, təhvil vərəqlərində və satınalmalarda il dəyişməsi olan prefiks, il və sayğacdan ibarət ümumi sxem yoxdur və sayğac idxal edilmiş köhnə nömrələri tanımır. Modul məhz orada işə düşür.

Mövcud nömrələmənin üzərinə yazılırmı?

Xeyr. Modul yalnız yeni nömrələr təyin edir. Artıq saxlanılmış adlar, söndürüləndə də dəyişməz qalır.

Onu yenidən necə söndürürəm?

Sənəd növünün prefiksini boşaldın. Onda Odoo onu yenidən özü nömrələyir. Silmək də təyin edilmiş nömrələri dəyişmir.

Siz özünüz istifadə edirsiniz?

Xeyr. Bizdə Odoo-nun standart nömrələri işləyir. Modulu avtomatik testlərlə və təsvir edilmiş əl sınağı ilə yoxlamışıq, lakin çoxlu istifadəçisi olan işləyən sistemdə yox.

O, Odoo 17 və ya 18 ilə işləyirmi?

Biz onu yalnız Odoo 19.0 Community ilə sınaqdan keçirmişik. Digər versiyalara uyğun gələ də bilər, gəlməyə də bilər, yoxlamamışıq.

O, hansı lisenziya altındadır?

LGPL-3 altında. Xətalar və təkmilləşdirmələr Issue kimi GitHub repozitoriyası üzərində məmnuniyyətlə qəbul edilir.

Biricon IT Services dəstəyi

Biz kiçik və orta müəssisələr üçün Odoo quraşdırmalarına xidmət göstəririk: tətbiqdən uyğunlaşdırmalara və miqrasiyalara, cari istismara qədər. Keçid zamanı sənəd nömrələrinizi saxlamaq, nömrə təyinatını yük altında yoxlatdırmaq və ya bu kimi bir modulu istehsal instansiyanıza təhlükəsiz gətirmək istəyirsinizsə, məmnuniyyətlə kömək edirik. Digər öz hazırlıqlarımız: Avstriya müştəriləri üçün Firmenbuch və ünvan yoxlaması, Təklifdə bölmə kimi məhsul dəstləri və Web RBL, hücum trafiki üçün bloklama siyahısı.

İndi əlaqə saxlayın

Vəziyyət: 3 noyabr 2026. Modul versiyası 19.0.1.0.0. Nümunələrdəki və təsvirlərdəki bütün nömrələr sərbəst seçilib.