Məzmuna keçin

Odoo 19: şirkətin portal istifadəçiləri ilə birlikdə arxivləşdirilməsi – xəta bildirişi əvəzinə təsdiq sorğusu göstərən partner_archive_users modulu

3 noyabr 2026 | Odoo 19 Community | Öz hazırladığımız modul
3 noyabr 2026 tərəfindən
Odoo 19: şirkətin portal istifadəçiləri ilə birlikdə arxivləşdirilməsi – xəta bildirişi əvəzinə təsdiq sorğusu göstərən partner_archive_users modulu

Odoo 19 üçün partner_archive_users modulu: portal istifadəçiləri olan şirkət arxivləşdirilərkən təsdiq sorğusu

Müştəri şirkət sizinlə əməkdaşlığa son qoyub, müqavilə bitib və siz onu Odoo-da arxivləşdirmək istəyirsiniz. Odoo isə xəta bildirir: “Aktiv istifadəçi ilə əlaqələndirilmiş kontaktları arxivləşdirə bilməzsiniz. Əvvəlcə müvafiq istifadəçini arxivləşdirin.” Şirkətin bir neçə portal hesabı varsa, bu, hər istifadəçini ayrıca tapmaq, ayrıca arxivləşdirmək, sonra şirkətə qayıdıb yenidən arxivləşdirməyə çalışmaq deməkdir.

Bunun üçün Odoo 19 platforması üçün Şirkətin portal istifadəçiləri ilə birlikdə arxivləşdirilməsi (partner_archive_users) adlı kiçik bir modul hazırladıq. Xəta bildirişinin əvəzinə təsdiq sorğusu açılır və “Bəli” seçildikdə portal istifadəçiləri ilə şirkət bir addımda arxivləşdirilir. Modul GitHub-da AGPL-3 lisenziyası ilə azad proqram təminatı kimi təqdim olunur:

github.com/Alex0176/odoo-partner-archive-users

Biricon IT Services olaraq modulu 3 noyabr 2026-cı ildən işlək sistemimizdə istifadə edirik. Modul yenidir, ona görə də istifadə təcrübəmiz hələ azdır. Onu tətbiq etmək istəyənlər bu bölmələri nəzərdən keçirməlidirlər: Əhatə dairəsi və Məhdudiyyətlər bölmələrini oxuyun.

Odoo-nun standart davranışındakı problem

Odoo kontaktı arxivləşdirərkən ona istifadəçinin bağlı olub-olmadığını yoxlayır və bağlıdırsa, əməliyyatı dayandırır. Bu yoxlama məntiqlidir, çünki hər istifadəçinin bir kontaktı olmalıdır. Daxili istifadəçilər, yəni əməkdaşlar üçün bu məhdudiyyət məqsədəuyğundur. Müştərilərin portal istifadəçiləri üçün isə bu, əsasən əlavə əl işi yaradır. Məsələn, fakturalara və dəstək sorğularına baxmaq üçün portal hesabları olan hər müştəri şirkəti arxivləşdirərkən eyni addımları yerinə yetirmək lazımdır:

  1. şirkətə və onun əlaqələndirici şəxslərinə bağlı istifadəçiləri tapmaq,
  2. hər birini ayrıca arxivləşdirmək,
  3. şirkətə qayıtmaq,
  4. şirkəti arxivləşdirmək.

Həll: təsdiq sorğusu

Modul kontaktın həm forma, həm də siyahı görünüşündəki Əməliyyat → Arxivləşdir funksiyasını genişləndirir. Seçilmiş şirkətə və ya onun əlaqələndirici şəxslərinə aktiv portal istifadəçiləri bağlıdırsa, “Şirkəti arxivləşdirmək istədiyinizə əminsiniz? Sistemdə hələ aktiv istifadəçilər var.” sualı olan dialoq açılır. Aşağıda müvafiq istifadəçilərin adları, giriş adları və kontaktları göstərilir.

Müqayisə: şirkət arxivləşdirilərkən Odoo-nun xəta bildirişi və modulun təsdiq dialoqu

  • Bəli, şirkəti və istifadəçiləri arxivləşdir: Əvvəlcə istifadəçilər, sonra şirkət arxivləşdirilir.
  • Ləğv et: Heç nə dəyişmir.
  • Portal istifadəçisi yoxdursa: Odoo əvvəlki kimi işləyir, dialoq açılmır.

