Ves al contingut

Odoo 19: arxivar una empresa i els seus usuaris del portal — mòdul partner_archive_users amb confirmació en lloc d'un missatge d'error

3 de novembre de 2026 | Odoo 19 Community | Desenvolupament propi
3 de novembre de 2026 per
Odoo 19: arxivar una empresa i els seus usuaris del portal — mòdul partner_archive_users amb confirmació en lloc d'un missatge d'error

Mòdul partner_archive_users per a Odoo 19: confirmació en arxivar una empresa amb usuaris del portal

Una empresa client ha deixat de treballar amb vosaltres, el contracte s'ha acabat i la voleu arxivar a Odoo. Odoo mostra un missatge d'error: «No podeu arxivar contactes vinculats a un usuari actiu. Arxiveu primer l'usuari corresponent.» Si l'empresa té diversos accessos al portal, això vol dir cercar cada usuari per separat, arxivar-los un per un, tornar a l'empresa i intentar arxivar-la de nou.

Per això hem desenvolupat el petit mòdul Firma archivieren samt Portalbenutzern (partner_archive_users) per a Odoo 19. En lloc del missatge d'error, apareix una pregunta de confirmació i, si responeu «Sí», els usuaris del portal i l'empresa s'arxiven en un sol pas. El mòdul està disponible a GitHub com a programari lliure amb la llicència AGPL-3:

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

A Biricon IT Services fem servir el mòdul al nostre entorn de producció des del 3 de novembre de 2026. És nou i, per tant, encara hi tenim poca experiència. Si el voleu adoptar, convé llegir els apartats de Abast i Limitacions .

El problema amb el funcionament estàndard d'Odoo

Quan s'arxiva un contacte, Odoo comprova si té un usuari vinculat i, si és així, atura l'operació. La comprovació té sentit, perquè cada usuari necessita un contacte. En el cas dels usuaris interns, és a dir, els empleats, aquest bloqueig també és desitjable. Però amb els usuaris del portal dels clients, sobretot comporta feina manual. Per arxivar qualsevol empresa client amb accessos al portal, per exemple per consultar factures i tiquets, cal seguir sempre els mateixos passos:

  1. Cercar els usuaris de l'empresa i de les seves persones de contacte,
  2. arxivar-los un per un,
  3. tornar a l'empresa,
  4. arxivar l'empresa.

La solució: una pregunta de confirmació

El mòdul amplia l'opció Acció → Arxiva dels contactes, tant al formulari com a la llista. Si l'empresa seleccionada o les seves persones de contacte tenen usuaris del portal actius vinculats, s'obre un diàleg amb la pregunta «Segur que voleu arxivar l'empresa? Encara hi ha usuaris actius al sistema.» A sota es mostren els usuaris afectats, amb el nom, el nom d'usuari i el contacte.

Comparació: missatge d'error d'Odoo en arxivar una empresa i diàleg de confirmació del mòdul

  • Sí, arxiva l'empresa i els usuaris: primer s'arxiven els usuaris i després l'empresa.
  • Cancel·la: no es canvia res.
  • No hi ha usuaris del portal: Odoo es comporta com fins ara i no apareix cap diàleg.

Què s'arxiva i què no

L'abast s'ha limitat expressament:

Resum: s'arxiven els usuaris del portal i l'empresa, les persones de contacte continuen actives i els usuaris interns no es modifiquen mai

  • Només usuaris del portal i públics (share = True). Els usuaris interns no s'arxiven mai per aquesta via. Si el contacte té vinculat un compte d'empleat, es continua mostrant el missatge d'error d'Odoo. Així, ningú no bloqueja accidentalment un empleat pel fet d'arxivar una empresa.
  • Les persones de contacte continuen actives com a contactes. Només se n'arxiven els comptes d'accés al portal. Això coincideix amb el comportament estàndard d'Odoo, que tampoc no modifica els contactes subordinats quan s'arxiva una empresa.
  • Només l'opció d'arxivar de la interfície. Una crida directa a write({'active': False}), per exemple en una importació o un script, continua passant per la comprovació d'Odoo sense cap canvi.

Implementació tècnica

El mòdul no afegeix cap camp als models existents. Consta d'una ampliació de res.partner.action_archive i d'un assistent (partner.archive.users.wizard) que apareix com a diàleg.

