En este blog aprenderemos:
-Activar la consola de desarrollador en Odoo 16.
-Crear acciones automatizadas sobre el modelo Mensaje que vengan en Lead/Oportunidad.
-Agregar código en python al evento de creación.
-Revisar los Registros para revisar errores o pintar "Logs".
Activar modo desarrollador
Nos vamos a ajustes y en la parte inferior damos click en "Activar modo de desarrollador" hasta que veamos la imagen de un insecto pintarse en la esquina superior derecha y se desplieguen nuevos menús.
Crear una nueva acción planificada
En el menú "Técnico" que ahora es visible hacer click en la opción "Acciones automatizadas"
y oprimimos el botón de "Crear".
El nombre es a discreción del usuario
El modelo escogemos "Mensaje" que son los mensajes de tipo "Mail" que llegan de las campañas a un nuevo "Lead/Oportunidad" y el disparador será la "Al crear".
En "Aplicar en: " pusimos un filtro para que nuestro modelo o documento relacionado sean los "Leads/Oportunidades" que llegan con mensajes de correo, que no vengan de un remitente de chatbot y que los mensajes en efecto sean del tipo "email".
En "Acción a realizar" escogemos "Ejecutar el código python" y escribimos nuestro código.
12: log('BODY: '+record.body, level='info')
13: idx_begin = record.body.find('Page URL: ')
14: idx_ends = record.body.find('User Agent: ')
15: if idx_begin>-1:
16: url_campaña= record.body[idx_begin+10:idx_ends-3]
17: log('Page URL: '+url_campaña,level='info')
18: lead = env['crm.lead'].search([('id','=', record.res_id)])
19: lead.write({'x_url_campaña': url_campaña})
La linea 12 es un "log" o registro para saber si entra al disparador, son simples representaciones en texto de nuestro código log() para darnos idea de que esta pasando en nuestro código.
Y estos se revisan en Menú -> Técnico -> Registros
Las lineas 13 y 14 son para ubicar dentro del correo la info que necesitamos, en mi caso requiero que busque la url de la campaña dentro del cuerpo del correo.
13: idx_begin = record.body.find('Page URL: ')
14: idx_ends = record.body.find('User Agent: ')
Si hay coincidencia, obtengo el texto desde las posiciones de inicio y fin para guardar la url de la campaña en lineas 16 y 17 .
15: if idx_begin>-1:
16: url_campaña= record.body[idx_begin+10:idx_ends-3]
Aquí en las lineas 18 y 19 obtengo a que lead/oportunidad pertenece esta nota de correo electrónico y le asigno el valor a un campo personalizado la url de la campaña encontrada en el body y lo escribo en lead.
18: lead = env['crm.lead'].search([('id','=', record.res_id)])
19: lead.write({'x_url_campaña': url_campaña})
Resultado:
Correo original:
Lead con campo personalizado:
Conclusion: esta solución fue personalizada pero en realidad así puedes leer cualquier linea del cuerpo de correo electrónico que se genera en los Leads/Oportunidades y asignarlas a cualquier campo sea personalizado o no.
Si tienes comentarios o preguntas no dudes en contactar a los expertos, tus amigos de Conectika.tech
Creando acciones automatizadas en Odoo 16