Ves al contingut

Odoo 19: arxivar una empresa juntament amb els usuaris del portal – el mòdul partner_archive_users amb pregunta de 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 juntament amb els usuaris del portal – el mòdul partner_archive_users amb pregunta de confirmació en lloc d’un missatge d’error

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

Una empresa client se n’ha anat, el contracte s’ha acabat i voleu arxivar-la a Odoo. Odoo respon amb 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: buscar cada usuari per separat, arxivar-lo per separat, tornar a l’empresa i arxivar-la de nou.

Per això hem escrit el petit mòdul Arxivar una empresa juntament amb els usuaris del portal (partner_archive_users) per a Odoo 19. En lloc del missatge d’error apareix una pregunta de confirmació i, amb «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 sota la llicència AGPL-3:

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

Utilitzem el mòdul a Biricon IT Services, al nostre sistema de producció, des del 3 de novembre de 2026. És nou, de manera que l’experiència que en tenim és breu. Qui l’adopti hauria de llegir les seccions sobre l’abast i límits .

El problema a l’Odoo estàndard

En arxivar un contacte, Odoo comprova si hi ha un usuari vinculat i s’interromp si és així. La comprovació té sentit, perquè cada usuari necessita un contacte. Per als usuaris interns, és a dir, els empleats, el bloqueig també és volgut. Però en els usuaris del portal dels clients és sobretot feina manual. Cada empresa client amb accessos al portal, per exemple per consultar factures i tiquets, requereix en arxivar el mateix procediment:

  1. Cercar els usuaris de l’empresa i dels seus contactes,
  2. arxivar cadascun per separat,
  3. tornar a l’empresa,
  4. arxivar l’empresa.

La solució: una pregunta de confirmació

El mòdul amplia el camí Acció → Arxiva al contacte, tant al formulari com a la llista. Si a l’empresa triada o als seus contactes hi ha usuaris del portal actius, s’obre un diàleg amb la pregunta «Realment s’ha d’arxivar l’empresa? Encara hi ha usuaris actius al sistema.» A sota apareixen els usuaris afectats amb nom, nom d’inici de sessió i contacte.

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

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

Què s’arxiva i què no

L’abast està deliberadament delimitat:

Resum: els usuaris del portal i l’empresa s’arxiven, els contactes continuen actius, els usuaris interns no es toquen mai

  • Només usuaris del portal i públics (share = True). Els usuaris interns no s’arxiven mai per aquest camí. Si al contacte hi ha un accés d’empleat, el missatge d’error d’Odoo es manté. Així ningú no bloqueja per accident un empleat per haver arxivat una empresa.
  • Els contactes de l’empresa continuen actius com a contactes. Només s’arxiven els seus accessos al portal. Això correspon a l’Odoo estàndard, que en arxivar una empresa tampoc no toca els subcontactes.
  • Només el camí d’arxivar de la interfície. Un write({'active': False}) directe, per exemple en una importació o en un script, s’executa sense canvis amb la comprovació d’Odoo.

Implementació tècnica

El mòdul no té camps nous en models existents. Consisteix en una ampliació de res.partner.action_archive i un assistent (partner.archive.users.wizard) que apareix com a diàleg.

ComponentTasca
action_archive al contacteCerca usuaris actius amb share = True vinculats al contacte o (en les empreses) a contactes de l’empresa. Si n’hi ha, en lloc d’arxivar es retorna el diàleg.
AssistentDesa l’empresa i els usuaris trobats, els mostra i, amb «Sí», executa l’arxivament amb la clau de context archive_linked_users.
Context skip_archive_users_wizardDesactiva el diàleg. Aleshores torna a valer la comprovació d’Odoo.
AccésL’assistent el poden crear i utilitzar els usuaris interns (base.group_user).
TraduccióS’inclouen l’alemany (de.po) i la plantilla (.pot).

Els usuaris es cerquen i s’arxiven amb drets elevats (sudo). Així, el diàleg també funciona per a usuaris sense accés a la gestió d’usuaris. L’altra cara de la moneda consta a límits.

Una troballa: la prova era verda, però el diàleg estava trencat

El mòdul va tenir un error a la primera posada en servei que les proves automàtiques no van trobar. En fer el primer clic a «Arxiva» a la interfície, en lloc del diàleg va aparèixer la pantalla d’error d’Odoo amb Cannot read properties of undefined (reading 'map').

La causa: el client web crida action_archive directament i executa una acció retornada sense més preparació. Hi llegeix obligatòriament la clau views de l’acció. La nostra acció només tenia view_mode. Les accions de botons amb type="object" les completa el servidor abans (clean_action a call_button), però no la crida directa a action_archive. Les proves només cridaven el mètode a Python, i allà no es va notar que faltava el camp.

La correcció és una línia ("views": [(False, "form")]), a més d’una comprovació a la prova que exigeix exactament aquesta clau. En fer-ho no es va arxivar res. La lliçó: qui retorna una acció des d’un mètode que el client crida directament (action_archive, action_unarchive i similars) hauria d’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 d’instal·lar-lo, cal reiniciar el servei d’Odoo, perquè el mòdul conté codi Python. Qui gestioni un sistema de producció instal·la el mòdul primer en una còpia de la base de dades.

límits

  • Autorització. Com que els usuaris s’arxiven amb drets elevats, tothom qui pugui arxivar un contacte pot arxivar també, a través del diàleg, els accessos al portal d’aquesta empresa. Per als usuaris interns això no s’aplica. Qui vulgui protegir amb més finesa els accessos al portal ha d’adaptar el mòdul.
  • Cap restabliment automàtic. Si l’empresa es reactiva més endavant, els usuaris continuen arxivats. Cal reactivar-los a mà.
  • Només contactes. El mòdul afecta les empreses com a contactes (res.partner). Arxivar una empresa d’Odoo (res.company) té altres comprovacions, per exemple si encara és l’empresa per defecte d’usuaris. El mòdul no està pensat per a això.
  • Només provat amb Odoo 19.0 Community. No l’hem comprovat per a altres versions.

Preguntes freqüents

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

Un usuari intern té drets al sistema i sol estar vinculat a dades, tasques i autoritzacions pròpies. Bloquejar-lo com a efecte secundari d’arxivar una empresa ens sembla massa arriscat. Per això es manté el missatge d’error d’Odoo.

Puc desactivar la pregunta de confirmació?

Al codi, mitjançant el context skip_archive_users_wizard. No hi ha cap opció de configuració a la interfície. Qui desinstal·li el mòdul recupera el comportament estàndard d’Odoo.

Sota quina llicència es troba?

Sota l’AGPL-3. Els errors i les millores són benvinguts com a issue al repositori de GitHub .

Suport de Biricon IT Services

Gestionem instal·lacions d’Odoo per a petites i mitjanes empreses: des de la implantació, passant per les adaptacions i les migracions, fins a l’explotació contínua. Si voleu simplificar a Odoo processos com l’arxivament d’empreses client, configurar un portal per als vostres clients o posar amb seguretat un mòdul a la vostra instància de producció, us ajudarem amb gust. Altres desenvolupaments propis: Números de document amb prefix, any i comptador, Firmenbuch i verificació d’adreces per a clients austríacs i Conjunts de productes al pressupost com a secció.

Poseu-vos en contacte amb nosaltres

Data: 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’inici de sessió de les il·lustracions són d’elecció lliure.