diff --git a/addons/crm/models/crm_lead.py b/addons/crm/models/crm_lead.py index b704979de85..12bbac57459 100644 --- a/addons/crm/models/crm_lead.py +++ b/addons/crm/models/crm_lead.py @@ -312,9 +312,10 @@ class Lead(models.Model): if vals.get('user_id') and 'date_open' not in vals: vals['date_open'] = fields.Datetime.now() - if context.get('default_partner_id') and not vals.get('email_from'): - partner = self.env['res.partner'].browse(context['default_partner_id']) - vals['email_from'] = partner.email + partner_id = vals.get('partner_id') or context.get('default_partner_id') + onchange_values = self._onchange_partner_id_values(partner_id) + onchange_values.update(vals) # we don't want to overwrite any existing key + vals = onchange_values # context: no_log, because subtype already handle this return super(Lead, self.with_context(context, mail_create_nolog=True)).create(vals) diff --git a/addons/website_crm_partner_assign/tests/test_partner_assign.py b/addons/website_crm_partner_assign/tests/test_partner_assign.py index 137cd773c33..4bab904b3b8 100644 --- a/addons/website_crm_partner_assign/tests/test_partner_assign.py +++ b/addons/website_crm_partner_assign/tests/test_partner_assign.py @@ -16,6 +16,19 @@ class TestPartnerAssign(TransactionCase): def setUp(self): super(TestPartnerAssign, self).setUp() + self.customer_uk = self.env['res.partner'].create({ + 'name': 'Nigel', + 'country_id': self.env.ref('base.uk').id, + 'city': 'Birmingham', + 'zip': 'B46 3AG', + 'street': 'Cannon Hill Park', + }) + self.lead_uk = self.env['crm.lead'].create({ + 'type': 'opportunity', + 'name': 'Office Design and Architecture', + 'partner_id': self.customer_uk.id + }) + def geo_find(addr, apikey): return { 'Wavre, Belgium': (50.7158956, 4.6128075), @@ -51,7 +64,7 @@ class TestPartnerAssign(TransactionCase): "partner_weight": 10, }) - lead = self.env.ref('crm.crm_case_21') + lead = self.lead_uk # In order to test find nearest Partner functionality and assign to opportunity, # I Set Geo Lattitude and Longitude according to partner address.