Klientettevõte on lahkunud, leping lõppenud ja soovite ettevõtte Odoos arhiveerida. Odoo vastab veateatega: „Te ei saa arhiveerida kontakte, mis on seotud aktiivse kasutajaga. Arhiveerige esmalt seotud kasutaja.“ Kui ettevõttel on mitu portaalikontot, tähendab see, et peate iga kasutaja eraldi üles otsima ja arhiveerima ning seejärel ettevõtte juurde tagasi pöörduma ja seda uuesti arhiveerima.
Selleks lõime Odoo 19 jaoks väikese mooduli Firma archivieren samt Portalbenutzern (partner_archive_users). Veateate asemel kuvatakse kinnitusküsimus ning vastuse „Jah“ korral arhiveeritakse portaalikasutajad ja ettevõte ühe sammuga. Moodul on vaba tarkvarana AGPL-3 litsentsi alusel GitHubis saadaval:
github.com/Alex0176/odoo-partner-archive-users
Kasutame moodulit Biricon IT Servicesi tootmiskeskkonnas alates 3. novembrist 2026. Moodul on uus, seega on kasutuskogemus veel lühike. Selle kasutuselevõtjad peaksid jaotised Ulatus ja piirangute kohta läbi lugema.
Probleem Odoo standardlahenduses
Kontakti arhiveerimisel kontrollib Odoo, kas sellega on seotud kasutaja, ning kui on, katkestab toimingu. See kontroll on põhjendatud, sest iga kasutaja vajab kontakti. Sisekasutajate ehk töötajate puhul on selline piirang ka taotluslik. Klientide portaalikasutajate puhul tekitab see aga eelkõige käsitööd. Iga kliendiettevõtte arhiveerimisel, millel on näiteks arvete ja tugipiletite vaatamiseks portaalikontod, tuleb läbida samad sammud:
- otsida üles ettevõtte ja selle kontaktisikutega seotud kasutajad,
- arhiveerida igaüks eraldi,
- minna tagasi ettevõtte juurde,
- arhiveerida ettevõte.
Lahendus: kinnitusküsimus
Moodul täiendab kontakti toimingut Toiming → Arhiveeri nii vormi- kui ka loendivaates. Kui valitud ettevõtte või selle kontaktisikutega on seotud aktiivsed portaalikasutajad, avaneb dialoog küsimusega „Kas soovite ettevõtte kindlasti arhiveerida? Süsteemis on veel aktiivseid kasutajaid.“ Selle all kuvatakse asjaomaste kasutajate nimed, sisselogimisnimed ja kontaktid.
- Jah, arhiveeri ettevõte ja kasutajad: kõigepealt arhiveeritakse kasutajad, seejärel ettevõte.
- Loobu: midagi ei muudeta.
- Portaalikasutajaid pole: Odoo toimib nagu varem ja dialoogi ei kuvata.
Mis arhiveeritakse ja mis mitte
Mooduli ulatus on teadlikult kitsas:
- Ainult portaali- ja avalikud kasutajad (
share = True). Sisekasutajaid selle toiminguga kunagi ei arhiveerita. Kui kontaktiga on seotud töötaja kasutajakonto, kuvatakse endiselt Odoo veateade. Nii ei blokeerita ettevõtte arhiveerimisel kogemata ühegi töötaja ligipääsu. - Kontaktisikud jäävad kontaktidena aktiivseks. Arhiveeritakse ainult nende portaalikontod. See vastab Odoo tavakäitumisele: ettevõtte arhiveerimisel ei muudeta ka selle alamkontakte.
- Ainult kasutajaliidese arhiveerimistoiming. Otsese kutse
write({'active': False})korral, näiteks importimisel või skriptis, rakendub endiselt Odoo tavapärane kontroll.
Tehniline teostus
Moodul ei lisa olemasolevatele mudelitele uusi välju. See koosneb meetodi res.partner.action_archive laiendusest ja viisardist (partner.archive.users.wizard), mis kuvatakse dialoogina.
| Komponent | Ülesanne |
|---|---|
Kontakti meetod action_archive | Otsib aktiivseid kasutajaid väärtusega share = True, kes on seotud kontakti või ettevõtte puhul selle kontaktidega. Kui neid leidub, tagastatakse arhiveerimise asemel dialoog. |
| Viisard | Salvestab ettevõtte ja leitud kasutajad, kuvab need ning vastuse „Jah“ korral käivitab arhiveerimise kontekstivõtmega archive_linked_users. |
Kontekst skip_archive_users_wizard | Lülitab dialoogi välja. Siis rakendub taas Odoo tavapärane kontroll. |
| Juurdepääs | Viisardit tohivad luua ja kasutada sisekasutajad (base.group_user). |
| Tõlge | Kaasas on saksakeelne tõlge (de.po) ja tõlkemall (.pot). |
Kasutajaid otsitakse ja arhiveeritakse kõrgendatud õigustega (sudo). Tänu sellele toimib dialoog ka neil, kellel puudub juurdepääs kasutajahaldusele. Selle varjukülge käsitleb jaotis piirangute kohta.
Üks avastus: test läbis kontrolli, kuid dialoogiaken ei töötanud
Mooduli esimesel kasutamisel ilmnes viga, mida automaattestid ei avastanud. Esimesel klõpsul kasutajaliidese käsul „Arhiveeri“ ilmus dialoogi asemel Odoo veakuva teatega Cannot read properties of undefined (reading 'map').
Põhjus: veebiklient kutsub meetodi action_archive otse välja ja käivitab tagastatud toimingu ilma täiendava ettevalmistuseta. Seejuures loeb ta tingimata toimingu võtit views. Meie toimingus oli ainult view_mode. Nuppudest atribuudiga type="object" käivitatud toiminguid täiendab server eelnevalt (clean_action meetodis call_button), kuid meetodi action_archive otsekutset mitte. Testid kutsusid meetodit välja ainult Pythonis, kus puuduva välja probleem ei ilmnenud.
Parandus koosneb ühest reast ("views": [(False, "form")]), millele lisandub testis kontroll just selle võtme olemasolu kohta. Vea ilmnemisel ei arhiveeritud midagi. Õppetund: kui tagastate toimingu meetodist, mille klient otse välja kutsub (action_archive, action_unarchive jms), tuleks alati lisada ka views.
Paigaldamine
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
Sõltuvused on base ja contacts. Pärast paigaldamist tuleb Odoo teenus taaskäivitada, sest moodul sisaldab Pythoni koodi. Töökeskkonnas kasutamiseks tuleks moodul esmalt paigaldada andmebaasi koopiale.
piirangute kohta
- Õigused. Kuna kasutajaid arhiveeritakse kõrgendatud õigustega, saab igaüks, kellel on õigus kontakti arhiveerida, dialoogi kaudu arhiveerida ka selle ettevõtte portaalikontod. Sisekasutajatele see ei laiene. Kui soovite portaalikontode õigusi täpsemalt piirata, tuleb moodulit kohandada.
- Automaatset taastamist pole. Kui ettevõte hiljem uuesti aktiveeritakse, jäävad kasutajad arhiveerituks. Nad tuleb käsitsi taasaktiveerida.
- Ainult kontaktid. Moodul puudutab kontaktidena salvestatud ettevõtteid (
res.partner). Odoo ettevõtte (res.company) arhiveerimisel rakenduvad teised kontrollid, näiteks siis, kui see on veel mõne kasutaja vaikeettevõte. Selleks pole moodul mõeldud. - Testitud ainult Odoo 19.0 Community versiooniga. Teiste versioonidega pole me moodulit kontrollinud.
Korduma kippuvad küsimused
Miks töötajaid koos ettevõttega ei arhiveerita?
Sisekasutajal on süsteemis õigused ning temaga on tavaliselt seotud andmed, ülesanded ja juurdepääsuõigused. Tema ligipääsu blokeerimine ettevõtte arhiveerimise kõrvalmõjuna on meie hinnangul liiga riskantne. Seetõttu kuvatakse sel juhul endiselt Odoo veateade.
Kas saan kinnitusküsimuse välja lülitada?
Koodis saab seda teha konteksti skip_archive_users_wizard kaudu. Kasutajaliideses vastavat seadistust pole. Mooduli eemaldamisel taastub Odoo tavakäitumine.
Millise litsentsi alusel moodulit levitatakse?
AGPL-3 alusel. Veateated ja parendusettepanekud on oodatud GitHubi hoidlas Issues-jaotises.
Biricon IT Services aitab
Toetame väikeste ja keskmise suurusega ettevõtete Odoo süsteeme alates juurutamisest, kohandamisest ja migreerimisest kuni igapäevase käitamiseni. Kui soovite lihtsustada Odoo töövooge, näiteks kliendiettevõtete arhiveerimist, luua klientidele portaali või võtta mooduli turvaliselt töökeskkonnas kasutusele, aitame hea meelega. Veel meie omaarendusi: Dokumendinumbrid prefiksist, aastast ja loendurist, Äriregistri- ja aadressikontroll Austria klientidele ja Tootekomplektid hinnapakkumises eraldi jaotisena.
Seisuga 3. november 2026. Mooduli versioon 19.0.1.0.0 koos samal päeval tehtud parandusega. Kõik joonistel olevad nimed ja sisselogimisnimed on väljamõeldud.