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 @@
-