Cómo adicionar elementos en el menú de configuración de un módulo en Odoo
Personalización del modelo ir.config.settings en Odoo
11 junio, 2021 por
Cómo adicionar elementos en el menú de configuración de un módulo en Odoo
Yen Martínez
| Sin comentarios

La sección de configuración de los módulos de Odoo, tiene un comportamiento ligeramente diferente a la hora de heredar de sus vistas y personalizar cómo luce.
Supongamos que necesitamos incluir una cuenta contable en la configuración del módulo Fabricación (MRP), para luego usarla como valor de referencia.

Para ello, en un archivo .py, incluimos nuestro campo:



from odoo import fields, models, api


class ResConfigSettings(models.TransientModel):
_inherit = 'res.config.settings'

expense_account_id = fields.Many2one('account.account', 'Expense account',
config_parameter='res_config_settings_sample.expense_account_id')

Nota: El atributo config_parameter, permitirá generar el valor de este campo como un registro de ir.config_parameter (o parámetro del sistema),  teniendo en cuenta que ir.config.settings es un TransientModel, no podremos persistir la info de forma 'tradicional'.


Luego vamos a crear un .xml para definir dónde incluir este campo en la vista de Configuración del módulo: 



<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="name">res.config.settings.view.form.inherit.mrp1</field>
<field name="model">res.config.settings</field>
<field name="priority" eval="36"/>
<field name="inherit_id" ref="mrp.res_config_settings_view_form"/>
<field name="arch" type="xml">
<xpath expr="//div[@id='security_lead_time']" position="inside">
<br/>
<br/>
<div class="o_setting_right_pane">
<label string="Expense account" for="expense_account_id"/>
<field name="expense_account_id"/>
<div class="text-muted">
Select account for Expenses.
</div>
</div>
</xpath>
</field>
</record>
</data>
</odoo>


El resultado será como se muestra en la siguiente imagen.



Si vamos a Ajustes -> Técnico -> Parámetros-> Parámetros del sistema,  podemos ver el registro que hemos generado al seleccionar nuestra cuenta contable.




Para acceder a ese dato que acabamos de guardar solo tenemos que hacerlo de la siguiente forma:


 my_config_data = self.env['ir.config_parameter'].sudo().get_param('res_config_settings_sample.expense_account_id')

Y listo... ya podemos usar la cuenta configurada desde cualquier parte....  ;)


Pero si quieres profundizar un poco más en las diferentes opciones, puedes ver la descripción del modelo ResConfigSetting (en /base/models/res_config.py), donde se describe cómo procede Odoo para cada situación.




Cómo adicionar elementos en el menú de configuración de un módulo en Odoo
Yen Martínez
11 junio, 2021
Share this post
Archivar
Registrarse to leave a comment