Skip to Content

Odoo 19: archivácia firmy vrátane portálových používateľov – modul partner_archive_users s otázkou namiesto chybovej hlášky

3. novembra 2026 | Odoo 19 Community | Vlastný vývoj
3. novembra 2026 pomocou
Odoo 19: archivácia firmy vrátane portálových používateľov – modul partner_archive_users s otázkou namiesto chybovej hlášky

Modul Odoo 19 partner_archive_users: otázka pri archivácii firmy s portálovými používateľmi

Zákaznícka firma odišla, zmluva skončila a vy ju chcete v Odoo archivovať. Odoo odpovie chybovou hláškou: „Nemôžete archivovať kontakty, ktoré sú prepojené s aktívnym používateľom. Najprv archivujte príslušného používateľa.“ Ak má firma viacero portálových prístupov, znamená to: každého používateľa jednotlivo vyhľadať, jednotlivo archivovať, späť k firme, znova archivovať.

Napísali sme na to malý modul Archivácia firmy vrátane portálových používateľov (partner_archive_users) pre Odoo 19. Namiesto chybovej hlášky sa zobrazí otázka a pri „Áno“ sa portáloví používatelia a firma archivujú v jednom kroku. Modul je dostupný ako slobodný softvér pod licenciou AGPL-3 na GitHube:

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

Modul používame v Biricon IT Services od 3. novembra 2026 v našom produkčnom systéme. Je nový, skúsenosť s ním je teda krátka. Kto ho preberie, mal by si prečítať časti o rozsahu a obmedzeniach .

Problém v štandarde Odoo

Odoo pri archivácii kontaktu kontroluje, či sa na neho viaže používateľ, a ak áno, preruší operáciu. Kontrola dáva zmysel, pretože každý používateľ potrebuje kontakt. Pri interných používateľoch, teda zamestnancoch, je zámok aj zámerný. Pri portálových používateľoch zákazníkov je to však predovšetkým ručná práca. Každá zákaznícka firma s portálovými prístupmi, napríklad na nahliadanie do faktúr a tiketov, potrebuje pri archivácii ten istý postup:

  1. Vyhľadať používateľov firmy a jej kontaktných osôb,
  2. každého jednotlivo archivovať,
  3. späť k firme,
  4. archivovať firmu.

Riešenie: otázka

Modul rozširuje cestu Akcia → Archivovať pri kontakte, vo formulári aj v zozname. Ak sa na zvolenú firmu alebo jej kontaktné osoby viažu aktívni portáloví používatelia, otvorí sa dialóg s otázkou „Naozaj chcete firmu archivovať? V systéme sú ešte aktívni používatelia.“ Pod ňou sú dotknutí používatelia s menom, prihlasovacím menom a kontaktom.

Porovnanie: chybová hláška Odoo pri archivácii firmy a dialóg s otázkou z modulu

  • Áno, archivovať firmu a používateľov: Najprv sa archivujú používatelia, potom firma.
  • Zrušiť: Nič sa nezmení.
  • Žiadni portáloví používatelia: Odoo sa správa ako doteraz, dialóg sa nezobrazí.

Čo sa archivuje a čo nie

Rozsah je zámerne úzky:

Prehľad: portáloví používatelia a firma sa archivujú, kontaktné osoby zostávajú aktívne, interní používatelia sa nikdy nedotknú

  • Iba portáloví a verejní používatelia (share = True). Interní používatelia sa touto cestou nikdy nearchivujú. Ak sa na kontakt viaže prístup zamestnanca, chybová hláška Odoo zostane. Nikto tak omylom nezablokuje zamestnanca tým, že archivoval firmu.
  • Kontaktné osoby zostávajú aktívne ako kontakty. Archivujú sa iba ich portálové prístupy. To zodpovedá štandardu Odoo, ktorý pri archivácii firmy podkontakty tiež nechá nedotknuté.
  • Iba cesta archivácie v rozhraní. Priame write({'active': False}), napríklad v importe alebo skripte, prejde nezmenene do kontroly Odoo.

Technická realizácia

Modul nemá žiadne nové polia v existujúcich modeloch. Skladá sa z rozšírenia res.partner.action_archive a asistenta (partner.archive.users.wizard), ktorý sa zobrazuje ako dialóg.

