İçereği Atla

Odoo 19: Şirketi portal kullanıcılarıyla birlikte arşivleme – hata mesajı yerine onay soran partner_archive_users modülü

3 Kasım 2026 | Odoo 19 Community | Kendi geliştirmemiz
3 Kasım 2026 yazan
Odoo 19: Şirketi portal kullanıcılarıyla birlikte arşivleme – hata mesajı yerine onay soran partner_archive_users modülü

Odoo 19 modülü partner_archive_users: Portal kullanıcıları olan bir şirketi arşivlerken onay sorusu

Bir müşteri şirketi taşındı, sözleşme sona erdi ve onu Odoo’da arşivlemek istiyorsunuz. Odoo bir hata mesajıyla yanıt verir: “Etkin bir kullanıcıyla bağlantılı kişileri arşivleyemezsiniz. Önce ilgili kullanıcıyı arşivleyin.” Şirketin birden fazla portal erişimi varsa bu şu anlama gelir: Her kullanıcıyı tek tek bul, tek tek arşivle, şirkete geri dön, yeniden arşivle.

Bunun için küçük bir modül olan Şirketi portal kullanıcılarıyla birlikte arşivleme modülünü (partner_archive_users) Odoo 19 için yazdık. Hata mesajı yerine bir onay sorusu gelir ve “Evet” denirse portal kullanıcıları ve şirket tek adımda arşivlenir. Modül, AGPL-3 lisansı altında özgür yazılım olarak GitHub’da yer alır:

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

Modülü Biricon IT Services’te 3 Kasım 2026’dan beri üretim sistemimizde kullanıyoruz. Yeni olduğu için deneyimimiz kısa. Modülü benimseyecek olanlar şu bölümleri okumalıdır: Kapsam ve Sınırlar bölümünü okumalıdır.

Odoo standardındaki sorun

Odoo, bir kişiyi arşivlerken ona bağlı bir kullanıcı olup olmadığını kontrol eder ve varsa işlemi iptal eder. Kontrol anlamlıdır, çünkü her kullanıcının bir kişiye ihtiyacı vardır. Dahili kullanıcılar, yani çalışanlar için bu kilit istenen bir şeydir de. Ancak müşterilerin portal kullanıcılarında bu daha çok elle yapılan bir iştir. Portal erişimleri olan her müşteri şirketi, örneğin faturaları ve destek taleplerini görüntülemek için, arşivlenirken aynı süreci gerektirir:

  1. Şirketin ve irtibat kişilerinin kullanıcılarını aramak,
  2. her birini tek tek arşivlemek,
  3. şirkete geri dönmek,
  4. şirketi arşivlemek.

Çözüm: bir onay sorusu

Modül, kişide Eylem → Arşivle yolunu genişletir; hem formda hem listede. Seçilen şirkete veya irtibat kişilerine bağlı etkin portal kullanıcıları varsa, “Şirket gerçekten arşivlensin mi? Sistemde hâlâ etkin kullanıcılar var.” sorusunu içeren bir diyalog açılır. Altında etkilenen kullanıcılar ad, giriş adı ve kişiyle birlikte listelenir.

Karşılaştırma: Bir şirketi arşivlerken Odoo hata mesajı ve modülün onay diyaloğu

  • Evet, şirketi ve kullanıcıları arşivle: Önce kullanıcılar, ardından şirket arşivlenir.
  • İptal: Hiçbir şey değişmez.
  • Portal kullanıcısı yok: Odoo eskisi gibi davranır, diyalog görünmez.

Nelerin arşivlendiği ve nelerin arşivlenmediği

Kapsam bilerek dar tutulmuştur:

Genel bakış: Portal kullanıcıları ve şirket arşivlenir, irtibat kişileri etkin kalır, dahili kullanıcılara hiçbir zaman dokunulmaz

  • Yalnızca portal ve genel kullanıcılar (share = True). Dahili kullanıcılar bu yolla hiçbir zaman arşivlenmez. Kişiye bir çalışan erişimi bağlıysa, Odoo’nun hata mesajı geçerli kalır. Böylece kimse bir şirketi arşivlediği için yanlışlıkla bir çalışanı kilitlemez.
  • İrtibat kişileri kişi olarak etkin kalır. Yalnızca portal erişimleri arşivlenir. Bu, bir şirketi arşivlerken alt kişilere de dokunmayan Odoo standardına uygundur.
  • Yalnızca arayüzün arşivleme yolu. Örneğin bir içe aktarmada veya betikte doğrudan write({'active': False}), değişmeden Odoo’nun kontrolüne girer.

Teknik uygulama

Modülün mevcut modellerde yeni alanı yoktur. res.partner.action_archive için bir genişletmeden ve diyalog olarak görünen bir sihirbazdan (partner.archive.users.wizard) oluşur.

