From b8dda50aaa4ba605f6d536d83e6475fcb9b65298 Mon Sep 17 00:00:00 2001 From: David Beguin Date: Wed, 25 Sep 2019 09:28:53 +0000 Subject: [PATCH] [IMP] crm : set automated_probability = 100 when stage won If the stage is set to won, automated probability should = 100% Without forcing it, it should be the case as all lead at stage won have been won. (thanks Captain Obvious!) But if a user mark as lost a lead that is at won stage, it will reduce the probability of the won stage. Also, if the cron didn't run recently, it could be that the autmomated probability will give the same result than in previous stage (if no lead have been won at all). Task ID: 2044539 PR #37413 --- addons/crm/models/crm_lead.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index ab72b177edc..5503d5e9235 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -1318,6 +1318,7 @@ class Lead(models.Model): # get stages first_stage_id = self.env['crm.stage'].search([], order='sequence', limit=1) + won_stage_ids = self.env['crm.stage'].search([('is_won', '=', True)]).ids # Get all leads values, no matter the team_id leads_values_dict = self._pls_get_lead_pls_values(batch_mode=batch_mode) @@ -1326,8 +1327,11 @@ class Lead(models.Model): # Get unique couples to search in frequency table leads_values = set() - for values in leads_values_dict.values(): + won_leads = set() + for lead_id, values in leads_values_dict.items(): for couple in values['values']: + if couple[0] == 'stage_id' and couple[1] in won_stage_ids: + won_leads.add(lead_id) leads_values.add(couple) # get all variable related records from frequency table, no matter the team_id @@ -1377,6 +1381,10 @@ class Lead(models.Model): if not 'stage_id' in lead_fields: lead_probabilities[lead_id] = 0 continue + # if lead stage is won, return 100 + elif lead_id in won_leads: + lead_probabilities[lead_id] = 100 + continue lead_team_id = lead_values['team_id'] if lead_values['team_id'] else 0 # team_id = None -> Convert to 0 lead_team_id = lead_team_id if lead_team_id in result else -1 # team_id not in frequency Table -> convert to -1