Programacion Interactiva

Descubre una Nueva y Poderosa Herramienta.

FrameWork de Nueva Generacion

Acceso a tu Informacion desde cualquier Dispositivo con Navegador.

Enfoque en el Backend

Frontend de forma facil con Odoo y XML.

Creacion de Verticales

Creacion de nuevas Verticales Conquistando nuevos Mercados.

Tu marca aqui mismo

Llega a miles de personas.

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