Manejando diferentes costos por empresa

10 de mayo de 2025 por
Gustavo Orrillo
| Sin comentarios aún
 

Odoo en el maestro de productos tiene un campo costo (standard_price) el cual (aqui la novedad) varia por empresa. Por ejemplo; supongamos que trabajamos en un entorno multiempresa. El producto A tiene para la empresa 1 un costo de 10, y para la empresa 2 tiene un costo de 20. Es lógico. Pero cuando nos toca trabajar con MercadoLibre (y tenemos que trabajar con múltiples empresas en el mismo país) eso es un problema.

Como se soluciona? Podemos hacer un nuevo módulo en el cual redefinimos el campo standard_price de la variante (en el fondo el costo es por variante, nunca por producto) siguiente forma:

    standard_price = fields.Float(
'Cost', company_dependent=False,
digits='Product Price',
groups="base.group_user",
help="""Value of the product (automatically computed in AVCO).
Used to value the product when the purchase cost is not known
​(e.g. inventory adjustment).
Used to compute margins on sale orders.""")

Tengan cuidado cuando hacen este cambio y ya existen datos en dicha columna. Si se cambia el parámetro company_dependent dicha columna pierde los datos ya existentes.

Ahora lo descripto anteriormente soluciona el problema y nos permite definir el mismo costo para todas las empresas (algo que por la dinámica de MercadoLibre, es muy necesario en Argentina). Ahora, que es el parámetro company_dependent?

Manejando datos comunes en múltiples empresas

Administrar datos en múltiples compañías puede ser laborioso. Sobre todo cuando necesitamos que ciertos datos (costos o impuestos) necesitan cambiar de empresa a empresa. Para ello Odoo permite definir campos dependientes de cada empresa (por eso el nombre company_dependent) que nos permite brindar una solución a este problema.

Un campo con el parámetro company_dependent es un campo que puede variar de empresa a empresa. Por ejemplo un impuesto, una unidad de medida o un costo. Vimos un ejemplo más arriba con el campo standard_price.

Como se lee los datos de un campo que varia de empresa a empresa? Por medio del parámetro with_company. Por ejemplo:

company_a_cost = product_id.with_company(company_a.id).standard_price

Muy sencillo (ahora no me quiero imaginar como hacerlo con xmlrpc). 

Finalizando; los datos maestros que dependen de una empresa permiten administrar los mismos de manera eficiente y de forma centralizada. Es importante identificarlos en un principio para poder modificar su comportamiento por medio de modulos customizados. Pero es bueno que Odoo brinde un mecanismo con su ORM para manejar esta situación, evitandonos trabajar con customizaciones caras y complejas.



Gustavo Orrillo 10 de mayo de 2025
Compartir
Categorías
Archivar
Identificarse dejar un comentario