Skip to Content

Odoo 19: arkivere firma sammen med portalbrukere – modulen partner_archive_users med spørsmål i stedet for feilmelding

3. november 2026 | Odoo 19 Community | Egenutvikling
3. november 2026 etter
Odoo 19: arkivere firma sammen med portalbrukere – modulen partner_archive_users med spørsmål i stedet for feilmelding

Odoo 19-modulen partner_archive_users: spørsmål ved arkivering av et firma med portalbrukere

Et kundefirma har flyttet, kontrakten er avsluttet, og du vil arkivere det i Odoo. Odoo svarer med en feilmelding: «Du kan ikke arkivere kontakter som er knyttet til en aktiv bruker. Arkiver først den tilhørende brukeren.» Har firmaet flere portaltilganger, betyr det: finn hver bruker enkeltvis, arkiver enkeltvis, tilbake til firmaet, arkiver på nytt.

Til dette har vi skrevet den lille modulen Firma archivieren samt Portalbenutzern (partner_archive_users) for Odoo 19. I stedet for feilmeldingen kommer et spørsmål, og ved «Ja» arkiveres portalbrukerne og firmaet i ett steg. Modulen ligger som fri programvare under AGPL-3-lisensen på GitHub:

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

Vi har brukt modulen hos Biricon IT Services i produksjonssystemet vårt siden 3. november 2026. Den er ny, så erfaringen med den er kort. Den som tar den i bruk, bør lese avsnittene om omfang og begrensninger .

Problemet i Odoo-standarden

Ved arkivering av en kontakt kontrollerer Odoo om en bruker er knyttet til den, og avbryter hvis så er tilfelle. Kontrollen gir mening, for hver bruker trenger en kontakt. For interne brukere, altså ansatte, er sperren også tilsiktet. For kunders portalbrukere er den derimot først og fremst manuelt arbeid. Hvert kundefirma med portaltilganger, for eksempel for å se fakturaer og saker, krever samme forløp ved arkivering:

  1. Finne brukerne til firmaet og kontaktpersonene,
  2. arkivere hver enkelt,
  3. tilbake til firmaet,
  4. arkivere firmaet.

Løsningen: et spørsmål

Modulen utvider veien Handling → Arkiver på kontakten, i skjemaet og i listen. Er det aktive portalbrukere knyttet til det valgte firmaet eller dets kontaktpersoner, åpnes en dialog med spørsmålet «Skal firmaet virkelig arkiveres? Det finnes fortsatt aktive brukere i systemet.» Under står de berørte brukerne med navn, påloggingsnavn og kontakt.

Sammenligning: Odoos feilmelding ved arkivering av et firma og modulens spørsmålsdialog

  • Ja, arkiver firma og brukere: Først arkiveres brukerne, deretter firmaet.
  • Avbryt: Ingenting endres.
  • Ingen portalbrukere finnes: Odoo oppfører seg som før, ingen dialog vises.

Hva som arkiveres og hva som ikke arkiveres

Omfanget er bevisst snevert:

Oversikt: portalbrukere og firma arkiveres, kontaktpersoner forblir aktive, interne brukere berøres aldri

  • Bare portal- og offentlige brukere (share = True). Interne brukere arkiveres aldri via denne veien. Er det en ansatttilgang knyttet til kontakten, består Odoos feilmelding. Slik sperrer ingen ved et uhell en ansatt fordi vedkommende har arkivert et firma.
  • Kontaktpersoner forblir aktive som kontakter. Bare portaltilgangene deres arkiveres. Det tilsvarer Odoo-standarden, som heller ikke berører underkontaktene når et firma arkiveres.
  • Bare arkiveringsveien i brukergrensesnittet. Et direkte write({'active': False}), for eksempel i en import eller et skript, går uendret inn i Odoos kontroll.

Teknisk gjennomføring

Modulen har ingen nye felter på eksisterende modeller. Den består av en utvidelse av res.partner.action_archive og en veiviser (partner.archive.users.wizard) som vises som dialog.

