From 7a29391dae97574f3c7e348d0876bc269c995011 Mon Sep 17 00:00:00 2001 From: aheficent Date: Fri, 26 Oct 2018 18:30:29 +0200 Subject: [PATCH 1/2] [IMP]performance account_analytic_parent --- .../models/account_analytic_account.py | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/account_analytic_parent/models/account_analytic_account.py b/account_analytic_parent/models/account_analytic_account.py index e15c436578..ef41241119 100644 --- a/account_analytic_parent/models/account_analytic_account.py +++ b/account_analytic_parent/models/account_analytic_account.py @@ -27,10 +27,25 @@ def _compute_debit_credit_balance(self): of analytic account changes """ super(AccountAnalyticAccount, self)._compute_debit_credit_balance() - for account in self: - account.debit += sum(account.mapped('child_ids.debit')) - account.credit += sum(account.mapped('child_ids.credit')) - account.balance += sum(account.mapped('child_ids.balance')) + analytic_line_obj = self.env['account.analytic.line'] + # compute only analytic line + for account in self.filtered(lambda x: x.child_ids): + domain = [('account_id', 'child_of', account.ids)] + credit_groups = analytic_line_obj.read_group( + domain=domain + [('amount', '>=', 0.0)], + fields=['account_id', 'amount'], + groupby=['account_id'] + ) + data_credit = sum(l['amount'] for l in credit_groups) + debit_groups = analytic_line_obj.read_group( + domain=domain + [('amount', '<', 0.0)], + fields=['account_id', 'amount'], + groupby=['account_id'] + ) + data_debit = sum(l['amount'] for l in debit_groups) + account.debit = data_debit + account.credit = data_credit + account.balance = account.credit - account.debit @api.multi @api.constrains('parent_id') From c0baa42dc345e9c06be662ea1c820f46a3871c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aar=C3=B3n=20Henr=C3=ADquez?= Date: Fri, 16 Nov 2018 10:04:09 +0100 Subject: [PATCH 2/2] !fixup --- account_analytic_parent/models/account_analytic_account.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account_analytic_parent/models/account_analytic_account.py b/account_analytic_parent/models/account_analytic_account.py index ef41241119..6ee23a50b7 100644 --- a/account_analytic_parent/models/account_analytic_account.py +++ b/account_analytic_parent/models/account_analytic_account.py @@ -32,7 +32,7 @@ def _compute_debit_credit_balance(self): for account in self.filtered(lambda x: x.child_ids): domain = [('account_id', 'child_of', account.ids)] credit_groups = analytic_line_obj.read_group( - domain=domain + [('amount', '>=', 0.0)], + domain=domain + [('amount', '>', 0.0)], fields=['account_id', 'amount'], groupby=['account_id'] )