Gå til indhold

Odoo 19: Arkivér et firma sammen med dets portalbrugere – modulet partner_archive_users beder om bekræftelse i stedet for at vise en fejlmeddelelse

3. november 2026 | Odoo 19 Community | Egenudvikling
3. november 2026 af
Odoo 19: Arkivér et firma sammen med dets portalbrugere – modulet partner_archive_users beder om bekræftelse i stedet for at vise en fejlmeddelelse

Odoo 19-modulet partner_archive_users: Bekræftelse ved arkivering af en virksomhed med portalbrugere

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.

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:

  1. Find brugere, der er knyttet til virksomheden og dens kontaktpersoner,
  2. arkivér dem én ad gangen,
  3. vend tilbage til virksomheden,
  4. 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.

Sammenligning: Odoos fejlmeddelelse ved arkivering af en virksomhed og modulets bekræftelsesdialog

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

Oversigt: Portalbrugere og virksomhed arkiveres, kontaktpersoner forbliver aktive, og interne brugere berøres aldrig

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

KomponentFunktion
action_archive på kontaktenFinder 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.
GuideGemmer virksomheden og de fundne brugere, viser dem og udfører ved »Ja« arkiveringen med kontekstnøglen archive_linked_users.
Kontekst skip_archive_users_wizardDeaktiverer dialogen. Derefter gælder Odoos kontrol igen.
AdgangInterne brugere (base.group_user) kan oprette og bruge guiden.
OversættelseTysk 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.

Kontakt os nu

Senest opdateret: 3. november 2026. Modulversion 19.0.1.0.0 med rettelsen fra samme dag. Alle navne og brugernavne i illustrationerne er opdigtede.