Ir al contenido

La trampa multiempresa en el código personalizado de Odoo

11 de agosto de 2026 por
La trampa multiempresa en el código personalizado de Odoo
Majorbird

La trampa multiempresa en el código personalizado de Odoo

自定义Odoo代码中的多公司陷阱

La trampa multiempresa en el código personalizado de Odoo

Pièges du multi-société dans le code Odoo sur mesure

فخ تعدد الشركات في أكواد Odoo المخصصة

Cạm bẫy đa công ty trong mã tùy chỉnh Odoo

Una empresa en crecimiento añade una segunda entidad legal en Odoo, tal vez una nueva filial, una empresa conjunta, o un registro separado para un mercado nuevo, y en pocos días algo se rompe sin que nadie lo toque directamente. Un usuario actualiza los datos bancarios de un proveedor y el cambio aparece silenciosamente en una factura de una empresa completamente distinta. Una orden de compra creada bajo una entidad aparece en la cola de aprobación de otra entidad. Nada estaba mal configurado. El código personalizado simplemente nunca se escribió sabiendo que "empresa" podía significar más de una cosa.

Por qué el código de una sola empresa se rompe primero

La mayoría de los módulos personalizados de Odoo nacen limitados a una sola empresa, porque esa es la única realidad que tiene el cliente en ese momento. Los desarrolladores añaden campos, sobrescriben los métodos create y write, y construyen lógica de búsqueda que lee registros sin filtrar por company_id, porque solo hay una empresa en juego y el comportamiento por defecto parece correcto. Las propias apps estándar de Odoo (ventas, compras, contabilidad) llevan reglas de registro multiempresa integradas, pero los módulos personalizados no las heredan automáticamente. En el momento en que se registra una segunda empresa en la misma base de datos, cada lectura y escritura sin filtrar se convierte en una fuga silenciosa entre empresas: datos bancarios compartidos, presupuestos u órdenes de compra apareciendo bajo la entidad equivocada, registros de contactos y productos heredando valores pensados solo para una empresa hermana.

La solución es una adaptación, no una reescritura

La buena noticia es que esto rara vez requiere reconstruir todo. La solución es devolver los dominios de company_id y las reglas de registro a los lugares que se los saltaron: los campos heredados necesitan dominios explícitos con alcance por empresa, la lógica de búsqueda y recuperación necesita un filtro de empresa real en lugar de depender del contexto de empresa por defecto, y cada modelo personalizado necesita su propia regla de registro multiempresa, no solo las estándar. Lo difícil es encontrar cada lugar donde existe la brecha, porque el error solo aparece una vez que hay datos reales multiempresa que lo expongan, y para entonces el cliente ya está operando dos entidades en la misma instancia.

Nuestra opinión

Esto es lo bastante común como para diseñarlo antes de que haga falta: cualquier desarrollo personalizado de Odoo debería asumir que llegará una segunda empresa, incluso cuando el cliente esté seguro de que siempre habrá solo una. Una auditoría multiempresa breve de la lógica personalizada antes de que una nueva entidad entre en producción, en lugar de después, sale mucho más barata que desenredar datos en vivo que ya han cruzado los límites entre empresas. Si tu equipo está añadiendo una entidad legal a una instancia de Odoo existente, este es exactamente el tipo de problema que vale la pena conversar con Majorbird antes de que aparezca por sí solo.

en News
Cómo prepararte para un análisis de brechas (no necesitas un documento de procesos perfecto)