diff --git a/addons/mass_mailing_crm/models/mass_mailing.py b/addons/mass_mailing_crm/models/mass_mailing.py
index 4abd0570129..55749142d3f 100644
--- a/addons/mass_mailing_crm/models/mass_mailing.py
+++ b/addons/mass_mailing_crm/models/mass_mailing.py
@@ -3,6 +3,7 @@
from odoo import api, fields, models
+from odoo.osv import expression
class MassMailing(models.Model):
@@ -10,34 +11,31 @@ class MassMailing(models.Model):
_inherit = 'mail.mass_mailing'
crm_lead_activated = fields.Boolean('Use Leads', compute='_compute_crm_lead_activated')
- crm_lead_count = fields.Integer('Lead Count', compute='_compute_crm_lead_count')
- crm_opportunities_count = fields.Integer('Opportunities Count', compute='_compute_crm_opportunities_count')
+ 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')
def _compute_crm_lead_activated(self):
for mass_mailing in self:
mass_mailing.crm_lead_activated = self.env.user.has_group('crm.group_use_lead')
@api.depends('crm_lead_activated')
- def _compute_crm_lead_count(self):
- for mass_mailing in self:
- if mass_mailing.crm_lead_activated:
- mass_mailing.crm_lead_count = self.env['crm.lead'].search_count(self._get_crm_utm_domain())
- else:
- mass_mailing.crm_lead_count = 0
-
- @api.depends('crm_lead_activated')
- def _compute_crm_opportunities_count(self):
+ def _compute_crm_lead_and_opportunities_count(self):
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_opportunities_count = self.env['crm.lead'].search_count(self._get_crm_utm_domain())
+ mass_mailing.crm_lead_count = 0
+ mass_mailing.crm_opportunities_count = lead_and_opportunities_count
@api.multi
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'}
+ action['context'] = {'default_type': 'lead', 'active_test': False}
return action
@api.multi
@@ -45,16 +43,19 @@ class MassMailing(models.Model):
action = self.env.ref('crm.crm_lead_opportunities').read()[0]
action['view_mode'] = 'tree,kanban,graph,pivot,form,calendar'
action['domain'] = self._get_crm_utm_domain()
+ action['context'] = {'active_test': False}
return action
def _get_crm_utm_domain(self):
- res = []
+ """ We want all records that match the UTMs """
+ domain = []
if self.campaign_id:
- res.append(('campaign_id', '=', self.campaign_id.id))
+ domain = expression.AND([domain, [('campaign_id', '=', self.campaign_id.id)]])
if self.source_id:
- res.append(('source_id', '=', self.source_id.id))
+ domain = expression.AND([domain, [('source_id', '=', self.source_id.id)]])
if self.medium_id:
- res.append(('medium_id', '=', self.medium_id.id))
- if not res:
- res.append((0, '=', 1))
- return res
+ 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/mass_mailing_views.xml b/addons/mass_mailing_crm/views/mass_mailing_views.xml
index 889c6ff8529..f0d2e33ebc9 100644
--- a/addons/mass_mailing_crm/views/mass_mailing_views.xml
+++ b/addons/mass_mailing_crm/views/mass_mailing_views.xml
@@ -11,14 +11,16 @@
type="object"
icon="fa-star"
class="oe_stat_button"
- attrs="{'invisible': ['|', '|', ('state', 'in', ('draft','test')), ('mailing_model_name', '!=', 'crm.lead'), ('crm_lead_activated', '=', False)]}" >
+ groups="sales_team.group_sale_salesman"
+ attrs="{'invisible': ['|', ('state', '=', 'draft'), ('crm_lead_activated', '=', False)]}" >
diff --git a/addons/mass_mailing_sale/models/mass_mailing.py b/addons/mass_mailing_sale/models/mass_mailing.py
index 723bdee7b1a..1f6dff970d2 100644
--- a/addons/mass_mailing_sale/models/mass_mailing.py
+++ b/addons/mass_mailing_sale/models/mass_mailing.py
@@ -9,8 +9,8 @@ class MassMailing(models.Model):
_name = 'mail.mass_mailing'
_inherit = 'mail.mass_mailing'
- sale_quotation_count = fields.Integer('Quotation Count', compute='_compute_sale_quotation_count')
- sale_invoiced_amount = fields.Integer('Invoiced Amount', compute='_compute_sale_invoiced_amount')
+ sale_quotation_count = fields.Integer('Quotation Count', groups='sales_team.group_sale_salesman', compute='_compute_sale_quotation_count')
+ sale_invoiced_amount = fields.Integer('Invoiced Amount', groups='sales_team.group_sale_salesman', compute='_compute_sale_invoiced_amount')
@api.depends('mailing_domain')
def _compute_sale_quotation_count(self):
@@ -25,7 +25,10 @@ class MassMailing(models.Model):
for mass_mailing in self:
if has_so_access and has_invoice_report_access:
invoices = self.env['sale.order'].search(self._get_sale_utm_domain()).mapped('invoice_ids')
- res = self.env['account.invoice.report'].search_read([('invoice_id', 'in', invoices.ids)], ['user_currency_price_total'])
+ res = self.env['account.invoice.report'].search_read(
+ [('invoice_id', 'in', invoices.ids), ('state', 'not in', ['draft', 'cancel'])],
+ ['user_currency_price_total']
+ )
mass_mailing.sale_invoiced_amount = sum(r['user_currency_price_total'] for r in res)
else:
mass_mailing.sale_invoiced_amount = 0
@@ -43,7 +46,6 @@ class MassMailing(models.Model):
invoices = self.env['sale.order'].search(self._get_sale_utm_domain()).mapped('invoice_ids')
action['domain'] = [
('id', 'in', invoices.ids),
- ('type', 'in', ['out_invoice', 'out_refund']),
('state', 'not in', ['draft', 'cancel'])
]
return action
diff --git a/addons/mass_mailing_sale/views/mass_mailing_views.xml b/addons/mass_mailing_sale/views/mass_mailing_views.xml
index 40a2b9ad0ce..46d17296926 100644
--- a/addons/mass_mailing_sale/views/mass_mailing_views.xml
+++ b/addons/mass_mailing_sale/views/mass_mailing_views.xml
@@ -10,14 +10,16 @@
type="object"
icon="fa-usd"
class="oe_stat_button"
- attrs="{'invisible': ['|', ('state', 'in', ('draft','test')), ('mailing_model_name', '!=', 'sale.order')]}" >
+ groups="sales_team.group_sale_salesman"
+ attrs="{'invisible': [('state', '=', 'draft')]}">