Files
bank-payment/account_payment_order/models/account_payment.py
Luc De Meyer 7c7fbfa999 [FIX]account_payment_order transfer journal
The transfer journal functionality has been broken by commit
65a19492a8

This fix adds transfer journal support to this constraint.
2024-04-15 00:03:26 +02:00

51 lines
1.9 KiB
Python

# Copyright 2019 ACSONE SA/NV
# Copyright 2022 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
class AccountPayment(models.Model):
_inherit = "account.payment"
payment_order_id = fields.Many2one(comodel_name="account.payment.order")
payment_line_ids = fields.Many2many(comodel_name="account.payment.line")
@api.depends("payment_type", "journal_id")
def _compute_payment_method_line_fields(self):
res = super()._compute_payment_method_line_fields()
for pay in self:
if pay.payment_order_id:
pay.available_payment_method_line_ids = (
pay.payment_order_id.journal_id._get_available_payment_method_lines(
pay.payment_type
)
)
else:
pay.available_payment_method_line_ids = (
pay.journal_id._get_available_payment_method_lines(
pay.payment_type
).filtered(lambda x: not x.payment_method_id.payment_order_only)
)
to_exclude = pay._get_payment_method_codes_to_exclude()
if to_exclude:
pay.available_payment_method_line_ids = (
pay.available_payment_method_line_ids.filtered(
lambda x: x.code not in to_exclude
)
)
return res
@api.constrains("payment_method_line_id")
def _check_payment_method_line_id(self):
for pay in self:
transfer_journal = (
pay.payment_order_id.payment_mode_id.transfer_journal_id
or pay.company_id.transfer_journal_id
)
if pay.journal_id == transfer_journal:
continue
else:
super(AccountPayment, pay)._check_payment_method_line_id()
return