diff --git a/addons/spreadsheet_account/models/account.py b/addons/spreadsheet_account/models/account.py index cbabac7779a..e5e88de87c3 100644 --- a/addons/spreadsheet_account/models/account.py +++ b/addons/spreadsheet_account/models/account.py @@ -58,16 +58,17 @@ class AccountMove(models.Model): ("date", ">=", start), ("date", "<=", end), ] + # It is more optimized to (like) search for code directly in account.account than in account_move_line code_domain = expression.OR( [ - expression.AND([ - [("account_id.code", "=like", f"{code}%")], - expression.OR([balance_domain, pnl_domain]), - ]) - for code in codes + ("code", "=like", f"{code}%"), ] + for code in codes ) - domain = expression.AND([code_domain, [("company_id", "=", company_id)]]) + account_ids = self.env["account.account"].search(code_domain).ids + code_domain = [("account_id", "in", account_ids)] + period_domain = expression.OR([balance_domain, pnl_domain]) + domain = expression.AND([code_domain, period_domain, [("company_id", "=", company_id)]]) if formula_params["include_unposted"]: domain = expression.AND( [domain, [("move_id.state", "!=", "cancel")]] diff --git a/addons/spreadsheet_account/tests/test_debit_credit.py b/addons/spreadsheet_account/tests/test_debit_credit.py index fa8bdeece20..b2a2f59e35f 100644 --- a/addons/spreadsheet_account/tests/test_debit_credit.py +++ b/addons/spreadsheet_account/tests/test_debit_credit.py @@ -919,7 +919,7 @@ class SpreadsheetAccountingFunctionsTest(AccountTestInvoicingCommon): "&", "&", "&", - ("account_id.code", "=like", "sp1234566%"), + ("account_id", "in", [self.account_revenue_c1.id]), "|", "&", ("account_id.include_initial_balance", "=", True),