Herencia múltiple en Odoo

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

Gustavo Orrillo
- 07/11/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

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.