Klienta uzņēmums ir aizgājis, līgums izbeigts, un Jūs vēlaties to arhivēt Odoo. Odoo atbild ar kļūdas paziņojumu: „Nevar arhivēt kontaktus, kas ir saistīti ar aktīvu lietotāju. Vispirms arhivējiet attiecīgo lietotāju.” Ja uzņēmumam ir vairākas portāla piekļuves, tas nozīmē: katru lietotāju atsevišķi atrast, atsevišķi arhivēt, atgriezties pie uzņēmuma, arhivēt atkārtoti.
Tāpēc mēs uzrakstījām mazo moduli Uzņēmuma arhivēšana kopā ar portāla lietotājiem (partner_archive_users) Odoo 19. Kļūdas paziņojuma vietā parādās pārjautājums, un, atbildot „Jā”, portāla lietotāji un uzņēmums tiek arhivēti vienā solī. Modulis ir pieejams kā brīvā programmatūra ar AGPL-3 licenci GitHub:
github.com/Alex0176/odoo-partner-archive-users
Mēs moduli Biricon IT Services izmantojam savā produkcijas sistēmā kopš 2026. gada 3. novembra. Tas ir jauns, tāpēc pieredze ar to ir īsa. Kam to pārņem, ieteicams izlasīt sadaļu Apjoms un Ierobežojumi .
Problēma Odoo standartā
Odoo, arhivējot kontaktu, pārbauda, vai tam piesaistīts lietotājs, un pārtrauc, ja jā. Pārbaudei ir jēga, jo katram lietotājam vajadzīgs kontakts. Iekšējiem lietotājiem, tātad darbiniekiem, bloķēšana ir arī vēlama. Taču klientu portāla lietotājiem tā galvenokārt ir roku darbs. Katram klienta uzņēmumam ar portāla piekļuvēm, piemēram, rēķinu un biļešu apskatei, arhivējot nepieciešama tā pati darbību secība:
- Meklēt uzņēmuma un tā kontaktpersonu lietotājus,
- katru atsevišķi arhivēt,
- atgriezties pie uzņēmuma,
- arhivēt uzņēmumu.
Risinājums: pārjautājums
Modulis paplašina ceļu Darbība → Arhivēt kontaktā, gan formā, gan sarakstā. Ja izvēlētajam uzņēmumam vai tā kontaktpersonām ir piesaistīti aktīvi portāla lietotāji, atveras dialogs ar jautājumu „Vai uzņēmums tiešām jāarhivē? Sistēmā vēl ir aktīvi lietotāji.” Zem tā ir redzami skartie lietotāji ar vārdu, pieteikšanās vārdu un kontaktu.
- Jā, arhivēt uzņēmumu un lietotājus: vispirms tiek arhivēti lietotāji, tad uzņēmums.
- Atcelt: nekas nemainās.
- Portāla lietotāju nav: Odoo uzvedas kā līdz šim, dialogs neparādās.
Kas tiek arhivēts un kas ne
Apjoms ir apzināti šaurs:
- Tikai portāla un publiskie lietotāji (
share = True). Iekšējie lietotāji šajā ceļā netiek arhivēti nekad. Ja pie kontakta piesaistīta darbinieka piekļuve, Odoo kļūdas paziņojums paliek spēkā. Tādējādi neviens nejauši neaizslēdz darbinieku tāpēc, ka arhivējis uzņēmumu. - Kontaktpersonas kā kontakti paliek aktīvas. Tiek arhivētas tikai to portāla piekļuves. Tas atbilst Odoo standartam, kas, arhivējot uzņēmumu, apakškontaktus arī neskar.
- Tikai saskarnes arhivēšanas ceļš. Tiešs
write({'active': False}), piemēram, importā vai skriptā, nonāk Odoo pārbaudē nemainīti.
Tehniskais risinājums
Modulim nav jaunu lauku esošajos modeļos. Tas sastāv no res.partner.action_archive paplašinājuma un palīga (partner.archive.users.wizard), kas parādās kā dialogs.
| Komponents | Uzdevums |
|---|---|
action_archive kontaktā | Meklē aktīvus lietotājus ar share = True, kas piesaistīti kontaktam vai (uzņēmumiem) uzņēmuma kontaktiem. Ja tādi ir, arhivēšanas vietā tiek atgriezts dialogs. |
| Palīgs | Saglabā uzņēmumu un atrastos lietotājus, parāda tos un, atbildot „Jā”, veic arhivēšanu ar konteksta atslēgu archive_linked_users. |
Konteksts skip_archive_users_wizard | Izslēdz dialogu. Tad atkal ir spēkā Odoo pārbaude. |
| Piekļuve | Palīgu drīkst izveidot un izmantot iekšējie lietotāji (base.group_user). |
| Tulkojums | Vācu valoda (de.po) un veidne (.pot) ir pievienotas. |
Lietotāji tiek meklēti un arhivēti ar paaugstinātām tiesībām (sudo). Tādējādi dialogs darbojas arī lietotājiem bez piekļuves lietotāju pārvaldībai. Otra puse ir aprakstīta sadaļā Ierobežojumi.
Atradums: tests bija zaļš, dialogs tomēr bojāts
Modulim pirmajā lietošanā bija kļūda, ko automātiskie testi neatrada. Pirmajā klikšķī uz „Arhivēt” saskarnē dialoga vietā parādījās Odoo kļūdas ekrāns ar Cannot read properties of undefined (reading 'map').
Cēlonis: tīmekļa klients izsauc action_archive tieši un izpilda atgriezto darbību bez papildu sagatavošanas. Pie tam tas obligāti nolasa darbības atslēgu views. Mūsu darbībai bija tikai view_mode. Darbības no pogām ar type="object" serveris iepriekš papildina (clean_action funkcijā call_button), bet tiešo action_archive izsaukumu ne. Testi metodi izsauca tikai Python, un tur trūkstošais lauks nebija pamanāms.
Labojums ir viena rindiņa ("views": [(False, "form")]), tam pievienota pārbaude testā, kas prasa tieši šo atslēgu. Pie tam nekas netika arhivēts. Mācība: kas atgriež darbību no metodes, ko klients izsauc tieši (action_archive, action_unarchive un līdzīgas), lai vienmēr pievieno views.
Uzstādīšana
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
Atkarības ir base un contacts. Pēc uzstādīšanas Odoo pakalpojums jārestartē, jo modulis satur Python kodu. Kas darbina produkcijas sistēmu, moduli vispirms uzstāda datubāzes kopijā.
Ierobežojumi
- Atļauja. Tā kā lietotāji tiek arhivēti ar paaugstinātām tiesībām, ikviens, kam atļauts arhivēt kontaktu, ar dialogu var arhivēt arī šī uzņēmuma portāla piekļuves. Iekšējiem lietotājiem tas neattiecas. Kas vēlas portāla piekļuves aizsargāt smalkāk, moduli jāpielāgo.
- Nav automātiskas atjaunošanas. Ja uzņēmums vēlāk tiek atkal aktivizēts, lietotāji paliek arhivēti. Tie jāreaktivizē ar roku.
- Tikai kontakti. Modulis attiecas uz uzņēmumiem kā kontaktiem (
res.partner). Odoo uzņēmuma (res.company) arhivēšanai ir citas pārbaudes, piemēram, ja tas vēl ir lietotāju noklusējuma uzņēmums. Tam modulis nav paredzēts. - Pārbaudīts tikai Odoo 19.0 Community. Citām versijām mēs to neesam pārbaudījuši.
Biežāk uzdotie jautājumi
Kāpēc darbinieki netiek arhivēti līdzi?
Iekšējam lietotājam sistēmā ir tiesības, un viņš parasti ir saistīts ar saviem datiem, uzdevumiem un atļaujām. Bloķēt viņu kā blakusefektu uzņēmuma arhivēšanai mums ir pārāk riskanti. Tāpēc paliek Odoo kļūdas paziņojums.
Vai pārjautājumu var izslēgt?
Kodā, izmantojot kontekstu skip_archive_users_wizard. Iestatījuma saskarnē nav. Kas moduli atinstalē, atkal saņem Odoo standarta uzvedību.
Kādai licencei tas pakļauts?
AGPL-3. Kļūdu ziņojumi un uzlabojumi ir laipni gaidīti kā issue GitHub repozitorijā .
Biricon IT Services atbalsts
Mēs apkalpojam Odoo instalācijas mazajiem un vidējiem uzņēmumiem: no ieviešanas, pielāgojumiem un migrācijām līdz pastāvīgai darbībai. Ja vēlaties vienkāršot darbības, piemēram, klientu uzņēmumu arhivēšanu Odoo, ieviest portālu saviem klientiem vai droši ievest moduli savā produkcijas instancē, mēs labprāt palīdzēsim. Citas pašu izstrādes: Dokumentu numuri no prefiksa, gada un skaitītāja, Uzņēmumu reģistrs un adrešu pārbaude Austrijas klientiem un Produktu komplekti piedāvājumā kā sadaļa.
Stāvoklis uz 2026. gada 3. novembri. Moduļa versija 19.0.1.0.0 ar tā paša datuma labojumu. Visi vārdi un pieteikšanās vārdi attēlos ir brīvi izvēlēti.