mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
@@ -10,17 +10,20 @@ class AccountMove(models.Model):
|
||||
|
||||
@api.onchange("purchase_vendor_bill_id", "purchase_id")
|
||||
def _onchange_purchase_auto_complete(self):
|
||||
new_mode = (
|
||||
self.purchase_vendor_bill_id.purchase_order_id.payment_mode_id.id
|
||||
or self.purchase_id.payment_mode_id.id
|
||||
)
|
||||
new_bank = (
|
||||
self.purchase_vendor_bill_id.purchase_order_id.supplier_partner_bank_id.id
|
||||
or self.purchase_id.supplier_partner_bank_id.id
|
||||
)
|
||||
old_mode = self.payment_mode_id.id
|
||||
old_bank = self.partner_bank_id.id
|
||||
purchase_id = self.purchase_vendor_bill_id.purchase_order_id or self.purchase_id
|
||||
if purchase_id:
|
||||
new_invoice_vals = purchase_id.with_company(
|
||||
purchase_id.company_id
|
||||
)._prepare_invoice()
|
||||
new_mode = new_invoice_vals.get("payment_mode_id", False)
|
||||
new_bank = new_invoice_vals.get("partner_bank_id", False)
|
||||
else:
|
||||
new_mode = new_bank = False
|
||||
|
||||
res = super()._onchange_purchase_auto_complete() or {}
|
||||
if self.payment_mode_id and new_mode and self.payment_mode_id.id != new_mode:
|
||||
if old_mode and new_mode and old_mode != new_mode:
|
||||
res["warning"] = {
|
||||
"title": _("Warning"),
|
||||
"message": _("Selected purchase order have different payment mode."),
|
||||
@@ -28,12 +31,11 @@ class AccountMove(models.Model):
|
||||
return res
|
||||
elif self.payment_mode_id.id != new_mode:
|
||||
self.payment_mode_id = new_mode
|
||||
if self.partner_bank_id and new_bank and self.partner_bank_id.id != new_bank:
|
||||
if old_bank and new_bank and old_bank != new_bank:
|
||||
res["warning"] = {
|
||||
"title": _("Warning"),
|
||||
"message": _("Selected purchase order have different supplier bank."),
|
||||
}
|
||||
return res
|
||||
elif self.partner_bank_id.id != new_bank:
|
||||
self.partner_bank_id = new_bank
|
||||
return res
|
||||
|
||||
@@ -10,7 +10,7 @@ class PurchaseOrder(models.Model):
|
||||
|
||||
supplier_partner_bank_id = fields.Many2one(
|
||||
comodel_name="res.partner.bank",
|
||||
compute="_compute_payment_mode",
|
||||
compute="_compute_supplier_partner_bank",
|
||||
readonly=False,
|
||||
store=True,
|
||||
precompute=True,
|
||||
@@ -46,18 +46,27 @@ class PurchaseOrder(models.Model):
|
||||
def _compute_payment_mode(self):
|
||||
for order in self:
|
||||
if order.partner_id:
|
||||
order = order.with_company(order.company_id)
|
||||
order.payment_mode_id = order.partner_id.supplier_payment_mode_id
|
||||
|
||||
@api.depends("partner_id", "company_id", "payment_mode_id")
|
||||
def _compute_supplier_partner_bank(self):
|
||||
for order in self:
|
||||
if (
|
||||
order.payment_mode_id.payment_method_id.bank_account_required
|
||||
and order.partner_id
|
||||
):
|
||||
order = order.with_company(order.company_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:
|
||||
elif not order.payment_mode_id.payment_method_id.bank_account_required:
|
||||
order.supplier_partner_bank_id = False
|
||||
order.payment_mode_id = False
|
||||
|
||||
def _prepare_invoice(self):
|
||||
"""Leave the bank account empty so that account_payment_partner set the
|
||||
correct value with compute."""
|
||||
invoice_vals = super()._prepare_invoice()
|
||||
invoice_vals.pop("partner_bank_id")
|
||||
return invoice_vals
|
||||
res = super()._prepare_invoice()
|
||||
res["payment_mode_id"] = self.payment_mode_id.id
|
||||
res.pop("partner_bank_id", False)
|
||||
if self.payment_mode_id.payment_method_id.bank_account_required:
|
||||
res["partner_bank_id"] = self.supplier_partner_bank_id.id
|
||||
return res
|
||||
|
||||
Reference in New Issue
Block a user