Hoppa till innehåll

Odoo 19: Arkivera företag inklusive portalanvändare – modulen partner_archive_users med kontrollfråga i stället för felmeddelande

3 november 2026 | Odoo 19 Community | Egenutveckling
3 november 2026 av
Odoo 19: Arkivera företag inklusive portalanvändare – modulen partner_archive_users med kontrollfråga i stället för felmeddelande

Odoo 19-modulen partner_archive_users: kontrollfråga vid arkivering av ett företag med portalanvändare

Ett kundföretag har flyttat, avtalet är avslutat, och du vill arkivera det i Odoo. Odoo svarar med ett felmeddelande: ”Du kan inte arkivera kontakter som är kopplade till en aktiv användare. Arkivera först den tillhörande användaren.” Har företaget flera portalåtkomster innebär det: leta upp varje användare för sig, arkivera dem en och en, tillbaka till företaget, arkivera på nytt.

Vi har skrivit den lilla modulen Arkivera företag inklusive portalanvändare (partner_archive_users) för Odoo 19 för det. I stället för felmeddelandet kommer en kontrollfråga, och vid ”Ja” arkiveras portalanvändarna och företaget i ett enda steg. Modulen finns som fri programvara under AGPL-3-licensen på GitHub:

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

Vi använder modulen hos Biricon IT Services sedan den 3 november 2026 i vårt produktionssystem. Den är ny, så erfarenheten av den är kort. Den som tar över den bör läsa avsnitten om Omfattning och Begränsningar .

Problemet i Odoo-standarden

Odoo kontrollerar vid arkivering av en kontakt om en användare hänger ihop med den, och avbryter om så är fallet. Kontrollen är vettig, eftersom varje användare behöver en kontakt. För interna användare, alltså medarbetare, är spärren också avsedd. För kunders portalanvändare är den däremot framför allt handarbete. Varje kundföretag med portalåtkomster, till exempel för att se fakturor och ärenden, kräver vid arkivering samma förlopp:

  1. Leta upp användarna för företaget och dess kontaktpersoner,
  2. arkivera var och en för sig,
  3. tillbaka till företaget,
  4. arkivera företaget.

Lösningen: en kontrollfråga

Modulen utökar vägen Åtgärd → Arkivera på kontakten, i formuläret såväl som i listan. Hänger aktiva portalanvändare ihop med det valda företaget eller dess kontaktpersoner öppnas en dialog med frågan ”Ska företaget verkligen arkiveras? Det finns fortfarande aktiva användare i systemet.” Därunder står de berörda användarna med namn, användarnamn och kontakt.

Jämförelse: Odoos felmeddelande vid arkivering av ett företag och modulens dialog med kontrollfråga

  • Ja, arkivera företag och användare: Först arkiveras användarna, sedan företaget.
  • Avbryt: Ingenting ändras.
  • Inga portalanvändare finns: Odoo beter sig som tidigare, ingen dialog visas.

Vad som arkiveras och vad som inte gör det

Omfattningen är medvetet snävt avgränsad:

Översikt: Portalanvändare och företag arkiveras, kontaktpersoner förblir aktiva, interna användare berörs aldrig

  • Bara portal- och publika användare (share = True). Interna användare arkiveras aldrig den här vägen. Hänger en medarbetaråtkomst ihop med kontakten består Odoos felmeddelande. På så sätt spärrar ingen av misstag en medarbetare genom att arkivera ett företag.
  • Kontaktpersoner förblir aktiva som kontakter. Bara deras portalåtkomster arkiveras. Det motsvarar Odoo-standarden, som vid arkivering av ett företag inte heller rör underkontakterna.
  • Bara arkiveringsvägen i gränssnittet. Ett direkt write({'active': False}), till exempel i en import eller ett skript, går oförändrat in i Odoos kontroll.

Teknisk implementering

Modulen har inga nya fält på befintliga modeller. Den består av en utökning av res.partner.action_archive och en guide (partner.archive.users.wizard) som visas som dialog.

