diff --git a/account_payment_purchase/models/purchase_order.py b/account_payment_purchase/models/purchase_order.py
index 88dc46979..8021dda8b 100644
--- a/account_payment_purchase/models/purchase_order.py
+++ b/account_payment_purchase/models/purchase_order.py
@@ -10,16 +10,26 @@ class PurchaseOrder(models.Model):
supplier_partner_bank_id = fields.Many2one(
comodel_name="res.partner.bank",
+ compute="_compute_payment_mode",
+ readonly=False,
+ store=True,
+ precompute=True,
string="Supplier Bank Account",
- domain="[('partner_id', '=', partner_id)]",
+ domain="[('partner_id', '=', partner_id), ('company_id', 'in', [False, company_id])]",
+ check_company=True,
help="Select the bank account of your supplier on which your company "
"should send the payment. This field is copied from the partner "
"and will be copied to the supplier invoice.",
)
payment_mode_id = fields.Many2one(
comodel_name="account.payment.mode",
+ compute="_compute_payment_mode",
+ readonly=False,
+ store=True,
+ precompute=True,
string="Payment Mode",
- domain="[('payment_type', '=', 'outbound')]",
+ domain="[('payment_type', '=', 'outbound'), ('company_id', '=', company_id)]",
+ check_company=True,
)
@api.model
@@ -31,15 +41,14 @@ class PurchaseOrder(models.Model):
or False
)
- @api.onchange("partner_id", "company_id")
- def onchange_partner_id(self):
- ret = super().onchange_partner_id()
- if self.partner_id:
- self.supplier_partner_bank_id = self._get_default_supplier_partner_bank(
- self.partner_id
- )
- self.payment_mode_id = self.partner_id.supplier_payment_mode_id
- else:
- self.supplier_partner_bank_id = False
- self.payment_mode_id = False
- return ret
+ @api.depends("partner_id", "company_id")
+ def _compute_payment_mode(self):
+ for order in self:
+ if order.partner_id:
+ order.supplier_partner_bank_id = (
+ order._get_default_supplier_partner_bank(order.partner_id)
+ )
+ order.payment_mode_id = order.partner_id.supplier_payment_mode_id
+ else:
+ order.supplier_partner_bank_id = False
+ order.payment_mode_id = False
diff --git a/account_payment_purchase/tests/test_account_payment_purchase.py b/account_payment_purchase/tests/test_account_payment_purchase.py
index 1f1501c79..e772c54cd 100644
--- a/account_payment_purchase/tests/test_account_payment_purchase.py
+++ b/account_payment_purchase/tests/test_account_payment_purchase.py
@@ -2,7 +2,7 @@
# Copyright 2017 Tecnativa - Vicent Cubells
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
-from odoo import fields
+from odoo import Command, fields
from odoo.tests import TransactionCase, tagged
@@ -50,7 +50,7 @@ class TestAccountPaymentPurchase(TransactionCase):
"name": "Test buy product",
"uom_id": cls.uom_id,
"uom_po_id": cls.uom_id,
- "seller_ids": [(0, 0, {"partner_id": cls.partner.id})],
+ "seller_ids": [Command.create({"partner_id": cls.partner.id})],
}
)
cls.purchase = cls.env["purchase.order"].create(
@@ -58,9 +58,7 @@ class TestAccountPaymentPurchase(TransactionCase):
"partner_id": cls.partner.id,
"payment_mode_id": cls.payment_mode.id,
"order_line": [
- (
- 0,
- 0,
+ Command.create(
{
"name": "Test line",
"product_qty": 1.0,
@@ -68,7 +66,7 @@ class TestAccountPaymentPurchase(TransactionCase):
"product_uom": cls.uom_id,
"date_planned": fields.Datetime.today(),
"price_unit": 1.0,
- },
+ }
)
],
}
diff --git a/account_payment_purchase/views/purchase_order_view.xml b/account_payment_purchase/views/purchase_order_view.xml
index c2fa9cb1f..72844016b 100644
--- a/account_payment_purchase/views/purchase_order_view.xml
+++ b/account_payment_purchase/views/purchase_order_view.xml
@@ -9,11 +9,7 @@
-
+