From 83ffe8b50b2a2a65e2f19450e5ef134c0040dfb7 Mon Sep 17 00:00:00 2001 From: David Beguin Date: Fri, 20 Mar 2020 08:48:20 +0000 Subject: [PATCH] [FIX] base: make parent contact lang prevail on DB lang Purpose ======= If a user specifies a language on a company (res.partner), chances are children of said company will speak the same language. It is at least most likely than having them speak the default DB language. Specifications ============== If a language is set on the parent, the child contact created from the o2m should have by default the same language. Before this commit, we set lang in the context of the o2m field but it not taken into account and is overriden by the default DB lang. After this commit, the default lang value is forced in the default get to be the same than the parent, if any. Else, we fallback to the default DB lang. Link ==== Task ID: 2210350 PR #48077 Signed-off-by: Thibault Delavallee (tde) --- odoo/addons/base/models/res_partner.py | 11 ++++++++--- odoo/addons/base/views/res_partner_views.xml | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index 728bd040f1b..cb5d5f6b174 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -137,10 +137,15 @@ class Partner(models.Model): @api.model def default_get(self, default_fields): - """Add the company of the parent as default if we are creating a child partner.""" + """Add the company of the parent as default if we are creating a child partner. + Also take the parent lang by default if any, otherwise, fallback to default DB lang.""" values = super().default_get(default_fields) + parent = self.env["res.partner"] if 'parent_id' in default_fields and values.get('parent_id'): - values['company_id'] = self.browse(values.get('parent_id')).company_id.id + parent = self.browse(values.get('parent_id')) + values['company_id'] = parent.company_id.id + if 'lang' in default_fields: + values['lang'] = values.get('lang') or parent.lang or self.env.lang return values name = fields.Char(index=True) @@ -151,7 +156,7 @@ class Partner(models.Model): parent_name = fields.Char(related='parent_id.name', readonly=True, string='Parent name') child_ids = fields.One2many('res.partner', 'parent_id', string='Contact', domain=[('active', '=', True)]) # force "active_test" domain to bypass _search() override ref = fields.Char(string='Reference', index=True) - lang = fields.Selection(_lang_get, string='Language', default=lambda self: self.env.lang, + lang = fields.Selection(_lang_get, string='Language', help="All the emails and documents sent to this contact will be translated in this language.") active_lang_count = fields.Integer(compute='_compute_active_lang_count') tz = fields.Selection(_tz_get, string='Timezone', default=lambda self: self._context.get('tz'), diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml index 1c346cbc60d..94ffaa2731d 100644 --- a/odoo/addons/base/views/res_partner_views.xml +++ b/odoo/addons/base/views/res_partner_views.xml @@ -222,7 +222,7 @@ - +