Overslaan naar inhoud

Odoo 19: bedrijf archiveren inclusief portaalgebruikers – module partner_archive_users met een vraag in plaats van een foutmelding

3 november 2026 | Odoo 19 Community | Eigen ontwikkeling
3 november 2026 in
Odoo 19: bedrijf archiveren inclusief portaalgebruikers – module partner_archive_users met een vraag in plaats van een foutmelding

Odoo 19-module partner_archive_users: bevestigingsvraag bij het archiveren van een bedrijf met portaalgebruikers

Een klantbedrijf is vertrokken, het contract is beëindigd en u wilt het in Odoo archiveren. Odoo antwoordt met een foutmelding: “U kunt geen contacten archiveren die aan een actieve gebruiker zijn gekoppeld. Archiveer eerst de bijbehorende gebruiker.” Heeft het bedrijf meerdere portaaltoegangen, dan betekent dat: elke gebruiker afzonderlijk zoeken, afzonderlijk archiveren, terug naar het bedrijf, opnieuw archiveren.

Wij hebben daarvoor de kleine module Bedrijf archiveren inclusief portaalgebruikers (partner_archive_users) voor Odoo 19 geschreven. In plaats van de foutmelding komt er een vraag, en bij “Ja” worden de portaalgebruikers en het bedrijf in één stap gearchiveerd. De module staat als vrije software onder de AGPL-3-licentie op GitHub:

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

Wij gebruiken de module bij Biricon IT Services sinds 3 november 2026 in ons productiesysteem. Hij is nieuw, de ervaring ermee is dus kort. Wie hem overneemt, moet de gedeelten over Omvang en Beperkingen lezen.

Het probleem in standaard Odoo

Odoo controleert bij het archiveren van een contact of er een gebruiker aan hangt, en breekt af als dat zo is. De controle is zinvol, want elke gebruiker heeft een contact nodig. Voor interne gebruikers, dus medewerkers, is de blokkade ook bedoeld. Bij portaalgebruikers van klanten is ze echter vooral handwerk. Elk klantbedrijf met portaaltoegangen, bijvoorbeeld om facturen en tickets in te zien, vraagt bij het archiveren hetzelfde verloop:

  1. gebruikers van het bedrijf en zijn contactpersonen zoeken,
  2. elke gebruiker afzonderlijk archiveren,
  3. terug naar het bedrijf,
  4. bedrijf archiveren.

De oplossing: een vraag vooraf

De module breidt de weg Actie → Archiveren bij het contact uit, in het formulier en in de lijst. Hangen aan het gekozen bedrijf of aan zijn contactpersonen actieve portaalgebruikers, dan opent zich een dialoog met de vraag “Moet het bedrijf echt worden gearchiveerd? Er zijn nog actieve gebruikers in het systeem.” Daaronder staan de betrokken gebruikers met naam, inlognaam en contact.

Vergelijking: Odoo-foutmelding bij het archiveren van een bedrijf en de vraagdialoog van de module

  • Ja, bedrijf en gebruikers archiveren: Eerst worden de gebruikers gearchiveerd, dan het bedrijf.
  • Annuleren: Er verandert niets.
  • Geen portaalgebruikers aanwezig: Odoo gedraagt zich als voorheen, er verschijnt geen dialoog.

Wat wordt gearchiveerd en wat niet

De omvang is bewust beperkt:

Overzicht: portaalgebruikers en bedrijf worden gearchiveerd, contactpersonen blijven actief, interne gebruikers worden nooit aangeraakt

  • Alleen portaal- en openbare gebruikers (share = True). Interne gebruikers worden via deze weg nooit gearchiveerd. Hangt een medewerkerstoegang aan het contact, dan blijft de foutmelding van Odoo bestaan. Zo blokkeert niemand per ongeluk een medewerker doordat hij een bedrijf heeft gearchiveerd.
  • Contactpersonen blijven als contacten actief. Alleen hun portaaltoegangen worden gearchiveerd. Dat komt overeen met standaard Odoo, dat bij het archiveren van een bedrijf de subcontacten eveneens niet aanraakt.
  • Alleen de archiveerweg van de gebruikersinterface. Een rechtstreekse write({'active': False}), bijvoorbeeld in een import of script, loopt ongewijzigd in de controle van Odoo.

Technische uitvoering

De module heeft geen nieuwe velden op bestaande modellen. Hij bestaat uit een uitbreiding van res.partner.action_archive en een wizard (partner.archive.users.wizard) die als dialoog verschijnt.