Nələr arxivləşdirilir, nələr arxivləşdirilmir

Modulun əhatə dairəsi məqsədli şəkildə məhdud tutulub:

İcmal: portal istifadəçiləri və şirkət arxivləşdirilir, əlaqələndirici şəxslər aktiv qalır, daxili istifadəçilərə heç vaxt toxunulmur

  • Yalnız portal və ictimai istifadəçilər (share = True). Daxili istifadəçilər bu üsulla heç vaxt arxivləşdirilmir. Kontakta əməkdaş hesabı bağlıdırsa, Odoo-nun xəta bildirişi qüvvədə qalır. Beləliklə, şirkəti arxivləşdirən şəxs təsadüfən əməkdaşın girişini bloklamır.
  • Əlaqələndirici şəxslər kontakt kimi aktiv qalır. Yalnız onların portal hesabları arxivləşdirilir. Bu, şirkət arxivləşdirilərkən alt kontaktlara da toxunmayan Odoo-nun standart davranışına uyğundur.
  • Yalnız interfeysdəki arxivləşdirmə əməliyyatı. Məsələn, idxal və ya skript vasitəsilə birbaşa write({'active': False}) çağırışı əvvəlki kimi Odoo-nun yoxlamasından keçir.

Texniki reallaşdırma

Modul mövcud modellərə yeni sahələr əlavə etmir. O, res.partner.action_archive metodunun genişləndirilməsindən və dialoq şəklində açılan köməkçidən (partner.archive.users.wizard) ibarətdir.

KomponentFunksiyası
Kontaktdakı action_archiveKontakta və ya şirkət olduqda həmin şirkətin kontaktlarına bağlı, share = True şərtinə uyğun aktiv istifadəçiləri axtarır. Belə istifadəçilər varsa, arxivləşdirmə əvəzinə dialoq qaytarılır.
KöməkçiŞirkəti və tapılmış istifadəçiləri saxlayır, onları göstərir və “Bəli” seçildikdə archive_linked_users kontekst açarı ilə arxivləşdirməni yerinə yetirir.
skip_archive_users_wizard kontekstiDialoqu söndürür. Bundan sonra yenə Odoo-nun yoxlaması tətbiq olunur.
Giriş icazəsiDaxili istifadəçilər (base.group_user) köməkçini yarada və ondan istifadə edə bilərlər.
TərcüməAlman dilinə tərcümə (de.po) və şablon (.pot) daxildir.

İstifadəçilər yüksəldilmiş səlahiyyətlərlə axtarılır və arxivləşdirilir (sudo). Bunun sayəsində istifadəçi idarəetməsinə girişi olmayan şəxslər də dialoqdan istifadə edə bilirlər. Bunun mənfi tərəfi bu bölmədə izah olunur: Məhdudiyyətlər.

Aşkar edilən problem: test uğurlu idi, dialoq isə işləmirdi

Modulun ilk istifadəsində avtomatlaşdırılmış testlərin aşkar etmədiyi bir xəta üzə çıxdı. İnterfeysdə “Arxivləşdir” düyməsinə ilk dəfə basanda dialoq əvəzinə Cannot read properties of undefined (reading 'map') mesajı ilə Odoo-nun xəta ekranı açıldı.

Səbəb bu idi: veb-klient action_archive metodunu birbaşa çağırır və qaytarılan əməliyyatı əlavə hazırlıq olmadan icra edir. Bu zaman o, əməliyyatın views açarını mütləq oxuyur. Bizim əməliyyatda isə yalnız view_mode vardı. Server type="object" olan düymələrdən gələn əməliyyatları əvvəlcədən tamamlayır (call_button daxilindəki clean_action), lakin action_archive metodunun birbaşa çağırışında bunu etmir. Testlər metodu yalnız Python daxilində çağırırdı və orada çatışmayan sahə nəzərə çarpmırdı.

