diff --git a/addons/account/models/account_journal.py b/addons/account/models/account_journal.py index 0f1ea342223..e45dadc039e 100644 --- a/addons/account/models/account_journal.py +++ b/addons/account/models/account_journal.py @@ -351,7 +351,10 @@ class AccountJournal(models.Model): ) if string and is_encodable_as_ascii(string)) if journal.company_id != self.env.ref('base.main_company'): - alias_name = f"{alias_name}-{journal.company_id.name}" + if is_encodable_as_ascii(journal.company_id.name): + alias_name = f"{alias_name}-{journal.company_id.name}" + else: + alias_name = f"{alias_name}-{journal.company_id.id}" alias_values = { 'alias_defaults': { @@ -368,12 +371,13 @@ class AccountJournal(models.Model): alias_values['alias_model_id'] = self.env['ir.model']._get('account.move').id alias_values['alias_parent_model_id'] = self.env['ir.model']._get('account.journal').id journal.alias_id = self.env['mail.alias'].sudo().create(alias_values) + self.invalidate_cache(['alias_name'], self.ids) @api.depends('name') def _compute_alias_domain(self): self.alias_domain = self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain") - @api.depends('alias_id') + @api.depends('alias_id', 'alias_id.alias_name') def _compute_alias_name(self): for journal in self: journal.alias_name = journal.alias_id.alias_name diff --git a/addons/account/tests/test_account_journal.py b/addons/account/tests/test_account_journal.py index 7a1fea30f61..daff0f410ff 100644 --- a/addons/account/tests/test_account_journal.py +++ b/addons/account/tests/test_account_journal.py @@ -135,3 +135,25 @@ class TestAccountJournal(AccountTestInvoicingCommon): second_method.unlink() self.assertFalse(second_method.exists()) + + def test_account_journal_alias_name(self): + journal = self.company_data['default_journal_purchase'] + self.assertEqual(journal.alias_name, 'vendor-bills-company_1_data') + journal.name = 'ぁ' + journal.alias_name = False + self.assertEqual(journal.alias_name, 'bill-company_1_data') + journal.code = 'ぁ' + journal.alias_name = False + self.assertEqual(journal.alias_name, 'purchase-company_1_data') + + company_2_id = str(self.company_data_2['company'].id) + journal_2 = self.company_data_2['default_journal_sale'] + self.company_data_2['company'].name = 'ぁ' + journal_2.alias_name = False + self.assertEqual(journal_2.alias_name, 'customer-invoices-' + company_2_id) + journal_2.name = 'ぁ' + journal_2.alias_name = False + self.assertEqual(journal_2.alias_name, 'inv-' + company_2_id) + journal_2.code = 'ぁ' + journal_2.alias_name = False + self.assertEqual(journal_2.alias_name, 'sale-' + company_2_id)