Files
enterprise-addons/marketing_automation/wizard/mail_compose_message.py
T

37 lines
1.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import fields, models
class MailComposeMessage(models.TransientModel):
_inherit = 'mail.compose.message'
marketing_activity_id = fields.Many2one('marketing.activity', string='Marketing Activity')
def _prepare_mail_values_mailing_traces(self, mail_values_all):
""" Override method to link mail automation activity with mail statistics"""
trace_values_all = super()._prepare_mail_values_mailing_traces(mail_values_all)
# skip update if no marketing activity is linked to the mailing
if not self.marketing_activity_id:
return trace_values_all
if self.composition_mode == 'mass_mail' and (self.mass_mailing_name or self.mass_mailing_id) and self.marketing_activity_id:
# retrieve trace linked to recipient
traces = self.env['marketing.trace'].search(
[
('activity_id', '=', self.marketing_activity_id.id),
('res_id', 'in', list(trace_values_all)),
],
# if somehow multiple traces exist, last one is going to override old ones in mapping below
# so that we keep last trace reference only
order='id ASC',
)
traces_mapping = {trace.res_id: trace.id for trace in traces}
# update statistics creation done in mass_mailing to include link between stat and trace
for res_id, trace_values in trace_values_all.items():
trace_values['marketing_trace_id'] = traces_mapping[res_id]
return trace_values_all