Agregando funcionalidades de CRM a sus objetos de Odoo

El poco conocido pero poderoso mixin mail.activity.mixin

Odoo tiene una funcionalidad poco difundida, pero no por ello menos poderosa, que es la de los mixin. Que es la funcionalidad que mediante herencia múltiple brinda capacidades extras a sus objetos. Capacidades como mensajería, agenda de actividades para los objetos; por ejemplo. En este caso vamos a hablar del mixin de actividades, o propiamente "mail.activity.mixin" que se incorpora a sus objetos heredando del módulo mail y agregando en la herencia del objeto el modelo mail.activity.mixin, como se lo ve en el siguiente ejemplo:

class SaleOrder(models.Model):
    _name = "sale.order"
    _inherit = ['portal.mixin', 'mail.thread', 'mail.activity.mixin', 'utm.mixin']
    _description = "Sales Order"
    _order = 'date_order desc, id desc'
    _check_company_auto = True
Como verán el objeto sale.order tiene herencia múltiple; principalmente mensajería y actividades. Esta herencia es muy común en la mayoría de los objetos de Odoo; los encontramos en facturas, pedidos, clientes, proveedores, etc. A modo de ejemplo les vamos a mostrar como se comporta en el caso de clientes. Por ejemplo en un cliente podemos clickear en "Planificar Actividad" y veremos un pop-up como el que sigue:




Aca podemos observar donde podemos ingresar de forma parametrizada actividades a realizar junto con las fechas y responsables de las mismas. Tambien se puede seleccionar el estado de ellas. 

Por ejemplo, podemos cargar una actividad y marcarla como realizada. 



O asignarselas a terceros. Son inifitas posiblidades. Una funcionalidad que me gusta es la de agregar campos a las vistas tipo lista, donde se muestra la siguiente actividad, su estatus y cuando se puede realizarla.



Dicha informacion se agrega facilmente a la lista por medio de campos como activity_date_deadline, activity_summary y activity_state. Lo mejor de esos campos? Es que se puede buscar en ellos. Una maravilla la verdad. Por último y no es menor, como todo objeto en Odoo se lo puede extender y agregar funcionalidades. Como por ejemplo, regitrar un pago despues de una llamada. 

 

Proyectos de Odoo chicos versus complejidad en los proyectos