diff options
| author | Jérémy Hennecart <jeh@odoo.com> | 2020-09-23 08:41:02 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-11-03 16:18:03 +0000 |
| commit | 304c367445d3b659666a2bd2a11eae97d85e3166 (patch) | |
| tree | 95c7a182e03330a57619acf11e98a0d1179520d6 /addons/crm | |
| parent | 4a07594b1831647e4a1e358baa19eb9c713309f7 (diff) | |
[FIX] crm: correctly recompute dynamic depends when emptying crm.pls_fields config parameter
When we clear the configuration parameter crm.pls_fields unlink method is
called. In order to have a correct dynamic compute based on this parameter
we need to re-evaluate the depends. This is done by overriding unlink of
ir.config_parameter, like already done at create and write.
Task-2196200
closes odoo/odoo#61290
X-original-commit: d04cc4df4ec28816aeb6d1d7c7fc0e547fd13fa5
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Diffstat (limited to 'addons/crm')
| -rw-r--r-- | addons/crm/models/ir_config_parameter.py | 8 | ||||
| -rw-r--r-- | addons/crm/tests/test_crm_pls.py | 25 |
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) |
