En kundevirksomhed har valgt en anden leverandør, aftalen er afsluttet, og du vil arkivere virksomheden i Odoo. Odoo svarer med en fejlmeddelelse: »Du kan ikke arkivere kontakter, der er knyttet til en aktiv bruger. Arkivér først den tilknyttede bruger.« Hvis virksomheden har flere portalbrugere, betyder det, at du skal finde hver bruger, arkivere dem én ad gangen, vende tilbage til virksomheden og forsøge at arkivere igen.
Til det formål har vi udviklet det lille modul Firma archivieren samt Portalbenutzern (partner_archive_users) til Odoo 19. I stedet for fejlmeddelelsen bliver du bedt om at bekræfte, og ved »Ja« arkiveres portalbrugerne og virksomheden i ét trin. Modulet er tilgængeligt som fri software under AGPL-3-licensen på GitHub:
github.com/Alex0176/odoo-partner-archive-users
Vi har brugt modulet i vores produktionssystem hos Biricon IT Services siden den 3. november 2026. Det er nyt, så vores erfaring med det er endnu begrænset. Hvis du vil tage det i brug, bør du læse afsnittene om omfang og begrænsninger igennem.
Artiklens indhold
Problemet i standardversionen af Odoo
Når en kontakt arkiveres, kontrollerer Odoo, om der er knyttet en bruger til den, og afbryder i så fald. Kontrollen giver mening, for alle brugere har brug for en kontakt. For interne brugere, altså medarbejdere, er blokeringen også tilsigtet. Men for kundernes portalbrugere medfører den først og fremmest manuelt arbejde. Hver kundevirksomhed med portaladgang, for eksempel til at se fakturaer og supportsager, kræver den samme fremgangsmåde ved arkivering:
- Find brugere, der er knyttet til virksomheden og dens kontaktpersoner,
- arkivér dem én ad gangen,
- vend tilbage til virksomheden,
- arkivér virksomheden.
Løsningen: en bekræftelsesdialog
Modulet udvider funktionen Handling → Arkivér på kontakten, både i formularen og i listen. Hvis der er knyttet aktive portalbrugere til den valgte virksomhed eller dens kontaktpersoner, åbnes en dialog med spørgsmålet »Er du sikker på, at virksomheden skal arkiveres? Der er stadig aktive brugere i systemet.« Nedenunder vises de berørte brugere med navn, login og kontakt.
- Ja, arkivér virksomhed og brugere: Først arkiveres brugerne, derefter virksomheden.
- Annuller: Intet ændres.
- Ingen portalbrugere: Odoo fungerer som hidtil, og der vises ingen dialog.
Hvad der arkiveres, og hvad der ikke arkiveres
Omfanget er bevidst begrænset:
- Kun portalbrugere og offentlige brugere (
share = True). Interne brugere arkiveres aldrig ad denne vej. Hvis en medarbejderkonto er knyttet til kontakten, vises Odoos fejlmeddelelse fortsat. På den måde kommer ingen til at spærre en medarbejder ved at arkivere en virksomhed. - Kontaktpersoner forbliver aktive som kontakter. Kun deres portaladgang arkiveres. Det svarer til Odoos standardadfærd, hvor underkontakter heller ikke berøres, når en virksomhed arkiveres.
- Kun arkivering via brugerfladen. Et direkte
write({'active': False}), for eksempel i en import eller et script, rammer fortsat Odoos kontrol som hidtil.
Teknisk implementering
Modulet tilføjer ingen nye felter til eksisterende modeller. Det består af en udvidelse af res.partner.action_archive og en guide (partner.archive.users.wizard), der vises som en dialog.
| Komponent | Funktion |
|---|---|
action_archive på kontakten | Finder aktive brugere med share = True, som er knyttet til kontakten eller, for virksomheder, til virksomhedens kontakter. Hvis der findes nogen, returneres dialogen i stedet for at udføre arkiveringen. |
| Guide | Gemmer virksomheden og de fundne brugere, viser dem og udfører ved »Ja« arkiveringen med kontekstnøglen archive_linked_users. |
Kontekst skip_archive_users_wizard | Deaktiverer dialogen. Derefter gælder Odoos kontrol igen. |
| Adgang | Interne brugere (base.group_user) kan oprette og bruge guiden. |
| Oversættelse | Tysk oversættelse (de.po) og skabelon (.pot) er inkluderet. |
Brugerne findes og arkiveres med forhøjede rettigheder (sudo). Derfor fungerer dialogen også for brugere uden adgang til brugeradministrationen. Bagsiden beskrives under begrænsninger.
En opdagelse: Testen bestod, men dialogen virkede stadig ikke
Modulet havde ved første ibrugtagning en fejl, som de automatiske tests ikke fangede. Ved det første klik på »Arkivér« i brugerfladen kom Odoos fejlskærm frem i stedet for dialogen med meddelelsen Cannot read properties of undefined (reading 'map').
Årsagen: Webklienten kalder action_archive direkte og udfører en returneret handling uden yderligere behandling. I den forbindelse læser den altid handlingens nøgle views. Vores handling havde kun view_mode. Serveren supplerer på forhånd handlinger fra knapper med type="object" (clean_action i call_button), men gør det ikke ved direkte kald af action_archive. Testene kaldte kun metoden i Python, hvor det manglende felt ikke blev opdaget.
Rettelsen består af én linje ("views": [(False, "form")]) samt en kontrol i testen, der kræver netop denne nøgle. Der blev ikke arkiveret noget undervejs. Læren er: Hvis man returnerer en handling fra en metode, som klienten kalder direkte (action_archive, action_unarchive og lignende), bør man altid medtage views.
Installation
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
Modulet afhænger af base og contacts. Efter installationen skal Odoo-tjenesten genstartes, fordi modulet indeholder Python-kode. Hvis du har et system i produktion, skal du først installere modulet på en kopi af databasen.
begrænsninger
- Rettigheder. Da brugerne arkiveres med forhøjede rettigheder, kan alle, der har lov til at arkivere en kontakt, også arkivere firmaets portaladgange via dialogboksen. Det gælder ikke interne brugere. Hvis du vil styre rettighederne til portaladgange mere detaljeret, skal modulet tilpasses.
- Ingen automatisk gendannelse. Hvis firmaet senere aktiveres igen, forbliver brugerne arkiveret. De skal genaktiveres manuelt.
- Kun kontakter. Modulet gælder firmaer, der er oprettet som kontakter (
res.partner). Ved arkivering af et Odoo-firma (res.company) gælder andre kontroller, for eksempel hvis firmaet stadig er standardfirma for nogle brugere. Det er modulet ikke beregnet til. - Kun testet med Odoo 19.0 Community. Vi har ikke testet det med andre versioner.
Ofte stillede spørgsmål
Hvorfor bliver medarbejdere ikke arkiveret samtidig?
En intern bruger har rettigheder i systemet og er som regel knyttet til egne data, opgaver og adgangsrettigheder. Vi mener, det er for risikabelt at spærre brugeren som en følge af, at et firma arkiveres. Derfor vises Odoos fejlmeddelelse stadig i dette tilfælde.
Kan jeg slå bekræftelsen fra?
Ja, i koden via konteksten skip_archive_users_wizard. Der er ingen indstilling til det i brugerfladen. Hvis du afinstallerer modulet, vender Odoo tilbage til sin standardadfærd.
Hvilken licens udgives det under?
AGPL-3. Fejlrapporter og forbedringsforslag modtages gerne som issues i GitHub-repositoriet .
Hjælp fra Biricon IT Services
Vi hjælper små og mellemstore virksomheder med deres Odoo-installationer: fra implementering, tilpasninger og migreringer til den løbende drift. Vi hjælper gerne, hvis du vil forenkle arbejdsgange som arkivering af kundefirmaer i Odoo, oprette en kundeportal eller installere et modul sikkert i dit produktionsmiljø. Flere af vores egenudviklede løsninger: Bilagsnumre med præfiks, år og løbenummer, Virksomhedsregister og adressekontrol for østrigske kunder og Produktsæt som afsnit i tilbud.
Senest opdateret: 3. november 2026. Modulversion 19.0.1.0.0 med rettelsen fra samme dag. Alle navne og brugernavne i illustrationerne er opdigtede.