diff --git a/addons/crm/__manifest__.py b/addons/crm/__manifest__.py index 1100d1f4214..acb084220cc 100644 --- a/addons/crm/__manifest__.py +++ b/addons/crm/__manifest__.py @@ -47,6 +47,7 @@ 'report/crm_opportunity_report_views.xml', 'views/crm_team_views.xml', 'views/digest_views.xml', + 'views/utm_campaign_views.xml' ], 'demo': [ 'data/crm_demo.xml', diff --git a/addons/crm/models/__init__.py b/addons/crm/models/__init__.py index 0a441965aa8..463bcc22e85 100644 --- a/addons/crm/models/__init__.py +++ b/addons/crm/models/__init__.py @@ -10,3 +10,4 @@ from . import res_config_settings from . import res_partner from . import digest from . import crm_lead_scoring_frequency +from . import utm diff --git a/addons/crm/models/utm.py b/addons/crm/models/utm.py new file mode 100644 index 00000000000..c68f6b43365 --- /dev/null +++ b/addons/crm/models/utm.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models, api, SUPERUSER_ID + +class UtmCampaign(models.Model): + _inherit = 'utm.campaign' + + crm_lead_activated = fields.Boolean('Use Leads', compute='_compute_crm_lead_activated') + lead_count = fields.Integer('Lead Count', groups='sales_team.group_sale_salesman', compute="_compute_global_opportunity_and_lead_count") + opportunity_count = fields.Integer('Opportunity Count', groups='sales_team.group_sale_salesman', compute="_compute_global_opportunity_and_lead_count") + + def _compute_crm_lead_activated(self): + for campaign in self: + campaign.crm_lead_activated = self.env.user.has_group('crm.group_use_lead') + + def _compute_global_opportunity_and_lead_count(self): + lead_data = self.env['crm.lead'].with_context(active_test=False).read_group([ + ('campaign_id', 'in', self.ids)], + ['campaign_id'], ['campaign_id']) + data_map = {datum['campaign_id'][0]: datum['campaign_id_count'] for datum in lead_data} + if self.env.user.has_group('crm.group_use_lead'): + for campaign in self: + campaign.lead_count = data_map.get(campaign.id, 0) + campaign.opportunity_count = 0 + else: + for campaign in self: + campaign.lead_count = 0 + campaign.opportunity_count = data_map.get(campaign.id, 0) + + def action_redirect_to_leads(self): + action = self.env.ref('crm.crm_lead_all_leads').read()[0] + action['domain'] = [('campaign_id', '=', self.id)] + action['context'] = {'default_type': 'lead', 'active_test': False} + return action + + def action_redirect_to_opportunities(self): + action = self.env.ref('crm.crm_lead_opportunities').read()[0] + action['view_mode'] = 'tree,kanban,graph,pivot,form,calendar' + action['domain'] = [('campaign_id', '=', self.id)] + action['context'] = {'active_test': False} + return action diff --git a/addons/crm/views/utm_campaign_views.xml b/addons/crm/views/utm_campaign_views.xml new file mode 100644 index 00000000000..bb6e0abb78d --- /dev/null +++ b/addons/crm/views/utm_campaign_views.xml @@ -0,0 +1,50 @@ + + + + utm.campaign.view.kanban + utm.campaign + + + + +
+ Leads +
+
+ Opportunities +
+
+
+
+ + + utm.campaign.view.form + utm.campaign + + + + + + + + + +