From c6c4dac24762cf5721d58d9147ef29b7de5e610c Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Fri, 20 Oct 2023 11:11:50 +0200 Subject: [PATCH] [IMP] account_financial_report: Don't store analytic_account_ids On account.move.line, don't store here the analytic accounts as it can be bulky (especially the init on big database). --- .../models/account_move_line.py | 31 +------------------ .../report/general_ledger.py | 5 --- 2 files changed, 1 insertion(+), 35 deletions(-) diff --git a/account_financial_report/models/account_move_line.py b/account_financial_report/models/account_move_line.py index 284ab52d711..18559cc7e93 100644 --- a/account_financial_report/models/account_move_line.py +++ b/account_financial_report/models/account_move_line.py @@ -1,40 +1,11 @@ # Copyright 2019 ACSONE SA/NV () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).- -from collections import defaultdict - -from odoo import api, fields, models +from odoo import api, models class AccountMoveLine(models.Model): _inherit = "account.move.line" - analytic_account_ids = fields.Many2many( - "account.analytic.account", compute="_compute_analytic_account_ids", store=True - ) - - @api.depends("analytic_distribution") - def _compute_analytic_account_ids(self): - # Prefetch all involved analytic accounts - with_distribution = self.filtered("analytic_distribution") - batch_by_analytic_account = defaultdict(list) - for record in with_distribution: - for account_id in map(int, record.analytic_distribution): - batch_by_analytic_account[account_id].append(record.id) - existing_account_ids = set( - self.env["account.analytic.account"] - .browse(map(int, batch_by_analytic_account)) - .exists() - .ids - ) - # Store them - self.analytic_account_ids = False - for account_id, record_ids in batch_by_analytic_account.items(): - if account_id not in existing_account_ids: - continue - self.browse(record_ids).analytic_account_ids = [ - fields.Command.link(account_id) - ] - def init(self): """ The join between accounts_partners subquery and account_move_line diff --git a/account_financial_report/report/general_ledger.py b/account_financial_report/report/general_ledger.py index 1dfb200fa6d..4e54a03abf6 100644 --- a/account_financial_report/report/general_ledger.py +++ b/account_financial_report/report/general_ledger.py @@ -274,8 +274,6 @@ def _get_initial_balance_data( base_domain += [("move_id.state", "=", "posted")] else: base_domain += [("move_id.state", "in", ["posted", "draft"])] - if cost_center_ids: - base_domain += [("analytic_account_ids", "in", cost_center_ids)] if extra_domain: base_domain += extra_domain gl_initial_acc = self._get_gl_initial_acc( @@ -377,9 +375,6 @@ def _get_period_domain( domain += [("move_id.state", "=", "posted")] else: domain += [("move_id.state", "in", ["posted", "draft"])] - - if cost_center_ids: - domain += [("analytic_account_ids", "in", cost_center_ids)] return domain def _initialize_data(self, foreign_currency):