diff --git a/addons/crm/data/crm_lead_prediction_data.xml b/addons/crm/data/crm_lead_prediction_data.xml index 42a2e8e34d9..a437956d0fc 100644 --- a/addons/crm/data/crm_lead_prediction_data.xml +++ b/addons/crm/data/crm_lead_prediction_data.xml @@ -26,7 +26,7 @@ crm.pls_start_date - + diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index e57d4a771f7..bdb39032b89 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -105,7 +105,7 @@ class Lead(models.Model): date_conversion = fields.Datetime('Conversion Date', readonly=True) # Probability - Only used for type opportunity - probability = fields.Float('Probability', group_operator="avg", default=10.0) + probability = fields.Float('Probability', group_operator="avg") automated_probability = fields.Float('Automated Probability', readonly=True) is_automated_probability = fields.Boolean('Is automated probability?', compute="_compute_is_automated_probability") phone_state = fields.Selection([ @@ -1426,9 +1426,11 @@ class Lead(models.Model): # Recompute all the leads. Won : probability = 100 | Lost : probability = 0 or inactive # Here, inactive won't be returned anyway + # Get also all the lead without probability --> These are the new leads. Activate auto probability on them. pls_start_date = self._pls_get_safe_start_date() if pls_start_date: - pending_lead_domain = [('probability', '<', 100), ('probability', '>', 0), ('create_date', '>', pls_start_date)] + pending_lead_domain = ['&', ('create_date', '>', pls_start_date), + '|', ('probability', '=', False), '&', ('probability', '<', 100), ('probability', '>', 0)] leads_to_update = self.env['crm.lead'].search(pending_lead_domain) lead_probabilities = leads_to_update._pls_get_naive_bayes_probabilities(batch_mode=True) @@ -1598,7 +1600,7 @@ class Lead(models.Model): self.flush(['probability']) query = """SELECT id, %s FROM crm_lead l - WHERE probability > 0 AND probability < 100 AND active = True AND id in %%s order by team_id asc""" + WHERE ((probability > 0 AND probability < 100) OR probability is null) AND active = True AND id in %%s order by team_id asc""" query = sql.SQL(query % str_fields).format(*args) self._cr.execute(query, [tuple(self.ids)]) @@ -1608,7 +1610,7 @@ class Lead(models.Model): FROM crm_lead l LEFT JOIN crm_lead_tag_rel rel ON l.id = rel.lead_id LEFT JOIN crm_lead_tag t ON rel.tag_id = t.id - WHERE l.probability > 0 AND l.probability < 100 AND l.active = True AND l.id in %s order by l.team_id asc""" + WHERE ((l.probability > 0 AND l.probability < 100) OR l.probability is null) AND l.active = True AND l.id in %s order by l.team_id asc""" self._cr.execute(query, [tuple(self.ids)]) tag_results = self._cr.dictfetchall()