Publicidad

jueves, 9 de agosto de 2018

Definición y lectura de campos multi Compañia en Odoo

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 ...

2 comentarios:

  1. Excelente ejemplo. Gracias por compartir tu conocimiento

    ResponderBorrar
  2. Gracias!, me ha sido de gran ayuda; pero si me permites hacerte una pregunta.... es posible instalar por CSV o XML datos en un field declarado con company_dependent?.
    Por ejemplo: en la instalación de un modulo que se cargue la cuenta por pagar de un partner para la compañía 1 y la compañía 2.

    ResponderBorrar