Stavebný prvokÚloha
action_archive pri kontakteVyhľadá aktívnych používateľov s share = True, ktorí sa viažu na kontakt alebo (pri firmách) na kontakty firmy. Ak nejakí existujú, namiesto archivácie sa vráti dialóg.
AsistentUloží firmu a nájdených používateľov, zobrazí ich a pri „Áno“ vykoná archiváciu s kľúčom kontextu archive_linked_users.
Kontext skip_archive_users_wizardVypne dialóg. Potom opäť platí kontrola Odoo.
PrístupAsistenta môžu vytvárať a používať interní používatelia (base.group_user).
PrekladNemčina (de.po) a šablóna (.pot) sú priložené.

Používatelia sa vyhľadávajú a archivujú so zvýšenými právami (sudo). Vďaka tomu dialóg funguje aj pre používateľov bez prístupu k správe používateľov. Druhá strana veci je uvedená v časti obmedzeniach.

Zistenie: test bol zelený, dialóg napriek tomu nefungoval

Modul mal pri prvom nasadení chybu, ktorú automatické testy nenašli. Pri prvom kliknutí na „Archivovať“ v rozhraní sa namiesto dialógu zobrazila chybová obrazovka Odoo s Cannot read properties of undefined (reading 'map').

Príčina: Webový klient volá action_archive priamo a vrátenú akciu vykoná bez ďalšieho spracovania. Pritom nevyhnutne číta kľúč views akcie. Naša akcia mala iba view_mode. Akcie z tlačidiel s type="object" server predtým doplní (clean_action v call_button), priame volanie action_archive nie. Testy volali metódu iba v Pythone a tam chýbajúce pole nebolo vidieť.

Oprava je jeden riadok ("views": [(False, "form")]), pribudla k nej kontrola v teste, ktorá vyžaduje presne tento kľúč. Nič sa pritom nearchivovalo. Poučenie: kto vracia akciu z metódy, ktorú klient volá priamo (action_archive, action_unarchive a podobné), mal by vždy pribaliť views.

Inštalácia

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

Závislosti sú base a contacts. Po inštalácii treba službu Odoo reštartovať, pretože modul obsahuje kód Pythonu. Kto prevádzkuje produkčný systém, nainštaluje modul najprv na kópii databázy.

obmedzeniach

  • Oprávnenie. Pretože sa používatelia archivujú so zvýšenými právami, každý, kto môže archivovať kontakt, môže cez dialóg archivovať aj portálové prístupy tejto firmy. Pre interných používateľov to neplatí. Kto chce portálové prístupy zabezpečiť jemnejšie, musí modul upraviť.
  • Žiadna automatická obnova. Ak sa firma neskôr opäť aktivuje, používatelia zostanú archivovaní. Musia sa reaktivovať ručne.
  • Iba kontakty. Modul sa týka firiem ako kontaktov (res.partner). Archivácia firmy Odoo (res.company) má iné kontroly, napríklad keď je ešte štandardnou firmou používateľov. Modul na to nie je určený.
  • Testované iba na Odoo 19.0 Community. Pre iné verzie sme ho nepreverovali.

Časté otázky

Prečo sa zamestnanci nearchivujú spolu s firmou?

Interný používateľ má v systéme práva a je zvyčajne prepojený s vlastnými údajmi, úlohami a oprávneniami. Zablokovať ho ako vedľajší účinok archivácie firmy je pre nás príliš riskantné. Preto zostáva chybová hláška Odoo.

Môžem otázku vypnúť?

V kóde cez kontext skip_archive_users_wizard. Nastavenie v rozhraní neexistuje. Kto modul odinštaluje, dostane opäť štandardné správanie Odoo.

Pod akou licenciou je?

Pod AGPL-3. Chyby a vylepšenia sú vítané ako issue v repozitári GitHub .

Podpora od Biricon IT Services

Spravujeme inštalácie Odoo pre malé a stredné podniky: od zavedenia cez úpravy a migrácie až po bežnú prevádzku. Ak chcete zjednodušiť postupy, ako je archivácia zákazníckych firiem v Odoo, zriadiť portál pre svojich zákazníkov alebo bezpečne dostať modul do svojej produkčnej inštancie, radi pomôžeme. Ďalšie vlastné vývoje: Čísla dokladov z prefixu, roka a počítadla, Obchodný register a overenie adries pre rakúskych zákazníkov a Produktové sety v ponuke ako sekcia.

Kontaktujte nás

Stav k 3. novembru 2026. Verzia modulu 19.0.1.0.0 s opravou z toho istého dňa. Všetky mená a prihlasovacie mená na obrázkoch sú zvolené voľne.