Skip to content

Commit

Permalink
Merge PR #1105 into 16.0
Browse files Browse the repository at this point in the history
Signed-off-by pedrobaeza
  • Loading branch information
OCA-git-bot committed Feb 1, 2024
2 parents 5d8b5c0 + f4e7e2a commit 5c08aa4
Showing 1 changed file with 22 additions and 18 deletions.
40 changes: 22 additions & 18 deletions account_financial_report/models/account_move_line.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# Copyright 2019 ACSONE SA/NV (<http://acsone.eu>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).-
from collections import defaultdict

from odoo import api, fields, models


Expand All @@ -12,24 +14,26 @@ class AccountMoveLine(models.Model):

@api.depends("analytic_distribution")
def _compute_analytic_account_ids(self):
for record in self:
if not record.analytic_distribution:
record.analytic_account_ids = False
else:
record.update(
{
"analytic_account_ids": [
(
6,
0,
self.env["account.analytic.account"]
.browse([int(k) for k in record.analytic_distribution])
.exists()
.ids,
)
]
}
)
# 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):
"""
Expand Down

0 comments on commit 5c08aa4

Please sign in to comment.