Siirry sisältöön

Odoo 19: yrityksen arkistointi portaalikäyttäjineen – moduuli partner_archive_users, joka kysyy virheilmoituksen sijaan

3. marraskuuta 2026 | Odoo 19 Community | Oma kehitys
3. marraskuuta 2026 kirjoittanut
Odoo 19: yrityksen arkistointi portaalikäyttäjineen – moduuli partner_archive_users, joka kysyy virheilmoituksen sijaan

Odoo 19 -moduuli partner_archive_users: kysymys arkistoitaessa yritystä, jolla on portaalikäyttäjiä

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:

  1. yrityksen ja sen yhteyshenkilöiden käyttäjien etsiminen,
  2. jokaisen arkistointi erikseen,
  3. paluu yritykseen,
  4. 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.

Vertailu: Odoon virheilmoitus yritystä arkistoitaessa ja moduulin kysymysikkuna

  • 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:

Yleiskuva: portaalikäyttäjät ja yritys arkistoidaan, yhteyshenkilöt pysyvät aktiivisina, sisäisiin käyttäjiin ei koskaan kosketa

  • 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.

OsaTehtävä
action_archive yhteystiedossaEtsii 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 toimintoTallentaa yrityksen ja löydetyt käyttäjät, näyttää ne ja suorittaa vastauksella ”Kyllä” arkistoinnin kontekstiavaimella archive_linked_users.
Konteksti skip_archive_users_wizardKytkee valintaikkunan pois. Silloin Odoon tarkistus on taas voimassa.
KäyttöoikeusOhjatun toiminnon saavat luoda ja käyttää sisäiset käyttäjät (base.group_user).
KäännösSaksa (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.

Ottakaa yhteyttä nyt

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.