[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:
Lorenzo Ciciotti
2022-07-18 19:55:38 +02:00
committed by Thibault Delavallée
parent d4b14f7c56
commit e0898fd4d8
4 changed files with 14 additions and 6 deletions
+10 -5
View File
@@ -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)
+1 -1
View File
@@ -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({
+2
View File
@@ -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):
+1
View File
@@ -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