From 86893badc68d79b862f4b2ede866c2d897cba2dd Mon Sep 17 00:00:00 2001 From: Carlos Dauden Date: Wed, 7 Jul 2021 14:52:32 +0200 Subject: [PATCH] [FIX] account_payment_partner: _compute_invoice_partner_bank isn't executed when partner_id changes TT30875 --- account_payment_partner/models/account_move.py | 9 +++++++++ .../tests/test_account_payment_partner.py | 12 +++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/account_payment_partner/models/account_move.py b/account_payment_partner/models/account_move.py index b1cd238a6..4f365dc2a 100644 --- a/account_payment_partner/models/account_move.py +++ b/account_payment_partner/models/account_move.py @@ -79,6 +79,15 @@ class AccountMove(models.Model): partner.supplier_payment_mode_id.refund_payment_mode_id ) + @api.onchange("partner_id") + def _onchange_partner_id(self): + """Force compute because the onchange chain doesn't call + ``_compute_invoice_partner_bank``. + """ + res = super()._onchange_partner_id() + self._compute_invoice_partner_bank() + return res + @api.depends("partner_id", "payment_mode_id") def _compute_invoice_partner_bank(self): for move in self: diff --git a/account_payment_partner/tests/test_account_payment_partner.py b/account_payment_partner/tests/test_account_payment_partner.py index 0ec725ec3..70d9d3ac0 100644 --- a/account_payment_partner/tests/test_account_payment_partner.py +++ b/account_payment_partner/tests/test_account_payment_partner.py @@ -172,7 +172,7 @@ class TestAccountPaymentPartner(SavepointCase): cls.journal_bank = cls.env["res.partner.bank"].create( { "acc_number": "GB95LOYD87430237296288", - "partner_id": cls.env.user.company_id.id, + "partner_id": cls.env.user.company_id.partner_id.id, } ) cls.journal = cls.env["account.journal"].create( @@ -229,6 +229,16 @@ class TestAccountPaymentPartner(SavepointCase): self.payment_mode_model, ) + def test_partner_id_changes_compute_invoice_partner_bank(self): + # Test _compute_invoice_partner_bank is executed when partner_id changes + move_form = Form( + self.env["account.move"].with_context(default_type="out_invoice") + ) + self.assertFalse(move_form.invoice_partner_bank_id) + move_form.partner_id = self.customer + self.assertEquals(move_form.payment_mode_id, self.customer_payment_mode) + self.assertFalse(move_form.invoice_partner_bank_id) + def test_out_invoice_onchange(self): # Test the onchange methods in invoice invoice = self.move_model.new(