ComponentFunció
action_archive del contacteCerca usuaris actius amb share = True vinculats al contacte o, en el cas d'empreses, als contactes de l'empresa. Si en troba, retorna el diàleg en lloc d'arxivar.
AssistentDesa l'empresa i els usuaris trobats, els mostra i, en seleccionar «Sí», executa l'arxivament amb la clau de context archive_linked_users.
Context skip_archive_users_wizardDesactiva el diàleg. Aleshores torna a aplicar-se la comprovació d'Odoo.
AccésEls usuaris interns (base.group_user) poden crear i utilitzar l'assistent.
TraduccióS'hi inclouen la traducció a l'alemany (de.po) i la plantilla (.pot).

Els usuaris se cerquen i s'arxiven amb permisos elevats (sudo). Això permet que el diàleg també funcioni per a usuaris sense accés a la gestió d'usuaris. La contrapartida s'explica a Limitacions.

Una descoberta: la prova passava, però el diàleg no funcionava

En el primer ús del mòdul es va detectar un error que les proves automatitzades no havien trobat. En fer clic per primera vegada a «Arxiva» a la interfície, en lloc del diàleg apareixia la pantalla d'error d'Odoo amb el missatge Cannot read properties of undefined (reading 'map').

La causa: el client web crida action_archive directament i executa l'acció retornada sense cap preparació addicional. Per fer-ho, necessita llegir la clau views de l'acció. La nostra acció només tenia view_mode. El servidor completa prèviament les accions dels botons amb type="object" (clean_action dins de call_button), però no ho fa en la crida directa a action_archive. Les proves només cridaven el mètode des de Python, on l'absència d'aquest camp passava desapercebuda.

La correcció és una línia ("views": [(False, "form")]), a més d'una comprovació a la prova que exigeix precisament aquesta clau. L'error no va provocar cap arxivament. La lliçó: quan es retorna una acció des d'un mètode que el client crida directament (action_archive, action_unarchive i similars), cal incloure-hi sempre views.

Instal·lació

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

Les dependències són base i contacts. Després de la instal·lació cal reiniciar el servei d'Odoo, perquè el mòdul conté codi Python. Si teniu un sistema en producció, instal·leu primer el mòdul en una còpia de la base de dades.

Limitacions

  • Permisos. Com que els usuaris s'arxiven amb permisos elevats, qualsevol persona que pugui arxivar un contacte també pot arxivar els comptes d'accés al portal d'aquella empresa mitjançant el diàleg. Això no s'aplica als usuaris interns. Si voleu un control més detallat dels permisos sobre els comptes del portal, cal adaptar el mòdul.
  • Sense reactivació automàtica. Si més endavant es reactiva l'empresa, els usuaris continuen arxivats. Cal reactivar-los manualment.
  • Només contactes. El mòdul afecta les empreses com a contactes (res.partner). L'arxivament d'una empresa d'Odoo (res.company) té altres comprovacions, per exemple si encara és l'empresa predeterminada d'algun usuari. El mòdul no està pensat per a aquest cas.
  • Només s'ha provat amb Odoo 19.0 Community. No l'hem comprovat amb altres versions.

Preguntes freqüents

Per què no s'arxiven també els empleats?

Un usuari intern té drets dins del sistema i acostuma a tenir vinculades dades, tasques i permisos propis. Considerem massa arriscat bloquejar-lo com a efecte secundari de l'arxivament d'una empresa. Per això, en aquest cas es manté el missatge d'error d'Odoo.

Puc desactivar la confirmació?

Des del codi, mitjançant el context skip_archive_users_wizard. No hi ha cap opció a la interfície. Si desinstal·leu el mòdul, es recupera el comportament estàndard d'Odoo.

Quina llicència té?

La llicència AGPL-3. Podeu comunicar errors i proposar millores obrint una incidència al repositori de GitHub són benvinguts.

Suport de Biricon IT Services

Ens ocupem d'instal·lacions d'Odoo per a petites i mitjanes empreses: des de la implantació fins al funcionament diari, passant per les adaptacions i les migracions. Si voleu simplificar processos com l'arxivament d'empreses clients a Odoo, configurar un portal per als vostres clients o incorporar un mòdul amb seguretat a la vostra instància de producció, us hi podem ajudar. Altres desenvolupaments propis: Numeració de documents amb prefix, any i comptador, Registre mercantil i verificació d'adreces per a clients austríacs i Conjunts de productes com a secció del pressupost.

Contacteu amb nosaltres ara

Actualitzat el 3 de novembre de 2026. Versió del mòdul 19.0.1.0.0 amb la correcció del mateix dia. Tots els noms i noms d'usuari de les imatges són inventats.