diff --git a/addons/account/models/partner.py b/addons/account/models/partner.py index b91ad868005..0de1b7287bf 100644 --- a/addons/account/models/partner.py +++ b/addons/account/models/partner.py @@ -237,7 +237,10 @@ class AccountFiscalPosition(models.Model): delivery = partner # partner manually set fiscal position always win - manual_fiscal_position = delivery.property_account_position_id or partner.property_account_position_id + manual_fiscal_position = ( + delivery.with_company(company).property_account_position_id + or partner.with_company(company).property_account_position_id + ) if manual_fiscal_position: return manual_fiscal_position diff --git a/addons/account/tests/test_account_move_entry.py b/addons/account/tests/test_account_move_entry.py index bb280527c52..ef4bcb17bbf 100644 --- a/addons/account/tests/test_account_move_entry.py +++ b/addons/account/tests/test_account_move_entry.py @@ -134,6 +134,28 @@ class TestAccountMove(AccountTestInvoicingCommon): self.test_move.line_ids[0].account_id = custom_account + def test_fiscal_position_multicompany(self): + """A move is assigned a fiscal position that matches its own company.""" + company1 = self.company_data["company"] + company2 = self.company_data_2["company"] + partner = self.env['res.partner'].create({'name': 'Belouga'}) + fpos1 = self.env["account.fiscal.position"].create( + { + "name": company1.name, + "company_id": company1.id, + } + ) + fpos2 = self.env["account.fiscal.position"].create( + { + "name": company2.name, + "company_id": company2.id, + } + ) + partner.with_company(company1).property_account_position_id = fpos1 + partner.with_company(company2).property_account_position_id = fpos2 + self.test_move.sudo().with_company(company2).partner_id = partner + self.assertEqual(self.test_move.fiscal_position_id, fpos1) + def test_misc_fiscalyear_lock_date_1(self): self.test_move.action_post()