diff options
| author | David Beguin <dbe@odoo.com> | 2020-03-20 08:48:20 +0000 |
|---|---|---|
| committer | David Beguin <dbe@odoo.com> | 2020-03-23 09:57:09 +0000 |
| commit | 83ffe8b50b2a2a65e2f19450e5ef134c0040dfb7 (patch) | |
| tree | 807afe518e646ab598cc33b56e2834e52b1cd6f6 | |
| parent | fba4517567b9bd2a11b9d1a4e464e79e197a5577 (diff) | |
[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) <tde@openerp.com>
| -rw-r--r-- | odoo/addons/base/models/res_partner.py | 11 | ||||
| -rw-r--r-- | 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 @@ <notebook colspan="4"> <page string="Contacts & Addresses" name="contact_addresses" autofocus="autofocus"> - <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_lang': lang, 'default_user_id': user_id, 'default_type': 'other'}"> + <field name="child_ids" mode="kanban" context="{'default_parent_id': active_id, 'default_street': street, 'default_street2': street2, 'default_city': city, 'default_state_id': state_id, 'default_zip': zip, 'default_country_id': country_id, 'default_lang': None, 'default_user_id': user_id, 'default_type': 'other'}"> <kanban> <field name="id"/> <field name="color"/> |
