Lectura de campos de tipo propiedad con Odoo
Los campos multi-compañia o propiedad permiten al usuario tener un control interno por compañia dentro de la base de datos, esto permite la segmentación de la información para que una Base de Datos conserve sus propias particularidades, configuración, valores, etc.
Los datos de tipo propiedad podemos encontrarlos dentro de Clientes o Productos, principalmente para la parte Contable.
Como podemos definir un campo de tipo propiedad, antes de la Api se definia un campo llamandolo fields.property pero con la migración a la nueva api, el valor property es cambiado por el parametro company_dependent, por ejemplo, voy a definir una tarifa secundaria dentro de Clientes, pero quiero que esta tarifa sea unica por Compañia:
class ResPartner(models.Model): _inherit = 'res.partner' second_product_pricelist = fields.Many2one('product.pricelist', 'Tarifa Secundaria', company_dependent=True)
Ahora, como podemos dar lectura al campo de tipo propiedad para obtener el valor, aqui entra en función el Contexto (context), utilizamos un parametro llamado force_company dentro del código, por ejemplo si tengo 2 compañias, una con el ID 1 la otra con el ID 2, la lectura seria:
# Company 1 partner_br = self.env['res.partner'].with_context(force_company=1).browse(256) second_product_pricelist_company_1 = partner_br.second_product_pricelist.id #Company 2 partner_br = self.env['res.partner'].with_context(force_company=2).browse(256) second_product_pricelist_company_2 = partner_br.second_product_pricelist.id
El parametro force_company recibe el ID de la compañia de la cual se obtendran los valores y el browse del ejemplo es el ID de un Cliente.
No se olviden comentar ...