From 6c7dd7501a83123cc78079f93ba73a082c44e4ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Mon, 3 May 2021 08:29:15 +0000 Subject: [PATCH] [FIX] crm: do not reset action name in convert wizard each time an option changes Currently ``name`` field that holds the action type is recomputed each time duplicated leads are updated. However duplicated leads are often updated notably each time customer action (create / link / do nothing) and chosen customer are updated. As ``name`` compute method is mainly present to replace a default value its compute method is updated so that it nows compute only when not having a value. Once having a value user choice is kept. Task ID-2452777 COM PR odoo/odoo#68618 closes odoo/odoo#70254 X-original-commit: d75905f7acb1e7584d01792b4880fa76e6920d56 Signed-off-by: Thibault Delavallee (tde) --- addons/crm/tests/test_crm_lead_convert.py | 26 ++++++++++++++++++++ addons/crm/wizard/crm_lead_to_opportunity.py | 3 ++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/addons/crm/tests/test_crm_lead_convert.py b/addons/crm/tests/test_crm_lead_convert.py index 48502f57154..d20a616d47f 100644 --- a/addons/crm/tests/test_crm_lead_convert.py +++ b/addons/crm/tests/test_crm_lead_convert.py @@ -29,6 +29,32 @@ class TestLeadConvertForm(crm_common.TestLeadConvertCommon): self.assertEqual(wizard.action, 'exist') self.assertEqual(wizard.partner_id, customer) + @users('user_sales_manager') + def test_form_name_onchange(self): + """ Test Lead._find_matching_partner() """ + lead = self.env['crm.lead'].browse(self.lead_1.ids) + lead_dup = lead.copy({'name': 'Duplicate'}) + customer = self.env['res.partner'].create({ + "name": "Amy Wong", + "email": '"Amy, PhD Student, Wong" Tiny ' + }) + + wizard = Form(self.env['crm.lead2opportunity.partner'].with_context({ + 'active_model': 'crm.lead', + 'active_id': lead.id, + 'active_ids': lead.ids, + })) + + self.assertEqual(wizard.name, 'merge') + self.assertEqual(wizard.action, 'exist') + self.assertEqual(wizard.partner_id, customer) + self.assertEqual(wizard.duplicated_lead_ids[:], lead + lead_dup) + + wizard.name = 'convert' + wizard.action = 'create' + self.assertEqual(wizard.action, 'create', 'Should keep user input') + self.assertEqual(wizard.name, 'convert', 'Should keep user input') + @tagged('lead_manage') class TestLeadConvert(crm_common.TestLeadConvertCommon): diff --git a/addons/crm/wizard/crm_lead_to_opportunity.py b/addons/crm/wizard/crm_lead_to_opportunity.py index 72d0e236f64..b24314c75af 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity.py +++ b/addons/crm/wizard/crm_lead_to_opportunity.py @@ -50,7 +50,8 @@ class Lead2OpportunityPartner(models.TransientModel): @api.depends('duplicated_lead_ids') def _compute_name(self): for convert in self: - convert.name = 'merge' if convert.duplicated_lead_ids and len(convert.duplicated_lead_ids) >= 2 else 'convert' + if not convert.name: + convert.name = 'merge' if convert.duplicated_lead_ids and len(convert.duplicated_lead_ids) >= 2 else 'convert' @api.depends('lead_id') def _compute_action(self):