ByggesteinOppgave
action_archive på kontaktenSøker etter aktive brukere med share = True som er knyttet til kontakten eller (for firmaer) til kontakter i firmaet. Finnes det noen, returneres dialogen i stedet for å arkivere.
VeiviserLagrer firma og funne brukere, viser dem og utfører ved «Ja» arkiveringen med kontekstnøkkelen archive_linked_users.
Kontekst skip_archive_users_wizardSlår av dialogen. Da gjelder Odoos kontroll igjen.
TilgangVeiviseren kan opprettes og brukes av interne brukere (base.group_user).
OversettelseTysk (de.po) og mal (.pot) følger med.

Brukerne søkes opp og arkiveres med utvidede rettigheter (sudo). Dermed fungerer dialogen også for brukere uten tilgang til brukeradministrasjonen. Baksiden står under begrensninger.

Et funn: Testen var grønn, men dialogen var likevel ødelagt

Modulen hadde ved første bruk en feil som de automatiske testene ikke fant. Ved det første klikket på «Arkiver» i brukergrensesnittet vises i stedet for dialogen Odoos feilskjerm med Cannot read properties of undefined (reading 'map').

Årsaken: Webklienten kaller action_archive direkte og utfører en returnert handling uten videre behandling. Da leser den obligatorisk nøkkelen views i handlingen. Handlingen vår hadde bare view_mode. Handlinger fra knapper med type="object" supplerer serveren på forhånd (clean_action i call_button), men ikke det direkte kallet til action_archive. Testene kalte metoden bare i Python, og der falt det manglende feltet ikke opp.

Rettelsen er én linje ("views": [(False, "form")]), i tillegg kommer en kontroll i testen som krever akkurat denne nøkkelen. Ingenting ble arkivert i den forbindelse. Lærdommen: Den som returnerer en handling fra en metode som klienten kaller direkte (action_archive, action_unarchive og lignende), bør alltid ta med views.

Installasjon

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

Avhengigheter er base og contacts. Etter installasjonen må Odoo-tjenesten startes på nytt, fordi modulen inneholder Python-kode. Den som driver et produksjonssystem, installerer modulen først på en kopi av databasen.

begrensninger

  • Tillatelse. Fordi brukerne arkiveres med utvidede rettigheter, kan alle som har lov til å arkivere en kontakt, via dialogen også arkivere portaltilgangene til dette firmaet. For interne brukere gjelder ikke dette. Den som vil sikre portaltilganger mer finmasket, må tilpasse modulen.
  • Ingen automatisk gjenoppretting. Blir firmaet senere aktivert igjen, forblir brukerne arkivert. De må reaktiveres for hånd.
  • Bare kontakter. Modulen gjelder firmaer som kontakter (res.partner). Arkivering av et Odoo-firma (res.company) har andre kontroller, for eksempel hvis det fortsatt er brukernes standardfirma. Modulen er ikke ment for det.
  • Bare testet med Odoo 19.0 Community. For andre versjoner har vi ikke testet den.

Ofte stilte spørsmål

Hvorfor arkiveres ikke ansatte med?

En intern bruker har rettigheter i systemet og er som regel knyttet til egne data, oppgaver og tillatelser. Å sperre vedkommende som en bivirkning av å arkivere et firma, er for risikabelt for oss. Derfor består Odoos feilmelding.

Kan jeg slå av spørsmålet?

I koden via konteksten skip_archive_users_wizard. En innstilling i brukergrensesnittet finnes ikke. Den som avinstallerer modulen, får Odoos standardoppførsel igjen.

Under hvilken lisens står den?

Under AGPL-3. Feil og forbedringer er velkomne som issue i GitHub-repositoriet .

Støtte fra Biricon IT Services

Vi drifter Odoo-installasjoner for små og mellomstore bedrifter: fra innføring via tilpasninger og migreringer til løpende drift. Hvis du vil forenkle arbeidsprosesser som arkivering av kundefirmaer i Odoo, sette opp en portal for kundene dine eller trygt få en modul satt i produksjon, hjelper vi gjerne. Flere egenutviklinger: Dokumentnumre av prefiks, år og teller, Foretaksregister og adressekontroll for østerrikske kunder og Produktsett i tilbudet som seksjon.

Ta kontakt nå

Status: 3. november 2026. Modulversjon 19.0.1.0.0 med rettelsen fra samme dag. Alle navn og påloggingsnavn i illustrasjonene er fritt valgt.