ByggstenUppgift
action_archive am KontaktSöker aktiva användare med share = True som hänger ihop med kontakten eller (för företag) med företagets kontakter. Finns det några returneras dialogen i stället för att arkivera.
GuideSparar företaget och de hittade användarna, visar dem och utför vid ”Ja” arkiveringen med kontextnyckeln archive_linked_users.
Kontext skip_archive_users_wizardStänger av dialogen. Då gäller åter Odoos kontroll.
ÅtkomstGuiden får interna användare (base.group_user) skapa och använda.
ÖversättningTyska (de.po) och mall (.pot) medföljer.

Användarna söks och arkiveras med förhöjda rättigheter (sudo). Därigenom fungerar dialogen även för användare utan åtkomst till användarhanteringen. Baksidan står under Begränsningar.

Ett fynd: Testet var grönt, dialogen ändå trasig

Modulen hade vid den första användningen ett fel som de automatiska testerna inte hittade. Vid det första klicket på ”Arkivera” i gränssnittet visades i stället för dialogen Odoos felskärm med Cannot read properties of undefined (reading 'map').

Orsaken: Webbklienten anropar action_archive direkt och utför en returnerad åtgärd utan ytterligare bearbetning. Därvid läser den obligatoriskt åtgärdens nyckel views. Vår åtgärd hade bara view_mode. Åtgärder från knappar med type="object" kompletterar servern i förväg (clean_action i call_button), men inte det direkta anropet av action_archive. Testerna anropade metoden bara i Python, och där märktes det saknade fältet inte.

Rättelsen är en rad ("views": [(False, "form")]), dessutom kommer en kontroll i testet som kräver just den nyckeln. Därvid arkiverades ingenting. Lärdomen: Den som returnerar en åtgärd från en metod som klienten anropar direkt (action_archive, action_unarchive och liknande) bör alltid skicka med 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

Beroenden är base och contacts. Efter installationen måste Odoo-tjänsten startas om, eftersom modulen innehåller Python-kod. Den som driver ett produktionssystem installerar modulen först på en kopia av databasen.

Begränsningar

  • Behörighet. Eftersom användarna arkiveras med förhöjda rättigheter kan var och en som får arkivera en kontakt via dialogen även arkivera det företagets portalåtkomster. För interna användare gäller det inte. Den som vill säkra portalåtkomster mer finmaskigt måste anpassa modulen.
  • Ingen automatisk återställning. Om företaget senare aktiveras igen förblir användarna arkiverade. De måste återaktiveras för hand.
  • Bara kontakter. Modulen gäller företag som kontakter (res.partner). Arkivering av ett Odoo-företag (res.company) har andra kontroller, till exempel om det fortfarande är användarnas standardföretag. Modulen är inte avsedd för det.
  • Bara testad med Odoo 19.0 Community. För andra versioner har vi inte kontrollerat den.

Vanliga frågor

Varför arkiveras inte medarbetare också?

En intern användare har rättigheter i systemet och är oftast knuten till egna data, uppgifter och behörigheter. Att spärra honom eller henne som en bieffekt av att arkivera ett företag är för riskabelt för oss. Därför förblir det vid Odoos felmeddelande.

Kan jag stänga av kontrollfrågan?

I koden via kontexten skip_archive_users_wizard. Någon inställning i gränssnittet finns inte. Den som avinstallerar modulen får åter Odoos standardbeteende.

Under vilken licens står den?

Under AGPL-3. Fel och förbättringar är välkomna som issue i GitHub-repositoryt .

Stöd från Biricon IT Services

Vi sköter Odoo-installationer för små och medelstora företag: från införande via anpassningar och migreringar till löpande drift. Om du vill förenkla arbetsgångar som arkivering av kundföretag i Odoo, inrätta en portal för dina kunder eller på ett säkert sätt ta en modul i produktion i din produktionsinstans hjälper vi gärna. Fler egenutvecklingar: Dokumentnummer av prefix, år och räknare, Företagsregister och adresskontroll för österrikiska kunder och Produktset i offerten som avsnitt.

Kontakta oss nu

Läget per den 3 november 2026. Modulversion 19.0.1.0.0 med rättelsen från samma dag. Alla namn och användarnamn i bilderna är fritt valda.