mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
[FIX] account_payment_partner: _compute_invoice_partner_bank isn't executed
- When value is set from SO _prepare_invoice method - When partner_id changes TT30875
This commit is contained in:
committed by
Thomas Binsfeld
parent
ffd9e72b33
commit
7660d5924b
@@ -6,7 +6,7 @@
|
||||
|
||||
{
|
||||
"name": "Account Payment Partner",
|
||||
"version": "14.0.1.2.0",
|
||||
"version": "14.0.1.2.1",
|
||||
"category": "Banking addons",
|
||||
"license": "AGPL-3",
|
||||
"summary": "Adds payment mode on partners and invoices",
|
||||
|
||||
@@ -80,6 +80,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_partner_bank``.
|
||||
"""
|
||||
res = super()._onchange_partner_id()
|
||||
self._compute_partner_bank()
|
||||
return res
|
||||
|
||||
@api.depends("partner_id", "payment_mode_id")
|
||||
def _compute_partner_bank(self):
|
||||
for move in self:
|
||||
@@ -131,3 +140,14 @@ class AccountMove(models.Model):
|
||||
)
|
||||
# Return this as empty recordset
|
||||
return self.partner_bank_id
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
"""Force compute partner_bank_id when invoice is created from SO
|
||||
to avoid that odoo _prepare_invoice method value will be set.
|
||||
"""
|
||||
if self.env.context.get("active_model") == "sale.order": # pragma: no cover
|
||||
virtual_move = self.new(vals)
|
||||
virtual_move._compute_partner_bank()
|
||||
vals["partner_bank_id"] = virtual_move.partner_bank_id
|
||||
return super().create(vals)
|
||||
|
||||
@@ -173,7 +173,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(
|
||||
@@ -228,6 +228,16 @@ class TestAccountPaymentPartner(SavepointCase):
|
||||
self.payment_mode_model,
|
||||
)
|
||||
|
||||
def test_partner_id_changes_compute_partner_bank(self):
|
||||
# Test _compute_partner_bank is executed when partner_id changes
|
||||
move_form = Form(
|
||||
self.env["account.move"].with_context(default_move_type="out_invoice")
|
||||
)
|
||||
self.assertFalse(move_form.partner_bank_id)
|
||||
move_form.partner_id = self.customer
|
||||
self.assertEqual(move_form.payment_mode_id, self.customer_payment_mode)
|
||||
self.assertFalse(move_form.partner_bank_id)
|
||||
|
||||
def test_out_invoice_onchange(self):
|
||||
# Test the onchange methods in invoice
|
||||
invoice = self.move_model.new(
|
||||
|
||||
Reference in New Issue
Block a user