Aprendiendo a mantener Odoo
Agregando campos a reportes (de un módulo de terceros)
Muchos programadores que se inician en Odoo, sus primeras tareas son mantener implementaciones ya existentes en Odoo. Lo cual en los papeles parece facil pero tiene sus inconvenientes para un principiante. Así que ahora voy a explicar un poco algunos trucos que le brinde a un programador junior de Odoo sobre como mantener una instalación existente.
Por lo pronto, tengamos en cuenta que vamos a modificar una instalación ya existente. No pretendemos extenderla (eso agrega unas cuantas complicaciones para un programador junior de Odoo) que es lo ideal. Simplemente buscamos en el tiempo más corto, poder implementar los cambios pedidos por un usuario. El usuario necesita poder filtrar el libro mayor (provisto por el módulo Account Financial Report de OCA) por la cuenta analítica.
Para mantener el sistema es necesario que uno conozca minimamente dos cosas:
Como actualizar módulos en Odoo
Encontrar donde realizar los cambios
Como actualizar módulos en Odoo
Esto va a la gran pregunta de... "debe reiniciar Odoo o debo solo actualizar el módulo?". Que es una pregunta muy frecuente en la comunidad (seguida de "se cayo AFIP?"). Y la respuesta es... si uno módifico solo métodos de Odoo... solo necesita reiniciar Odoo (y asegurarse que sus cambios no provocan errores en el reinicio de Odoo). En el caso que uno haya modificado vistas o reportes o agregado campos a los modelos; en ese caso se debe actualizar el módulo de Odoo. Muchas veces se necesita primero reiniciar Odoo y luego actualizar el módulo.
Encontrar donde realizar los cambios
No es un punto menor este, debido a que Odoo se encuentra poco documentado a nivel funcional. A nivel desarrollo, no tiene nada. Lo cual tiene su lógica. Pero bueno... primero necesitamos poder ubicar donde realizar los cambios. Para ellos, en el wizard del Libro Mayor necesitamos conocer que modelo debemos modificar, para eso usamos el modo desarrollador de odoo y en la edición de la vista de formulario;
Aca podemos ver que el modelo es general.ledger.report.wizard. Luego tenemos que saber en que módulo se crea dicho modelo. Una forma sencilla de hacerlo es mediante un grep. Por ejemplo si hacemos
grep -r general.ledger.report.wizard
Podremos ver que se modifican en el módulo account_financial_report, en el directorio wizard
gustavo@odoo14:/opt/odoo$ sudo grep -r '_name = "general.ledger.report.wizard"'
sources/account-financial-reporting/account_financial_report/wizard/general_ledger_wizard.py: _name = "general.ledger.report.wizard"
gustavo@odoo14:/opt/odoo$
analytic_account_id = fields.Many2one('account.analytic.account','Cuenta analitica')
<field name="analytic_account_id" options="{'no_quick_create': True, 'no_create_edit' : True}" />
Bueno, los pasos siguientes en los posts que vienen son:
Modificar el reporte para que se filtre por la cuenta analitica seleccionada
Extender el módulo account-financial-report con un nuevo módulo que implemente estas funcionalidades
Acerca de:
Gustavo Orrillo
Passionate about programming, he has implemented Odoo for different types of businesses since 2010. In Moldeo Interactive he is a founding Partner and Programmer; In addition to writing on the Blog about different topics related to the developments he makes.