BouwsteenTaak
action_archive bij het contactZoekt actieve gebruikers met share = True die aan het contact of (bij bedrijven) aan contacten van het bedrijf hangen. Zijn er die, dan wordt in plaats van te archiveren de dialoog teruggegeven.
WizardSlaat bedrijf en gevonden gebruikers op, toont ze en voert bij “Ja” de archivering uit met de contextsleutel archive_linked_users.
Context skip_archive_users_wizardSchakelt de dialoog uit. Dan geldt weer de controle van Odoo.
ToegangDe wizard mogen interne gebruikers (base.group_user) aanmaken en gebruiken.
VertalingDuits (de.po) en sjabloon (.pot) zijn bijgevoegd.

De gebruikers worden met verhoogde rechten gezocht en gearchiveerd (sudo). Daardoor werkt de dialoog ook voor gebruikers zonder toegang tot het gebruikersbeheer. De keerzijde staat onder Beperkingen.

Een bevinding: de test was groen, de dialoog toch kapot

De module had bij het eerste gebruik een fout die de automatische tests niet vonden. Bij de eerste klik op “Archiveren” in de gebruikersinterface verscheen in plaats van de dialoog het Odoo-foutscherm met Cannot read properties of undefined (reading 'map').

De oorzaak: de webclient roept action_archive rechtstreeks aan en voert een teruggegeven actie zonder verdere bewerking uit. Daarbij leest hij verplicht de sleutel views van de actie. Onze actie had alleen view_mode. Acties uit knoppen met type="object" vult de server eerder aan (clean_action in call_button), de rechtstreekse aanroep van action_archive niet. De tests riepen de methode alleen in Python aan, en daar viel het ontbrekende veld niet op.

De fix is één regel ("views": [(False, "form")]), daarbij komt een controle in de test die precies deze sleutel eist. Daarbij werd niets gearchiveerd. De les: wie een actie teruggeeft uit een methode die de client rechtstreeks aanroept (action_archive, action_unarchive en dergelijke), moet views altijd meegeven.

Installatie

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

Afhankelijkheden zijn base en contacts. Na de installatie moet de Odoo-service opnieuw worden gestart, omdat de module Python-code bevat. Wie een productiesysteem beheert, installeert de module eerst op een kopie van de database.

Beperkingen

  • Machtiging. Omdat de gebruikers met verhoogde rechten worden gearchiveerd, kan iedereen die een contact mag archiveren via de dialoog ook de portaaltoegangen van dat bedrijf archiveren. Voor interne gebruikers geldt dat niet. Wie portaaltoegangen fijner wil beveiligen, moet de module aanpassen.
  • Geen automatisch herstel. Wordt het bedrijf later weer geactiveerd, dan blijven de gebruikers gearchiveerd. Ze moeten met de hand opnieuw worden geactiveerd.
  • Alleen contacten. De module betreft bedrijven als contacten (res.partner). Het archiveren van een Odoo-bedrijf (res.company) kent andere controles, bijvoorbeeld wanneer het nog het standaardbedrijf van gebruikers is. Daarvoor is de module niet bedoeld.
  • Alleen getest met Odoo 19.0 Community. Voor andere versies hebben wij het niet gecontroleerd.

Veelgestelde vragen

Waarom worden medewerkers niet mee gearchiveerd?

Een interne gebruiker heeft rechten in het systeem en is meestal gekoppeld aan eigen gegevens, taken en machtigingen. Hem als neveneffect van het archiveren van een bedrijf te blokkeren, vinden wij te riskant. Daarom blijft het bij de foutmelding van Odoo.

Kan ik de vraag uitschakelen?

In de code via de context skip_archive_users_wizard. Een instelling in de gebruikersinterface is er niet. Wie de module deïnstalleert, krijgt weer het standaardgedrag van Odoo.

Onder welke licentie staat hij?

Onder de AGPL-3. Fouten en verbeteringen zijn als issue in de GitHub-repository welkom.

Ondersteuning door Biricon IT Services

Wij beheren Odoo-installaties voor kleine en middelgrote bedrijven: van de invoering via aanpassingen en migraties tot de lopende exploitatie. Wilt u werkwijzen zoals het archiveren van klantbedrijven in Odoo vereenvoudigen, een portaal voor uw klanten inrichten of een module veilig in uw productie-instantie laten brengen, dan helpen wij u graag. Meer eigen ontwikkelingen: Documentnummers uit prefix, jaar en teller, Firmenbuch en adrescontrole voor Oostenrijkse klanten en Productsets in de offerte als sectie.

Neem nu contact op

Stand per 3 november 2026. Moduleversie 19.0.1.0.0 met de fix van dezelfde dag. Alle namen en inlognamen in de afbeeldingen zijn vrij gekozen.