Aprendiendo a mantener Odoo

Agregando campos a reportes (de un módulo de terceros)

Gustavo Orrillo
- 14/08/2021 - 2 min. de lectura

           
           

          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$ 
          El primer paso es agregar la definición del campo de la cuenta analítica agregando la siguiente definicíón de campo al archivo general_ledger_wizard.py

          analytic_account_id = fields.Many2one('account.analytic.account','Cuenta analitica')
          Y luego agregamos al archivo de la vista la definición del campo:

          <field name="analytic_account_id" options="{'no_quick_create': True, 'no_create_edit' : True}" />
          Actualizamos el módulo y podremos ver que en el wizard ya tenemos el nuevo campo.



          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

          Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.