Egy ügyfélcég elvándorolt, a szerződés megszűnt, és Ön archiválni szeretné az Odoóban. Az Odoo hibaüzenettel válaszol: „Nem archiválhat olyan kapcsolatokat, amelyek aktív felhasználóhoz vannak kötve. Előbb archiválja a hozzá tartozó felhasználót.” Ha a cégnek több portálhozzáférése van, ez azt jelenti: minden felhasználót külön megkeresni, külön archiválni, vissza a céghez, újra archiválni.
Erre írtuk meg a kis Cég archiválása a portálfelhasználókkal együtt modult (partner_archive_users) az Odoo 19-hez. A hibaüzenet helyett visszakérdezés érkezik, és „Igen” esetén a portálfelhasználók és a cég egy lépésben archiválódnak. A modul szabad szoftverként az AGPL-3 licenc alatt elérhető a GitHubon:
github.com/Alex0176/odoo-partner-archive-users
A modult a Biricon IT Services-nél 2026. november 3. óta használjuk éles rendszerünkben. Új, így a vele szerzett tapasztalat rövid. Aki átveszi, olvassa el a következő szakaszokat: Hatókör és Korlátok című szakaszt.
A probléma a szabványos Odoóban
Az Odoo egy kapcsolat archiválásakor ellenőrzi, hogy kapcsolódik-e hozzá felhasználó, és ha igen, megszakítja a műveletet. Az ellenőrzésnek van értelme, hiszen minden felhasználónak szüksége van egy kapcsolatra. A belső felhasználóknál, azaz a munkatársaknál a zár szándékos is. Az ügyfelek portálfelhasználóinál azonban elsősorban kézi munkát jelent. Minden olyan ügyfélcég, amelynek portálhozzáférése van, például számlák és jegyek megtekintéséhez, az archiváláskor ugyanezt a folyamatot igényli:
- megkeresni a cég és kapcsolattartóinak felhasználóit,
- mindegyiket külön archiválni,
- vissza a céghez,
- archiválni a céget.
A megoldás: egy visszakérdezés
A modul kibővíti a kapcsolatnál az Művelet → Archiválás útvonalat, az űrlapon és a listában is. Ha a kiválasztott céghez vagy kapcsolattartóihoz aktív portálfelhasználók tartoznak, megnyílik egy párbeszédpanel a „Valóban archiválni kell a céget? A rendszerben még aktív felhasználók vannak.” kérdéssel. Alatta az érintett felhasználók szerepelnek névvel, bejelentkezési névvel és kapcsolattal.
- Igen, a cég és a felhasználók archiválása: Először a felhasználók, majd a cég archiválódik.
- Mégse: Semmi sem változik.
- Nincs portálfelhasználó: Az Odoo úgy viselkedik, mint eddig, nem jelenik meg párbeszédpanel.
Mi archiválódik és mi nem
A hatókör szándékosan szűk:
- Csak portál- és nyilvános felhasználók (
share = True). A belső felhasználókat ezen az úton soha nem archiválja. Ha a kapcsolathoz munkatársi hozzáférés tartozik, az Odoo hibaüzenete megmarad. Így senki sem zár ki véletlenül egy munkatársat azzal, hogy archivált egy céget. - A kapcsolattartók kapcsolatként aktívak maradnak. Csak a portálhozzáférésük archiválódik. Ez megfelel a szabványos Odoónak, amely egy cég archiválásakor az alárendelt kapcsolatokhoz sem nyúl.
- Csak a felület archiválási útvonala. Egy közvetlen
write({'active': False}), például importban vagy szkriptben, változatlanul az Odoo ellenőrzésébe fut.
Technikai megvalósítás
A modul nem hoz létre új mezőket meglévő modelleken. A res.partner.action_archive bővítéséből és egy varázslóból (partner.archive.users.wizard) áll, amely párbeszédpanelként jelenik meg.
| Építőelem | Feladat |
|---|---|
action_archive a kapcsolatnál | Aktív, share = True felhasználókat keres, amelyek a kapcsolathoz vagy (cégeknél) a cég kapcsolataihoz tartoznak. Ha vannak ilyenek, archiválás helyett a párbeszédpanelt adja vissza. |
| Varázsló | Elmenti a céget és a talált felhasználókat, megjeleníti őket, és „Igen” esetén végrehajtja az archiválást az archive_linked_users kontextuskulccsal. |
skip_archive_users_wizard kontextus | Kikapcsolja a párbeszédpanelt. Ekkor ismét az Odoo ellenőrzése érvényes. |
| Hozzáférés | A varázslót a belső felhasználók (base.group_user) hozhatják létre és használhatják. |
| Fordítás | A német (de.po) és a sablon (.pot) mellékelve van. |
A felhasználókat emelt jogosultságokkal keresi és archiválja (sudo). Ezzel a párbeszédpanel olyan felhasználóknál is működik, akiknek nincs hozzáférésük a felhasználókezeléshez. Ennek a hátoldala a következő helyen olvasható: Korlátok.
Egy lelet: A teszt zöld volt, a párbeszédpanel mégis elromlott
A modulban az első használatkor volt egy hiba, amelyet az automatikus tesztek nem találtak meg. Az első „Archiválás” kattintáskor a felületen a párbeszédpanel helyett az Odoo hibaképernyője jelent meg a Cannot read properties of undefined (reading 'map') üzenettel.
Az ok: a webkliens közvetlenül hívja meg az action_archive metódust, és a visszaadott műveletet további előkészítés nélkül hajtja végre. Ennek során kötelezően olvassa a művelet views kulcsát. A mi műveletünknek csak view_mode volt. A type="object" gombokból származó műveleteket a szerver előtte kiegészíti (clean_action a call_button-ben), az action_archive közvetlen hívását nem. A tesztek a metódust csak Pythonban hívták meg, és ott a hiányzó mező nem tűnt fel.
A javítás egy sor ("views": [(False, "form")]), ehhez egy ellenőrzés társul a tesztben, amely pontosan ezt a kulcsot követeli meg. Közben semmi sem archiválódott. A tanulság: aki egy olyan metódusból ad vissza műveletet, amelyet a kliens közvetlenül hív meg (action_archive, action_unarchive és hasonlók), mindig adja meg a views kulcsot is.
Telepítés
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
A függőségek a base és a contacts. A telepítés után az Odoo-szolgáltatást újra kell indítani, mert a modul Python-kódot tartalmaz. Aki éles rendszert üzemeltet, a modult először az adatbázis egy másolatán telepítse.
Korlátok
- Jogosultság. Mivel a felhasználók archiválása emelt jogosultságokkal történik, mindenki, aki archiválhat egy kapcsolatot, a párbeszédpanelen keresztül az adott cég portálhozzáféréseit is archiválhatja. A belső felhasználókra ez nem vonatkozik. Aki a portálhozzáféréseket finomabban szeretné védeni, annak módosítania kell a modult.
- Nincs automatikus visszaállítás. Ha a céget később újra aktiválják, a felhasználók archiváltak maradnak. Kézzel kell őket újra aktiválni.
- Csak kapcsolatok. A modul a cégeket kapcsolatként (
res.partner) érinti. Egy Odoo-cég (res.company) archiválásának más ellenőrzései vannak, például ha még felhasználók alapértelmezett cége. Erre a modul nem való. - Csak az Odoo 19.0 Communityn tesztelve. Más verziókon nem ellenőriztük.
Gyakori kérdések
Miért nem archiválódnak a munkatársak is?
A belső felhasználónak jogosultságai vannak a rendszerben, és többnyire saját adatokhoz, feladatokhoz és jogosultságokhoz kapcsolódik. Egy cég archiválásának mellékhatásaként zárolni őt számunkra túl kockázatos. Ezért marad az Odoo hibaüzenete.
Kikapcsolhatom a visszakérdezést?
A kódban a skip_archive_users_wizard kontextuson keresztül. A felületen nincs ilyen beállítás. Aki a modult eltávolítja, ismét az Odoo szabványos viselkedését kapja.
Milyen licenc alatt áll?
Az AGPL-3 alatt. A hibákat és a fejlesztéseket issue-ként szívesen fogadjuk a következő helyen: GitHub-tároló .
A Biricon IT Services támogatása
Kis- és középvállalkozások Odoo-telepítéseit gondozzuk: a bevezetéstől a testreszabásokon és migrációkon át a folyamatos üzemeltetésig. Ha az Odoóban egyszerűsíteni szeretné az olyan folyamatokat, mint az ügyfélcégek archiválása, portált szeretne kialakítani ügyfelei számára, vagy egy modult szeretne biztonságosan élesbe vinni, szívesen segítünk. További saját fejlesztések: Bizonylatszámok előtagból, évből és számlálóból, Cégjegyzék és címellenőrzés osztrák ügyfelekhez és Termékkészletek az ajánlatban szakaszként.
Állapot: 2026. november 3. Modulverzió: 19.0.1.0.0 az ugyanazon napi javítással. Az ábrákon szereplő összes név és bejelentkezési név szabadon választott.