[FW][FIX] crm: update lead language based on partner
Onchange could also populate the lang field of the lead when updating the customer. Partial backport of odoo/odoo@65bb3a5710 Task-2917174 Closes odoo/odoo#78715 X-original-commit: e0e1e402a6c40ed89bc5a11671e364a67e93a176 Part-of: odoo/odoo#96190
This commit is contained in:
committed by
Thibault Delavallée
parent
d4b14f7c56
commit
e0898fd4d8
@@ -191,7 +191,9 @@ class Lead(models.Model):
|
||||
('correct', 'Correct'),
|
||||
('incorrect', 'Incorrect')], string='Email Quality', compute="_compute_email_state", store=True)
|
||||
website = fields.Char('Website', help="Website of the contact", compute="_compute_website", readonly=False, store=True)
|
||||
lang_id = fields.Many2one('res.lang', string='Language', compute='_compute_lang_id', readonly=False, store=True)
|
||||
lang_id = fields.Many2one(
|
||||
'res.lang', string='Language',
|
||||
compute='_compute_lang_id', readonly=False, store=True)
|
||||
lang_code = fields.Char(related='lang_id.code')
|
||||
lang_active_count = fields.Integer(compute='_compute_lang_active_count')
|
||||
# Address fields
|
||||
@@ -409,10 +411,13 @@ class Lead(models.Model):
|
||||
one if set. """
|
||||
# prepare cache
|
||||
lang_codes = [code for code in self.mapped('partner_id.lang') if code]
|
||||
lang_id_by_code = dict(
|
||||
(code, self.env['res.lang']._lang_get_id(code))
|
||||
for code in lang_codes
|
||||
)
|
||||
if lang_codes:
|
||||
lang_id_by_code = dict(
|
||||
(code, self.env['res.lang']._lang_get_id(code))
|
||||
for code in lang_codes
|
||||
)
|
||||
else:
|
||||
lang_id_by_code = {}
|
||||
for lead in self.filtered('partner_id'):
|
||||
lead.lang_id = lang_id_by_code.get(lead.partner_id.lang, False)
|
||||
|
||||
|
||||
@@ -127,8 +127,8 @@ class TestCrmCommon(TestSalesCommon, MailCase):
|
||||
base_us = cls.env.ref('base.us')
|
||||
cls.env['res.lang']._activate_lang('fr_FR')
|
||||
cls.env['res.lang']._activate_lang('en_US')
|
||||
cls.lang_fr = cls.env['res.lang']._lang_get('fr_FR')
|
||||
cls.lang_en = cls.env['res.lang']._lang_get('en_US')
|
||||
cls.lang_fr = cls.env['res.lang']._lang_get('fr_FR')
|
||||
|
||||
# leads
|
||||
cls.lead_1 = cls.env['crm.lead'].create({
|
||||
|
||||
@@ -70,6 +70,8 @@ class TestCRMLead(TestCrmCommon):
|
||||
lead.write({'partner_id': self.contact_company_1.id})
|
||||
for fname in PARTNER_ADDRESS_FIELDS_TO_SYNC:
|
||||
self.assertEqual(lead[fname], self.contact_company_1[fname])
|
||||
self.assertEqual(self.contact_company_1.lang, self.lang_en.code)
|
||||
self.assertEqual(lead.lang_id, self.lang_en)
|
||||
|
||||
@users('user_sales_leads')
|
||||
def test_crm_lead_creation_no_partner(self):
|
||||
|
||||
@@ -14,3 +14,4 @@ List of contributors:
|
||||
|
||||
Pascal Pelzer pascal.pelzer@metrum.lu https://github.com/PascalPelzer
|
||||
Jonathan Nemry jonathan.nemry@metrum.lu https://github.com/JonathanNEMRY
|
||||
Lorenzo Ciciotti lorenzo.ciciotti@metrum.lu https://github.com/lorenzo6ioti
|
||||
|
||||
Reference in New Issue
Block a user