Məzmuna keçin

Odoo 19: Portal istifadəçiləri ilə birlikdə firmanın arxivləşdirilməsi – xəta mesajı əvəzinə sual verən partner_archive_users modulu

3 noyabr 2026 | Odoo 19 Community | Öz hazırlığımız
3 noyabr 2026 tərəfindən
Odoo 19: Portal istifadəçiləri ilə birlikdə firmanın arxivləşdirilməsi – xəta mesajı əvəzinə sual verən partner_archive_users modulu

Odoo 19 modulu partner_archive_users: portal istifadəçiləri olan firmanı arxivləşdirərkən sual

Müştəri firması köçüb, müqavilə bitib və siz onu Odoo-da arxivləşdirmək istəyirsiniz. Odoo xəta mesajı ilə cavab verir: “Aktiv istifadəçi ilə əlaqəli kontaktları arxivləşdirə bilməzsiniz. Əvvəlcə aidiyyəti istifadəçini arxivləşdirin.” Firmanın bir neçə portal girişi varsa, bu o deməkdir: hər istifadəçini ayrıca tap, ayrıca arxivləşdir, firmaya qayıt, yenidən arxivləşdir.

Bunun üçün kiçik Portal istifadəçiləri ilə birlikdə firmanın arxivləşdirilməsi modulunu (partner_archive_users) Odoo 19 üçün yazdıq. Xəta mesajı əvəzinə sual gəlir və “Bəli” seçildikdə portal istifadəçiləri və firma bir addımda arxivləşdirilir. Modul AGPL-3 lisenziyası altında sərbəst proqram təminatı kimi GitHub-dadır:

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

Biz modulu Biricon IT Services-də 3 noyabr 2026-dan istehsal sistemimizdə istifadə edirik. O, yenidir, onunla təcrübə deməli qısadır. Onu götürən şəxs Əhatə dairəsi və Məhdudiyyətlər bölməsini oxumalıdır.

Odoo standartındakı problem

Odoo kontaktı arxivləşdirərkən ona istifadəçinin bağlı olub-olmadığını yoxlayır və bağlıdırsa, dayandırır. Yoxlamanın mənası var, çünki hər istifadəçinin kontaktı olmalıdır. Daxili istifadəçilər, yəni əməkdaşlar üçün kilid istənilən haldır. Müştərilərin portal istifadəçiləri üçün isə o, əsasən əl işidir. Portal girişi olan hər müştəri firması, məsələn, qaimələrə və biletlərə baxmaq üçün, arxivləşdirərkən eyni prosesə ehtiyac duyur:

  1. firmanın və onun əlaqə şəxslərinin istifadəçilərini axtarmaq,
  2. hər birini ayrıca arxivləşdirmək,
  3. firmaya qayıtmaq,
  4. firmanı arxivləşdirmək.

Həll: sual

Modul kontaktda Əməliyyat → Arxivləşdir yolunu genişləndirir, həm formada, həm də siyahıda. Seçilmiş firmaya və ya onun əlaqə şəxslərinə aktiv portal istifadəçiləri bağlıdırsa, “Firma həqiqətən arxivləşdirilsin? Sistemdə hələ aktiv istifadəçilər var.” sualı ilə dialoq açılır. Onun altında təsirlənən istifadəçilər adı, giriş adı və kontaktı ilə göstərilir.

Müqayisə: firmanı arxivləşdirərkən Odoo xəta mesajı və modulun sual dialoqu

  • Bəli, firmanı və istifadəçiləri arxivləşdir: Əvvəlcə istifadəçilər, sonra firma arxivləşdirilir.
  • Ləğv et: Heç nə dəyişmir.
  • Portal istifadəçisi yoxdur: Odoo əvvəlki kimi davranır, dialoq görünmür.

Nə arxivləşdirilir və nə yox

Əhatə dairəsi qəsdən dar tutulub:

İcmal: portal istifadəçiləri və firma arxivləşdirilir, əlaqə şəxsləri 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 yolla heç vaxt arxivləşdirilmir. Kontakta əməkdaş girişi bağlıdırsa, Odoo-nun xəta mesajı qalır. Beləliklə, heç kim firmanı arxivləşdirdiyi üçün təsadüfən əməkdaşı bloklamır.
  • Əlaqə şəxsləri kontakt kimi aktiv qalır. Yalnız onların portal girişləri arxivləşdirilir. Bu, firmanı arxivləşdirərkən alt kontaktlara da toxunmayan Odoo standartına uyğundur.
  • Yalnız interfeysin arxivləşdirmə yolu. Birbaşa write({'active': False}), məsələn, idxalda və ya skriptdə, dəyişmədən Odoo-nun yoxlamasına düşür.

Texniki həyata keçirilmə

Modulun mövcud modellərdə yeni sahələri yoxdur. O, res.partner.action_archive genişləndirilməsindən və dialoq kimi görünən köməkçidən (partner.archive.users.wizard) ibarətdir.

