From 407ebba230c71a53d3e4a2b572c8f0d1fe6f0232 Mon Sep 17 00:00:00 2001 From: Suherdy Yacob Date: Thu, 22 Jan 2026 16:11:29 +0700 Subject: [PATCH] fix error with company_id in odoo19 --- models/account_payment.py | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/models/account_payment.py b/models/account_payment.py index 1127ad6..bf7d2c0 100644 --- a/models/account_payment.py +++ b/models/account_payment.py @@ -5,6 +5,20 @@ from odoo.exceptions import UserError class AccountPayment(models.Model): _inherit = 'account.payment' + def _get_outstanding_account(self, payment_type): + """Get the outstanding account for the given payment type""" + account_ref = 'account_journal_payment_debit_account_id' if payment_type == 'inbound' else 'account_journal_payment_credit_account_id' + chart_template = self.with_context(allowed_company_ids=self.company_id.root_id.ids).env['account.chart.template'] + outstanding_account = ( + chart_template.ref(account_ref, raise_if_not_found=False) + or self.company_id.transfer_account_id + ) + if not outstanding_account: + # If no outstanding account found, try to use payment method account + if self.payment_method_line_id.payment_account_id: + outstanding_account = self.payment_method_line_id.payment_account_id + return outstanding_account + @api.depends('payment_type', 'partner_type') def _compute_available_journal_ids(self): """ @@ -199,21 +213,7 @@ class AccountPayment(models.Model): pay.outstanding_account_id = pay.journal_id.default_account_id else: # Fallback to the original logic if no default account is set - if pay.payment_type == 'inbound': - pay.outstanding_account_id = (pay.payment_method_line_id.payment_account_id - or pay.journal_id.company_id.account_journal_payment_debit_account_id) - elif pay.payment_type == 'outbound': - pay.outstanding_account_id = (pay.payment_method_line_id.payment_account_id - or pay.journal_id.company_id.account_journal_payment_credit_account_id) - else: - pay.outstanding_account_id = False + pay.outstanding_account_id = pay._get_outstanding_account(pay.payment_type) else: # For bank/cash journals, use the original logic - if pay.payment_type == 'inbound': - pay.outstanding_account_id = (pay.payment_method_line_id.payment_account_id - or pay.journal_id.company_id.account_journal_payment_debit_account_id) - elif pay.payment_type == 'outbound': - pay.outstanding_account_id = (pay.payment_method_line_id.payment_account_id - or pay.journal_id.company_id.account_journal_payment_credit_account_id) - else: - pay.outstanding_account_id = False \ No newline at end of file + pay.outstanding_account_id = pay._get_outstanding_account(pay.payment_type) \ No newline at end of file