From d780183548c62d3bd5c89825b0e11b109b32a7e7 Mon Sep 17 00:00:00 2001 From: Thomas Beckers <tbs@odoo.com> Date: Thu, 17 Nov 2022 09:45:56 +0000 Subject: [PATCH] [FIX] account: reduce performance impact when checking CABA moves Commit 7fbb337 introduced performance slowdown when reconciling a bank statement line with multiple invoices. This is due to the compute function being called a lot of times and each time need to trigger a search for CABA moves (even if the company do not use cash basis). This commit aims to not trigger the search if the company do not use cash basis and add some domain conditions on indexed fields to speed up the search when it's a cash basis company. opw-3013391 closes odoo/odoo#106402 X-original-commit: 9d6db3af4cdc60042dea70eb2a8e87ea9f58881b Signed-off-by: John Laterre (jol) <jol@odoo.com> Co-authored-by: Arnaud-Sibille <arsi@odoo.com> --- addons/account/models/account_move.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 634db1980ddf..d983e84df821 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -1517,7 +1517,15 @@ class AccountMove(models.Model): if new_pmt_state == 'paid' and move.move_type in ('in_invoice', 'out_invoice', 'entry'): reverse_type = move.move_type == 'in_invoice' and 'in_refund' or move.move_type == 'out_invoice' and 'out_refund' or 'entry' reverse_moves = self.env['account.move'].search([('reversed_entry_id', '=', move.id), ('state', '=', 'posted'), ('move_type', '=', reverse_type)]) - caba_moves = self.env['account.move'].search([('tax_cash_basis_origin_move_id', 'in', move.ids + reverse_moves.ids), ('state', '=', 'posted')]) + if self.env.company.tax_exigibility: + domain = [ + ('tax_cash_basis_origin_move_id', 'in', move.ids + reverse_moves.ids), + ('state', '=', 'posted'), + ('move_type', '=', 'entry') + ] + caba_moves = self.env['account.move'].search(domain) + else: + caba_moves = self.env['account.move'] # We only set 'reversed' state in cas of 1 to 1 full reconciliation with a reverse entry; otherwise, we use the regular 'paid' state # We ignore potentials cash basis moves reconciled because the transition account of the tax is reconcilable -- GitLab