Düzəliş bir sətirdən ibarətdir ("views": [(False, "form")]); əlavə olaraq testə məhz bu açarın mövcudluğunu tələb edən yoxlama daxil edilib. Xəta baş verərkən heç nə arxivləşdirilməmişdi. Buradan çıxan dərs: klientin birbaşa çağırdığı metoddan (action_archive, action_unarchive və oxşar metodlar) əməliyyat qaytararkən həmişə views açarını da ötürmək lazımdır.

Quraşdırma

git clone https://github.com/Alex0176/odoo-partner-archive-users.git
ln -s /pfad/odoo-partner-archive-users/partner_archive_users /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i partner_archive_users --stop-after-init

Modul base və contacts modullarından asılıdır. Tərkibində Python kodu olduğu üçün quraşdırmadan sonra Odoo xidməti yenidən başladılmalıdır. İşlək sistemdə istifadə etməzdən əvvəl modulu verilənlər bazasının surətində quraşdırın.

Məhdudiyyətlər

  • Səlahiyyət. İstifadəçilər yüksəldilmiş səlahiyyətlərlə arxivləşdirildiyi üçün kontaktı arxivləşdirmək icazəsi olan hər kəs dialoq vasitəsilə həmin şirkətin portal hesablarını da arxivləşdirə bilər. Bu, daxili istifadəçilərə şamil edilmir. Portal hesabları üçün daha incə icazə nəzarəti istəyənlər modulu uyğunlaşdırmalıdırlar.
  • Avtomatik bərpa yoxdur. Şirkət sonradan yenidən aktivləşdirilsə də, istifadəçilər arxivdə qalır. Onları əl ilə yenidən aktivləşdirmək lazımdır.
  • Yalnız kontaktlar. Modul kontakt kimi saxlanan şirkətlərə (res.partner) aiddir. Odoo şirkətinin (res.company) arxivləşdirilməsi zamanı başqa yoxlamalar tətbiq olunur, məsələn, şirkət hələ də istifadəçilərin standart şirkətidirsə. Modul bunun üçün nəzərdə tutulmayıb.
  • Yalnız Odoo 19.0 Community ilə sınaqdan keçirilib. Digər versiyalarda yoxlamamışıq.

Tez-tez verilən suallar

Niyə əməkdaşlar da birlikdə arxivləşdirilmir?

Daxili istifadəçinin sistemdə səlahiyyətləri var və o, adətən öz məlumatlarına, tapşırıqlarına və icazələrinə bağlı olur. Şirkətin arxivləşdirilməsinin əlavə nəticəsi kimi onun girişini bloklamağı çox riskli hesab edirik. Buna görə həmin halda Odoo-nun xəta bildirişi qüvvədə qalır.

Təsdiq sorğusunu söndürə bilərəmmi?

Kodda skip_archive_users_wizard konteksti vasitəsilə mümkündür. İnterfeysdə bunun üçün parametr yoxdur. Modul silindikdə Odoo-nun standart davranışı bərpa olunur.

Hansı lisenziya ilə təqdim olunur?

AGPL-3 altında. Xətalar və təkmilləşdirmələr Issue kimi GitHub repozitoriyası bildirə bilərsiniz.

Biricon IT Services dəstəyi

Kiçik və orta müəssisələrin Odoo sistemlərinə tətbiqdən tutmuş uyğunlaşdırma və miqrasiyalara, eləcə də gündəlik istismara qədər dəstək göstəririk. Odoo-da müştəri şirkətlərinin arxivləşdirilməsi kimi prosesləri sadələşdirmək, müştəriləriniz üçün portal qurmaq və ya modulu işlək sisteminizə etibarlı şəkildə tətbiq etmək istəyirsinizsə, məmnuniyyətlə kömək edərik. Öz hazırladığımız digər modullar: Prefiks, il və sayğac əsasında sənəd nömrələri, Avstriyalı müştərilər üçün şirkət reyestri və ünvan yoxlaması və Qiymət təklifində bölmə şəklində məhsul dəstləri.

İndi əlaqə saxlayın

Son yenilənmə: 3 noyabr 2026. Modulun versiyası: 19.0.1.0.0, həmin gün edilmiş düzəlişlə birlikdə. Şəkillərdəki bütün adlar və giriş adları şərtidir.