Asiakasyritys on poistunut, sopimus päättynyt, ja haluatte arkistoida sen Odoossa. Odoo vastaa virheilmoituksella: ”Et voi arkistoida yhteystietoja, jotka on liitetty aktiiviseen käyttäjään. Arkistoi ensin siihen kuuluva käyttäjä.” Jos yrityksellä on useita portaalitunnuksia, se tarkoittaa: jokainen käyttäjä etsitään erikseen, arkistoidaan erikseen, palataan yritykseen ja arkistoidaan se uudelleen.
Kirjoitimme tätä varten pienen moduulin Yrityksen arkistointi portaalikäyttäjineen (partner_archive_users) Odoo 19:lle. Virheilmoituksen sijaan tulee kysymys, ja vastauksella ”Kyllä” portaalikäyttäjät ja yritys arkistoidaan yhdellä kertaa. Moduuli on saatavilla GitHubissa vapaana ohjelmistona AGPL-3-lisenssillä:
github.com/Alex0176/odoo-partner-archive-users
Olemme käyttäneet moduulia Biricon IT Servicesillä tuotantojärjestelmässämme 3. marraskuuta 2026 alkaen. Se on uusi, joten kokemus siitä on lyhyt. Sen käyttöön ottavan kannattaa lukea osiot Laajuus ja Rajoitukset .
Ongelma Odoon vakiotoiminnassa
Odoo tarkistaa yhteystietoa arkistoitaessa, onko siihen liitetty käyttäjä, ja keskeyttää, jos on. Tarkistus on järkevä, koska jokainen käyttäjä tarvitsee yhteystiedon. Sisäisille käyttäjille eli työntekijöille lukitus on myös tarkoituksellinen. Asiakkaiden portaalikäyttäjien kohdalla se on kuitenkin lähinnä käsityötä. Jokainen asiakasyritys, jolla on portaalitunnuksia, esimerkiksi laskujen ja tikettien katseluun, tarvitsee arkistoitaessa saman kulun:
- yrityksen ja sen yhteyshenkilöiden käyttäjien etsiminen,
- jokaisen arkistointi erikseen,
- paluu yritykseen,
- yrityksen arkistointi.
Ratkaisu: kysymys
Moduuli laajentaa yhteystiedon polkua Toiminto → Arkistoi sekä lomakkeella että luettelossa. Jos valitulla yrityksellä tai sen yhteyshenkilöillä on aktiivisia portaalikäyttäjiä, avautuu valintaikkuna, jossa kysytään ”Arkistoidaanko yritys varmasti? Järjestelmässä on vielä aktiivisia käyttäjiä.” Sen alla näkyvät koskettuvat käyttäjät nimineen, kirjautumisnimineen ja yhteystietoineen.
- Kyllä, arkistoi yritys ja käyttäjät: Ensin arkistoidaan käyttäjät, sitten yritys.
- Peruuta: Mikään ei muutu.
- Ei portaalikäyttäjiä: Odoo käyttäytyy kuten ennenkin, valintaikkunaa ei tule.
Mitä arkistoidaan ja mitä ei
Laajuus on tarkoituksella rajattu:
- Vain portaali- ja julkiset käyttäjät (
share = True). Sisäisiä käyttäjiä ei koskaan arkistoida tätä kautta. Jos yhteystietoon on liitetty työntekijän tunnus, Odoon virheilmoitus säilyy. Näin kukaan ei vahingossa lukitse työntekijää arkistoimalla yritystä. - Yhteyshenkilöt pysyvät aktiivisina yhteystietoina. Vain heidän portaalitunnuksensa arkistoidaan. Tämä vastaa Odoon vakiotoimintaa, joka ei myöskään koske alayhteystietoihin yritystä arkistoitaessa.
- Vain käyttöliittymän arkistointipolku. Suora
write({'active': False}), esimerkiksi tuonnissa tai skriptissä, kulkee muuttumattomana Odoon tarkistuksen läpi.
Tekninen toteutus
Moduulilla ei ole uusia kenttiä olemassa oleviin malleihin. Se koostuu metodin res.partner.action_archive laajennuksesta ja ohjatusta toiminnosta (partner.archive.users.wizard), joka ilmestyy valintaikkunana.
| Osa | Tehtävä |
|---|---|
action_archive yhteystiedossa | Etsii aktiiviset käyttäjät, joilla share = True ja jotka on liitetty yhteystietoon tai (yrityksillä) yrityksen yhteystietoihin. Jos sellaisia on, arkistoinnin sijaan palautetaan valintaikkuna. |
| Ohjattu toiminto | Tallentaa yrityksen ja löydetyt käyttäjät, näyttää ne ja suorittaa vastauksella ”Kyllä” arkistoinnin kontekstiavaimella archive_linked_users. |
Konteksti skip_archive_users_wizard | Kytkee valintaikkunan pois. Silloin Odoon tarkistus on taas voimassa. |
| Käyttöoikeus | Ohjatun toiminnon saavat luoda ja käyttää sisäiset käyttäjät (base.group_user). |
| Käännös | Saksa (de.po) ja pohja (.pot) ovat mukana. |
Käyttäjät haetaan ja arkistoidaan korotetuin oikeuksin (sudo). Siksi valintaikkuna toimii myös käyttäjille, joilla ei ole pääsyä käyttäjähallintaan. Sen kääntöpuoli on kuvattu kohdassa Rajoitukset.
Löytö: testi oli vihreä, mutta valintaikkuna silti rikki
Moduulissa oli ensimmäisessä käytössä virhe, jota automaattiset testit eivät löytäneet. Ensimmäisellä napsautuksella kohtaan ”Arkistoi” käyttöliittymässä valintaikkunan sijaan ilmestyi Odoon virhenäyttö tekstillä Cannot read properties of undefined (reading 'map').
Syy: web-asiakas kutsuu metodia action_archive suoraan ja suorittaa palautetun toiminnon ilman jatkokäsittelyä. Siinä se lukee pakollisesti toiminnon avaimen views. Meidän toiminnollamme oli vain view_mode. Palvelin täydentää toiminnot painikkeista, joilla on type="object", etukäteen (clean_action kohdassa call_button), mutta ei metodin action_archive suoraa kutsua. Testit kutsuivat metodia vain Pythonissa, ja siellä puuttuva kenttä ei näkynyt.
Korjaus on yksi rivi ("views": [(False, "form")]), lisäksi testiin tuli tarkistus, joka vaatii juuri tämän avaimen. Mitään ei siinä yhteydessä arkistoitu. Opetus: kun palautetaan toiminto metodista, jota asiakas kutsuu suoraan (action_archive, action_unarchive ja vastaavat), views kannattaa aina antaa mukana.
Asennus
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
Riippuvuudet ovat base ja contacts. Asennuksen jälkeen Odoo-palvelu on käynnistettävä uudelleen, koska moduulissa on Python-koodia. Tuotantojärjestelmää ylläpitävän kannattaa asentaa moduuli ensin tietokannan kopioon.
Rajoitukset
- Käyttöoikeus. Koska käyttäjät arkistoidaan korotetuin oikeuksin, jokainen, joka saa arkistoida yhteystiedon, voi valintaikkunan kautta arkistoida myös tämän yrityksen portaalitunnukset. Sisäisiin käyttäjiin tämä ei päde. Jos portaalitunnukset halutaan suojata hienojakoisemmin, moduulia on mukautettava.
- Ei automaattista palautusta. Jos yritys aktivoidaan myöhemmin uudelleen, käyttäjät pysyvät arkistoituina. Ne on aktivoitava uudelleen käsin.
- Vain yhteystiedot. Moduuli koskee yrityksiä yhteystietoina (
res.partner). Odoo-yrityksen (res.company) arkistoinnissa on muita tarkistuksia, esimerkiksi jos se on yhä käyttäjien oletusyritys. Moduulia ei ole tarkoitettu siihen. - Testattu vain Odoo 19.0 Communityllä. Muille versioille emme ole sitä tarkistaneet.
Usein kysytyt kysymykset
Miksi työntekijöitä ei arkistoida mukana?
Sisäisellä käyttäjällä on oikeuksia järjestelmässä, ja hän on yleensä liitetty omiin tietoihin, tehtäviin ja käyttöoikeuksiin. Hänen lukitsemisensa yrityksen arkistoinnin sivuvaikutuksena on meistä liian riskialtista. Siksi Odoon virheilmoitus säilyy.
Voinko kytkeä kysymyksen pois?
Koodissa kontekstilla skip_archive_users_wizard. Käyttöliittymässä asetusta ei ole. Kun moduulin asennus poistetaan, Odoon vakiotoiminta palautuu.
Millä lisenssillä se julkaistaan?
AGPL-3-lisenssillä. Virheet ja parannukset ovat tervetulleita issueina GitHub-arkistossa .
Biricon IT Servicesin tuki
Huollamme Odoo-asennuksia pienille ja keskisuurille yrityksille: käyttöönotosta mukautuksiin ja migraatioihin sekä jatkuvaan käyttöön. Jos haluatte yksinkertaistaa Odoossa toimintoja, kuten asiakasyritysten arkistointia, perustaa asiakkaillenne portaalin tai viedä moduulin turvallisesti tuotantoinstanssiinne, autamme mielellämme. Muita omia kehityshankkeita: Asiakirjanumerot etuliitteestä, vuodesta ja laskurista, Kaupparekisteri ja osoitetarkistus itävaltalaisille asiakkaille ja Tuotesetit tarjouksessa osiona.
Tilanne: 3. marraskuuta 2026. Moduulin versio 19.0.1.0.0 samana päivänä tehdyllä korjauksella. Kaikki kuvien nimet ja kirjautumisnimet on valittu vapaasti.