diff --git a/addons/crm/tests/test_crm_lead_convert_mass.py b/addons/crm/tests/test_crm_lead_convert_mass.py index 0da42cebb26..b153a053198 100644 --- a/addons/crm/tests/test_crm_lead_convert_mass.py +++ b/addons/crm/tests/test_crm_lead_convert_mass.py @@ -42,7 +42,7 @@ class TestLeadConvertMass(crm_common.TestLeadConvertMassCommon): with self.assertQueryCount(user_sales_manager=0): test_leads = self.env['crm.lead'].browse(test_leads.ids) - with self.assertQueryCount(user_sales_manager=583): # crm 543 / com 545 / ent 583 + with self.assertQueryCount(user_sales_manager=584): # crm 543 / com 545 / ent 584 test_leads._handle_salesmen_assignment(user_ids=user_ids, team_id=team_id) self.assertEqual(test_leads.team_id, self.sales_team_convert) @@ -167,7 +167,7 @@ class TestLeadConvertMass(crm_common.TestLeadConvertMassCommon): user_ids = self.assign_users.ids # randomness: at least 1 query - with self.assertQueryCount(user_sales_manager=1800): # crm 1503 / com 1790 / ent 1800 + with self.assertQueryCount(user_sales_manager=1801): # crm 1503 / com 1790 / ent 1800 mass_convert = self.env['crm.lead2opportunity.partner.mass'].with_context({ 'active_model': 'crm.lead', 'active_ids': test_leads.ids, diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index 24158403b0f..982096871aa 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -333,22 +333,24 @@ class Partner(models.Model): return "base/static/img/money.png" return super()._avatar_get_placeholder_path() + def _get_complete_name(self): + self.ensure_one() + + displayed_types = self._complete_name_displayed_types + type_description = dict(self._fields['type']._description_selection(self.env)) + + name = self.name or '' + if self.company_name or self.parent_id: + if not name and self.type in displayed_types: + name = type_description[self.type] + if not self.is_company: + name = f"{self.commercial_company_name or self.sudo().parent_id.name}, {name}" + return name.strip() + @api.depends('is_company', 'name', 'parent_id.name', 'type', 'company_name', 'commercial_company_name') def _compute_complete_name(self): - displayed_types = self._complete_name_displayed_types - # determine the labels of partner types to be included - # as 'displayed_types' (without user lang to avoid context dependency) - type_description = dict(self._fields['type']._description_selection(self.with_context({}).env)) - for partner in self: - name = partner.name or '' - if partner.company_name or partner.parent_id: - if not name and partner.type in displayed_types: - name = type_description[partner.type] - if not partner.is_company: - name = f"{partner.commercial_company_name or partner.sudo().parent_id.name}, {name}" - - partner.complete_name = name.strip() + partner.complete_name = partner.with_context({})._get_complete_name() @api.depends('lang') def _compute_active_lang_count(self): @@ -841,10 +843,10 @@ class Partner(models.Model): } @api.depends('complete_name', 'email', 'vat', 'state_id', 'country_id', 'commercial_company_name') - @api.depends_context('show_address', 'partner_show_db_id', 'address_inline', 'show_email', 'show_vat') + @api.depends_context('show_address', 'partner_show_db_id', 'address_inline', 'show_email', 'show_vat', 'lang') def _compute_display_name(self): for partner in self: - name = partner.complete_name + name = partner.with_context({'lang': self.env.lang})._get_complete_name() if partner._context.get('show_address'): name = name + "\n" + partner._display_address(without_company=True) name = re.sub(r'\s+\n', '\n', name) diff --git a/odoo/addons/base/tests/test_res_partner.py b/odoo/addons/base/tests/test_res_partner.py index dcf6c15170e..f61565900ce 100644 --- a/odoo/addons/base/tests/test_res_partner.py +++ b/odoo/addons/base/tests/test_res_partner.py @@ -394,6 +394,26 @@ class TestPartner(TransactionCaseWithUserDemo): self.assertEqual([g['title_count'] for g in groups_data], [2, 4], 'Incorrect number of results') self.assertEqual([g['color'] for g in groups_data], [-1, 10], 'Incorrect aggregation of int column') + def test_display_name_translation(self): + self.env['res.lang']._activate_lang('fr_FR') + self.env.ref('base.module_base')._update_translations(['fr_FR']) + + res_partner = self.env['res.partner'] + + parent_contact = res_partner.create({ + 'name': 'Parent', + 'type': 'contact', + }) + + child_contact = res_partner.create({ + 'type': 'other', + 'parent_id': parent_contact.id, + }) + + self.assertEqual(child_contact.with_context(lang='en_US').display_name, 'Parent, Other Address') + + self.assertEqual(child_contact.with_context(lang='fr_FR').display_name, 'Parent, Autre adresse') + @tagged('res_partner') class TestPartnerAddressCompany(TransactionCase):