summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/crm/models/ir_config_parameter.py8
-rw-r--r--addons/crm/tests/test_crm_pls.py25
2 files changed, 33 insertions, 0 deletions
diff --git a/addons/crm/models/ir_config_parameter.py b/addons/crm/models/ir_config_parameter.py
index 890120a4974..af74a83e272 100644
--- a/addons/crm/models/ir_config_parameter.py
+++ b/addons/crm/models/ir_config_parameter.py
@@ -21,3 +21,11 @@ class IrConfigParameter(models.Model):
self.flush()
self.env.registry.setup_models(self.env.cr)
return records
+
+ def unlink(self):
+ pls_emptied = any(record.key == "crm.pls_fields" for record in self)
+ result = super(IrConfigParameter, self).unlink()
+ if pls_emptied:
+ self.flush()
+ self.env.registry.setup_models(self.env.cr)
+ return pls_emptied
diff --git a/addons/crm/tests/test_crm_pls.py b/addons/crm/tests/test_crm_pls.py
index b49e8e612d1..24c50111832 100644
--- a/addons/crm/tests/test_crm_pls.py
+++ b/addons/crm/tests/test_crm_pls.py
@@ -351,3 +351,28 @@ class TestCRMPLS(TransactionCase):
self.assertEqual(tools.float_compare(lead_tag_1.automated_probability, 33.69, 2), 0)
self.assertEqual(tools.float_compare(lead_tag_2.automated_probability, 23.51, 2), 0)
self.assertEqual(tools.float_compare(lead_tag_1_2.automated_probability, 28.05, 2), 0)
+
+ # set email_state for each lead and update probabilities
+ leads.filtered(lambda lead: lead.id % 2 == 0).email_state = 'correct'
+ leads.filtered(lambda lead: lead.id % 2 == 1).email_state = 'incorrect'
+ Lead._cron_update_automated_probabilities()
+ leads_with_tags.invalidate_cache()
+
+ self.assertEqual(tools.float_compare(leads[3].automated_probability, 4.21, 2), 0)
+ self.assertEqual(tools.float_compare(leads[8].automated_probability, 0.23, 2), 0)
+
+ # remove all pls fields
+ self.env['ir.config_parameter'].sudo().set_param("crm.pls_fields", False)
+ Lead._cron_update_automated_probabilities()
+ leads_with_tags.invalidate_cache()
+
+ self.assertEqual(tools.float_compare(leads[3].automated_probability, 34.38, 2), 0)
+ self.assertEqual(tools.float_compare(leads[8].automated_probability, 50.0, 2), 0)
+
+ # check if the probabilities are the same with the old param
+ self.env['ir.config_parameter'].sudo().set_param("crm.pls_fields", "country_id,state_id,email_state,phone_state,source_id")
+ Lead._cron_update_automated_probabilities()
+ leads_with_tags.invalidate_cache()
+
+ self.assertEqual(tools.float_compare(leads[3].automated_probability, 4.21, 2), 0)
+ self.assertEqual(tools.float_compare(leads[8].automated_probability, 0.23, 2), 0)