Yapı taşıGörev
Kişide action_archiveKişiye veya (şirketlerde) şirketin kişilerine bağlı, share = True olan etkin kullanıcıları arar. Varsa, arşivleme yerine diyalog döndürülür.
SihirbazŞirketi ve bulunan kullanıcıları kaydeder, gösterir ve “Evet” denirse arşivlemeyi archive_linked_users bağlam anahtarıyla gerçekleştirir.
skip_archive_users_wizard bağlamıDiyaloğu kapatır. O zaman yine Odoo’nun kontrolü geçerli olur.
ErişimSihirbazı dahili kullanıcılar (base.group_user) oluşturabilir ve kullanabilir.
ÇeviriAlmanca (de.po) ve şablon (.pot) birlikte gelir.

Kullanıcılar yükseltilmiş yetkilerle aranır ve arşivlenir (sudo). Böylece diyalog, kullanıcı yönetimine erişimi olmayan kullanıcılar için de çalışır. Madalyonun öbür yüzü şurada yer alır: Sınırlar.

Bir bulgu: Test yeşildi, diyalog yine de bozuktu

Modülün ilk kullanımda, otomatik testlerin bulamadığı bir hatası vardı. Arayüzde “Arşivle”ye ilk tıklamada, diyalog yerine Cannot read properties of undefined (reading 'map') ile Odoo hata ekranı göründü.

Neden: Web istemcisi action_archive metodunu doğrudan çağırır ve döndürülen eylemi başka bir hazırlık yapmadan çalıştırır. Bu sırada eylemin views anahtarını zorunlu olarak okur. Bizim eylemimizde yalnızca view_mode vardı. type="object" düğmelerinden gelen eylemleri sunucu önceden tamamlar (call_button içinde clean_action), action_archive’in doğrudan çağrılmasında ise bunu yapmaz. Testler metodu yalnızca Python’da çağırdı ve orada eksik alan fark edilmedi.

Düzeltme tek bir satırdır ("views": [(False, "form")]); buna, tam olarak bu anahtarı isteyen bir test kontrolü eklenir. Bu sırada hiçbir şey arşivlenmedi. Ders: İstemcinin doğrudan çağırdığı bir metottan eylem döndüren (action_archive, action_unarchive ve benzerleri), her zaman views değerini de vermelidir.

Kurulum

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

Bağımlılıklar base ve contacts’tır. Kurulumdan sonra Odoo hizmeti yeniden başlatılmalıdır, çünkü modül Python kodu içerir. Üretim sistemi işletenler modülü önce veritabanının bir kopyasına kurar.

Sınırlar

  • Yetki. Kullanıcılar yükseltilmiş yetkilerle arşivlendiği için, bir kişiyi arşivleme yetkisi olan herkes diyalog üzerinden bu şirketin portal erişimlerini de arşivleyebilir. Dahili kullanıcılar için bu geçerli değildir. Portal erişimlerini daha ince ayarla güvenceye almak isteyenlerin modülü uyarlaması gerekir.
  • Otomatik geri yükleme yok. Şirket daha sonra yeniden etkinleştirilirse, kullanıcılar arşivlenmiş kalır. Elle yeniden etkinleştirilmeleri gerekir.
  • Yalnızca kişiler. Modül, kişi olarak şirketleri (res.partner) ilgilendirir. Bir Odoo şirketinin (res.company) arşivlenmesinin, örneğin hâlâ kullanıcıların varsayılan şirketi olduğunda, başka kontrolleri vardır. Modül bunun için tasarlanmamıştır.
  • Yalnızca Odoo 19.0 Community ile test edildi. Diğer sürümler için denemedik.

Sık sorulan sorular

Çalışanlar neden birlikte arşivlenmiyor?

Dahili bir kullanıcının sistemde yetkileri vardır ve çoğunlukla kendi verilerine, görevlerine ve izinlerine bağlıdır. Onu bir şirketin arşivlenmesinin yan etkisi olarak kilitlemek bizim için fazla riskli. Bu nedenle Odoo hata mesajı geçerli kalır.

Onay sorusunu kapatabilir miyim?

Kodda skip_archive_users_wizard bağlamı üzerinden. Arayüzde bir ayar yoktur. Modülü kaldıran, yine Odoo’nun standart davranışını elde eder.

Hangi lisans altındadır?

AGPL-3 altında. Hatalar ve iyileştirmeler şu adreste bir issue olarak memnuniyetle karşılanır: GitHub deposu .

Biricon IT Services'ten destek

Küçük ve orta ölçekli işletmeler için Odoo kurulumlarına bakıyoruz: kurulumdan özelleştirmelere ve geçişlere, süregelen işletime kadar. Müşteri şirketlerini arşivleme gibi süreçleri Odoo’da basitleştirmek, müşterileriniz için bir portal kurmak veya bir modülü üretim ortamınıza güvenle almak istiyorsanız, memnuniyetle yardımcı oluruz. Diğer kendi geliştirmelerimiz: Önek, yıl ve sayaçtan oluşan belge numaraları, Avusturyalı müşteriler için ticaret sicili ve adres doğrulama ve Tekliflerde bölüm olarak ürün setleri.

Hemen iletişime geçin

Durum: 3 Kasım 2026. Aynı günkü düzeltmeyle birlikte modül sürümü 19.0.1.0.0. Görsellerdeki tüm adlar ve giriş adları serbestçe seçilmiştir.