From 31b37b8abff8d18ad2e5c3d0daf9b1e098f7c2d6 Mon Sep 17 00:00:00 2001 From: Laurent Smet Date: Thu, 11 May 2017 09:47:05 +0200 Subject: [PATCH] [FIX] crm: bad computation of 'Won in opportunities' The filter on activity_date_deadline has been added during a fix, see 28c158cd130ce491b256e65b8f48c1f140fff24d It's incorrect for the computation of the 'Won in opportunities' because it excludes opportunities not having activity_ids. Furthermore, the way to compute the 'won' amount is not equals to the filters when clicking on the button. Then, we need to keep only opportunities standing in a kanban column having a probability of 100%. opw-742489 --- addons/crm/models/crm_lead.py | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index b2b67581165..773dd75bbb9 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -896,29 +896,30 @@ class Lead(models.Model): 'nb_opportunities': 0, } - opportunities = self.search([('type', '=', 'opportunity'), ('user_id', '=', self._uid), ('activity_date_deadline', '!=', False)]) + opportunities = self.search([('type', '=', 'opportunity'), ('user_id', '=', self._uid)]) for opp in opportunities: # Expected closing - if opp.date_deadline: - date_deadline = fields.Date.from_string(opp.date_deadline) - if date_deadline == date.today(): - result['closing']['today'] += 1 - if date.today() <= date_deadline <= date.today() + timedelta(days=7): - result['closing']['next_7_days'] += 1 - if date_deadline < date.today(): - result['closing']['overdue'] += 1 - # Next activities - for activity in opp.activity_ids: - date_deadline = fields.Date.from_string(activity.date_deadline) - if date_deadline == date.today(): - result['activity']['today'] += 1 - if date.today() <= date_deadline <= date.today() + timedelta(days=7): - result['activity']['next_7_days'] += 1 - if date_deadline < date.today(): - result['activity']['overdue'] += 1 + if opp.activity_date_deadline: + if opp.date_deadline: + date_deadline = fields.Date.from_string(opp.date_deadline) + if date_deadline == date.today(): + result['closing']['today'] += 1 + if date.today() <= date_deadline <= date.today() + timedelta(days=7): + result['closing']['next_7_days'] += 1 + if date_deadline < date.today(): + result['closing']['overdue'] += 1 + # Next activities + for activity in opp.activity_ids: + date_deadline = fields.Date.from_string(activity.date_deadline) + if date_deadline == date.today(): + result['activity']['today'] += 1 + if date.today() <= date_deadline <= date.today() + timedelta(days=7): + result['activity']['next_7_days'] += 1 + if date_deadline < date.today(): + result['activity']['overdue'] += 1 # Won in Opportunities - if opp.date_closed: + if opp.date_closed and opp.stage_id.probability == 100: date_closed = fields.Date.from_string(opp.date_closed) if date.today().replace(day=1) <= date_closed <= date.today(): if opp.planned_revenue: