diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py
index 2ec7aa5f0bf..0e24634a568 100644
--- a/addons/crm/models/crm_lead.py
+++ b/addons/crm/models/crm_lead.py
@@ -363,52 +363,60 @@ class Lead(models.Model):
for lead in self:
stage_id = lead._stage_find(domain=[('probability', '=', 100.0), ('on_change', '=', True)])
lead.write({'stage_id': stage_id.id, 'probability': 100})
- if lead.user_id and lead.team_id and lead.planned_revenue:
- query = """
- SELECT
- SUM(CASE WHEN user_id = %(user_id)s THEN 1 ELSE 0 END) as total_won,
- MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '30 days' AND user_id = %(user_id)s THEN planned_revenue ELSE 0 END) as max_user_30,
- MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '7 days' AND user_id = %(user_id)s THEN planned_revenue ELSE 0 END) as max_user_7,
- MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '30 days' AND team_id = %(team_id)s THEN planned_revenue ELSE 0 END) as max_team_30,
- MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '7 days' AND team_id = %(team_id)s THEN planned_revenue ELSE 0 END) as max_team_7
- FROM crm_lead
- WHERE
- type = 'opportunity'
- AND
- active = True
- AND
- probability = 100
- AND
- DATE_TRUNC('year', date_closed) = DATE_TRUNC('year', CURRENT_DATE)
- AND
- (user_id = %(user_id)s OR team_id = %(team_id)s)
- """
- lead.env.cr.execute(query, {'user_id': lead.user_id.id,
- 'team_id': lead.team_id.id})
- query_result = self.env.cr.dictfetchone()
- message = False
- if query_result['total_won'] == 1:
- message = _('Go, go, go! Congrats for your first deal.')
- elif query_result['max_team_30'] == lead.planned_revenue:
- message = _('Boom! Team record for the past 30 days.')
- elif query_result['max_team_7'] == lead.planned_revenue:
- message = _('Yeah! Deal of the last 7 days for the team.')
- elif query_result['max_user_30'] == lead.planned_revenue:
- message = _('You just beat your personal record for the past 30 days.')
- elif query_result['max_user_7'] == lead.planned_revenue:
- message = _('You just beat your personal record for the past 7 days.')
+ return True
- if message:
- return {
- 'effect': {
- 'fadeout': 'slow',
- 'message': message,
- 'img_url': '/web/image/%s/%s/image' % (lead.team_id.user_id._name, lead.team_id.user_id.id) if lead.team_id.user_id.image else '/web/static/src/img/smile.svg',
- 'type': 'rainbow_man',
- }
+ @api.multi
+ def action_set_won_rainbowman(self):
+ self.ensure_one()
+ self.action_set_won()
+
+ if self.user_id and self.team_id and self.planned_revenue:
+ query = """
+ SELECT
+ SUM(CASE WHEN user_id = %(user_id)s THEN 1 ELSE 0 END) as total_won,
+ MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '30 days' AND user_id = %(user_id)s THEN planned_revenue ELSE 0 END) as max_user_30,
+ MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '7 days' AND user_id = %(user_id)s THEN planned_revenue ELSE 0 END) as max_user_7,
+ MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '30 days' AND team_id = %(team_id)s THEN planned_revenue ELSE 0 END) as max_team_30,
+ MAX(CASE WHEN date_closed >= CURRENT_DATE - INTERVAL '7 days' AND team_id = %(team_id)s THEN planned_revenue ELSE 0 END) as max_team_7
+ FROM crm_lead
+ WHERE
+ type = 'opportunity'
+ AND
+ active = True
+ AND
+ probability = 100
+ AND
+ DATE_TRUNC('year', date_closed) = DATE_TRUNC('year', CURRENT_DATE)
+ AND
+ (user_id = %(user_id)s OR team_id = %(team_id)s)
+ """
+ self.env.cr.execute(query, {'user_id': self.user_id.id,
+ 'team_id': self.team_id.id})
+ query_result = self.env.cr.dictfetchone()
+
+ message = False
+ if query_result['total_won'] == 1:
+ message = _('Go, go, go! Congrats for your first deal.')
+ elif query_result['max_team_30'] == self.planned_revenue:
+ message = _('Boom! Team record for the past 30 days.')
+ elif query_result['max_team_7'] == self.planned_revenue:
+ message = _('Yeah! Deal of the last 7 days for the team.')
+ elif query_result['max_user_30'] == self.planned_revenue:
+ message = _('You just beat your personal record for the past 30 days.')
+ elif query_result['max_user_7'] == self.planned_revenue:
+ message = _('You just beat your personal record for the past 7 days.')
+
+ if message:
+ return {
+ 'effect': {
+ 'fadeout': 'slow',
+ 'message': message,
+ 'img_url': '/web/image/%s/%s/image' % (self.team_id.user_id._name, self.team_id.user_id.id) if self.team_id.user_id.image else '/web/static/src/img/smile.svg',
+ 'type': 'rainbow_man',
}
- return True
+ }
+ return True
@api.multi
def action_schedule_meeting(self):
diff --git a/addons/crm/views/crm_lead_views.xml b/addons/crm/views/crm_lead_views.xml
index c3384a4bc96..0a5dfc1e9c5 100644
--- a/addons/crm/views/crm_lead_views.xml
+++ b/addons/crm/views/crm_lead_views.xml
@@ -430,7 +430,7 @@
-
+