Herencia múltiple en Odoo

Como heredar un modelo existente, y agregarle la funcionalidad de otro

Gustavo Orrillo
- 11/07/2020 - 1 min. de lectura

A partir de la pandemia y con la nueva realidad de "Primero digital", nos vimos en la necesidad de implementar dos nuevas funcionalidades en clientes. Una es el módulo de MercadoPago. La otra es el portal de clientes. Pero en Moldeo no nos ganamos la vida instalando módulos, sino modificandolos. Por eso al poco tiempo nos vimos en la obigación de modificarlos.

Y una de las modificaciones fue agregar funcionalidades de portal al módulo account_payment_group. La idea es, que un cliente/proveedor pueda ver sus recibos online. Nada mejor para eso que el portal. Ahora, necesitabamos agregar funcionalidades del portal al modelo account.payment.group, por ejemplo el método get_access_url. Como hacerlo?

Filoquin de vuelta marcó el camino, con su migración del módulo boton_mercado_pago a la versión 13. En dicha migración le agregó al modelo account.move la funcionalidad de la clase abstracta odoo.mercadopago. Algo parecido a lo que necesitabamos, agregar funcionalidad encontrada en el modelo portal.mixin al modelo account.payment.group. Como lo haciamos?

Primero heredabamos la clase en un módulo pero la declaración es diferente:

class MixinAccountPaymentGroup(models.Model):
    _name = 'account.payment.group'
    _inherit = ['account.payment.group','portal.mixin']


Ahí es donde toda la magia acontece, a partir de esa declaración el modelo account_payment_group cuenta con las funcionalidades del modelo portal.mixin.


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.