[IMP] account_reconciliation_widget: Performance opening reconciliation widget

There was an unneeded mapped of the initial statements that fetches a lot of
data from statement lines that are not going to be used later, so let's
remove it and optimize a bit the initial opening time.

In a customer database, we have improved the opening time from 120 seconds
to 15.

TT48753
This commit is contained in:
Pedro M. Baeza
2024-04-16 09:45:46 +02:00
parent 96a10532d3
commit 963fa23483

View File

@@ -308,12 +308,6 @@ class AccountReconciliation(models.AbstractModel):
""" """
if not bank_statement_line_ids: if not bank_statement_line_ids:
return {} return {}
bank_statements = (
self.env["account.bank.statement.line"]
.browse(bank_statement_line_ids)
.mapped("statement_id")
)
query = """ query = """
SELECT line.id SELECT line.id
FROM account_bank_statement_line line FROM account_bank_statement_line line
@@ -340,18 +334,17 @@ class AccountReconciliation(models.AbstractModel):
[line["st_line"]["id"] for line in results["lines"]] [line["st_line"]["id"] for line in results["lines"]]
) )
bank_statements_left = bank_statement_lines_left.mapped("statement_id") bank_statements_left = bank_statement_lines_left.mapped("statement_id")
data = bank_statements_left.read(["name", "journal_id"])
data = data and data[0] or {}
results.update( results.update(
{ {
"statement_id": len(bank_statements_left) == 1 "statement_id": len(bank_statements_left) == 1
and bank_statements_left.id and bank_statements_left[0].id
or False, or False,
"statement_name": len(bank_statements_left) == 1 "statement_name": len(bank_statements_left) == 1
and bank_statements_left.name and data.get("name")
or False,
"journal_id": bank_statements
and bank_statements[0].journal_id.id
or False, or False,
"journal_id": data and data.get("journal_id", [False])[0] or False,
"notifications": [], "notifications": [],
} }
) )