diff --git a/addons/mass_mailing_crm/models/mailing_mailing.py b/addons/mass_mailing_crm/models/mailing_mailing.py index e4c23086bb4..97de181c798 100644 --- a/addons/mass_mailing_crm/models/mailing_mailing.py +++ b/addons/mass_mailing_crm/models/mailing_mailing.py @@ -10,50 +10,26 @@ class MassMailing(models.Model): _name = 'mailing.mailing' _inherit = 'mailing.mailing' - crm_lead_activated = fields.Boolean('Use Leads', compute='_compute_crm_lead_activated') - crm_lead_count = fields.Integer('Lead Count', groups='sales_team.group_sale_salesman', compute='_compute_crm_lead_and_opportunities_count') - crm_opportunities_count = fields.Integer('Opportunities Count', groups='sales_team.group_sale_salesman', compute='_compute_crm_lead_and_opportunities_count') + use_leads = fields.Boolean('Use Leads', compute='_compute_use_leads') + crm_lead_count = fields.Integer('Leads/Opportunities Count', groups='sales_team.group_sale_salesman', compute='_compute_crm_lead_count') - def _compute_crm_lead_activated(self): + def _compute_use_leads(self): for mass_mailing in self: - mass_mailing.crm_lead_activated = self.env.user.has_group('crm.group_use_lead') + mass_mailing.use_leads = self.env.user.has_group('crm.group_use_lead') - @api.depends('crm_lead_activated') - def _compute_crm_lead_and_opportunities_count(self): + def _compute_crm_lead_count(self): + lead_data = self.env['crm.lead'].with_context(active_test=False).read_group( + [('source_id', 'in', self.source_id.ids)], + ['source_id'], ['source_id'] + ) + mapped_data = {datum['source_id'][0]: datum['source_id_count'] for datum in lead_data} for mass_mailing in self: - lead_and_opportunities_count = mass_mailing.crm_lead_count = self.env['crm.lead'] \ - .with_context(active_test=False) \ - .search_count(self._get_crm_utm_domain()) - if mass_mailing.crm_lead_activated: - mass_mailing.crm_lead_count = lead_and_opportunities_count - mass_mailing.crm_opportunities_count = 0 - else: - mass_mailing.crm_lead_count = 0 - mass_mailing.crm_opportunities_count = lead_and_opportunities_count + mass_mailing.crm_lead_count = mapped_data.get(mass_mailing.source_id.id, 0) - def action_redirect_to_leads(self): - action = self.env.ref('crm.crm_lead_all_leads').read()[0] - action['domain'] = self._get_crm_utm_domain() - action['context'] = {'default_type': 'lead', 'active_test': False, 'create': False} - return action - - def action_redirect_to_opportunities(self): - action = self.env.ref('crm.crm_lead_opportunities').read()[0] + def action_redirect_to_leads_and_opportunities(self): + view = 'crm.crm_lead_all_leads' if self.use_leads else 'crm.crm_lead_opportunities' + action = self.env.ref(view).read()[0] action['view_mode'] = 'tree,kanban,graph,pivot,form,calendar' - action['domain'] = self._get_crm_utm_domain() + action['domain'] = [('source_id', 'in', self.source_id.ids)] action['context'] = {'active_test': False, 'create': False} return action - - def _get_crm_utm_domain(self): - """ We want all records that match the UTMs """ - domain = [] - if self.campaign_id: - domain = expression.AND([domain, [('campaign_id', '=', self.campaign_id.id)]]) - if self.source_id: - domain = expression.AND([domain, [('source_id', '=', self.source_id.id)]]) - if self.medium_id: - domain = expression.AND([domain, [('medium_id', '=', self.medium_id.id)]]) - if not domain: - domain = expression.AND([domain, [(0, '=', 1)]]) - - return domain diff --git a/addons/mass_mailing_crm/views/mailing_mailing_views.xml b/addons/mass_mailing_crm/views/mailing_mailing_views.xml index d8fd50830ac..e5edbd55c54 100644 --- a/addons/mass_mailing_crm/views/mailing_mailing_views.xml +++ b/addons/mass_mailing_crm/views/mailing_mailing_views.xml @@ -6,22 +6,18 @@ - - - - - - + attrs="{'invisible': [('state', '=', 'draft')]}"> + + + + Leads + Opportunities +