KomponentVəzifə
Kontaktda action_archiveKontaktda və ya (firmalar üçün) firmanın kontaktlarında bağlı olan share = True ilə aktiv istifadəçiləri axtarır. Varsa, arxivləşdirmək əvəzinə dialoq qaytarılır.
KöməkçiFirmanı və tapılmış istifadəçiləri saxlayır, göstərir və “Bəli” seçildikdə archive_linked_users kontekst açarı ilə arxivləşdirməni icra edir.
skip_archive_users_wizard kontekstiDialoqu söndürür. Onda yenidən Odoo-nun yoxlaması keçərlidir.
GirişKöməkçini daxili istifadəçilər (base.group_user) yarada və istifadə edə bilər.
TərcüməAlman dili (de.po) və şablon (.pot) əlavə olunub.

İstifadəçilər yüksəldilmiş hüquqlarla axtarılır və arxivləşdirilir (sudo). Bununla dialoq istifadəçi idarəetməsinə girişi olmayan istifadəçilər üçün də işləyir. Mənfi cəhəti bu bölmədədir: Məhdudiyyətlər.

Bir tapıntı: Test yaşıl idi, dialoq isə yenə də xarab

Modulun ilk istifadədə avtomatik testlərin tapmadığı xəta var idi. Interfeysdə “Arxivləşdir” üzərinə ilk kliklədikdə dialoq əvəzinə Cannot read properties of undefined (reading 'map') ilə Odoo xəta ekranı göründü.

Səbəb: Veb-klient action_archive-i birbaşa çağırır və qaytarılan əməliyyatı əlavə hazırlıq olmadan icra edir. Bu zaman əməliyyatın views açarını mütləq oxuyur. Bizim əməliyyatımızda yalnız view_mode var idi. type="object" olan düymələrdən gələn əməliyyatları server əvvəlcədən tamamlayır (call_button içində clean_action), action_archive-in birbaşa çağırışını isə yox. Testlər metodu yalnız Python-da çağırırdı və orada çatışmayan sahə nəzərə çarpmadı.

Düzəliş bir sətirdir ("views": [(False, "form")]), buna məhz bu açarı tələb edən testdə yoxlama əlavə olunur. Bu zaman heç nə arxivləşdirilmədi. Dərs: klientin birbaşa çağırdığı metoddan (action_archive, action_unarchive və buna bənzərlər) əməliyyat qaytaran həmişə views-i də verməlidir.

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

Asılılıqlar base və contacts-dir. Quraşdırmadan sonra Odoo xidməti yenidən başladılmalıdır, çünki modul Python kodu ehtiva edir. İstehsal sistemi işlədən modulu əvvəlcə verilənlər bazasının surətində quraşdırır.

Məhdudiyyətlər

  • İcazə. İstifadəçilər yüksəldilmiş hüquqlarla arxivləşdirildiyinə görə, kontaktı arxivləşdirməyə icazəsi olan hər kəs dialoq vasitəsilə bu firmanın portal girişlərini də arxivləşdirə bilər. Daxili istifadəçilərə bu aid deyil. Portal girişlərini daha incə qorumaq istəyən modulu uyğunlaşdırmalıdır.
  • Avtomatik bərpa yoxdur. Firma sonradan yenidən aktivləşdirilsə, istifadəçilər arxivləşdirilmiş qalır. Onlar əl ilə yenidən aktivləşdirilməlidir.
  • Yalnız kontaktlar. Modul kontakt kimi firmalara (res.partner) aiddir. Odoo şirkətinin (res.company) arxivləşdirilməsində başqa yoxlamalar var, məsələn, o, hələ istifadəçilərin standart şirkətidirsə. Modul bunun üçün nəzərdə tutulmayıb.
  • Yalnız Odoo 19.0 Community üçün sınaqdan keçirilib. Digər versiyalar üçün yoxlamamışıq.

Tez-tez verilən suallar

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

Daxili istifadəçinin sistemdə hüquqları var və adətən öz məlumatları, tapşırıqları və icazələri ilə bağlıdır. Onu firmanın arxivləşdirilməsinin yan təsiri kimi bloklamaq bizim üçün çox risklidir. Buna görə Odoo-nun xəta mesajı qalır.

Sualı söndürə bilərəmmi?

Kodda skip_archive_users_wizard konteksti vasitəsilə. İnterfeysdə tənzimləmə yoxdur. Modulu silən yenidən Odoo-nun standart davranışını alır.

O, hansı lisenziya altındadır?

AGPL-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. Müştəri firmalarının arxivləşdirilməsi kimi prosesləri Odoo-da sadələşdirmək, müştəriləriniz üçün portal qurmaq və ya 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: Prefiks, il və sayğacdan sənəd nömrələri, Avstriya müştəriləri üçün Firmenbuch və ünvan yoxlaması və Təklifdə bölmə kimi məhsul dəstləri.

İndi əlaqə saxlayın

Vəziyyət: 3 noyabr 2026. Modul versiyası 19.0.1.0.0, eyni günün düzəlişi ilə. Təsvirlərdəki bütün adlar və giriş adları sərbəst seçilib.