diff --git a/addons/barcodes/models/barcodes.py b/addons/barcodes/models/barcodes.py index 6c3d228895e..1ee93c3bdd6 100644 --- a/addons/barcodes/models/barcodes.py +++ b/addons/barcodes/models/barcodes.py @@ -174,14 +174,14 @@ class BarcodeRule(models.Model): barcode_nomenclature_id = fields.Many2one('barcode.nomenclature', string='Barcode Nomenclature') sequence = fields.Integer(string='Sequence', help='Used to order rules such that rules with a smaller sequence match first') encoding = fields.Selection([ - ('any', _('Any')), + ('any', 'Any'), ('ean13', 'EAN-13'), ('ean8', 'EAN-8'), ('upca', 'UPC-A'), ], string='Encoding', required=True, default='any', help='This rule will apply only if the barcode is encoded with the specified encoding') type = fields.Selection([ - ('alias', _('Alias')), - ('product', _('Unit Product')) + ('alias', 'Alias'), + ('product', 'Unit Product') ], string='Type', required=True, default='product') pattern = fields.Char(string='Barcode Pattern', size=32, help="The barcode matching pattern", required=True, default='.*') alias = fields.Char(string='Alias', size=32, default='0', help='The matched pattern will alias to this barcode', required=True) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index 89ea7efcd43..6fd3c5e4e2b 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -371,52 +371,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 994a577239b..07600dc9465 100644 --- a/addons/crm/views/crm_lead_views.xml +++ b/addons/crm/views/crm_lead_views.xml @@ -433,7 +433,7 @@
-