From 76b4ec45e69f1a0572856f4a75e69ede41808b9f Mon Sep 17 00:00:00 2001 From: Humberto Arocha Date: Fri, 26 Jul 2013 04:36:44 +0000 Subject: [PATCH 1/3] [IMP] Consolidating Accounts now are able to be summarize with AFR --- account_financial_report/report/parser.py | 36 +++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/account_financial_report/report/parser.py b/account_financial_report/report/parser.py index cd534ea0..1a55b739 100644 --- a/account_financial_report/report/parser.py +++ b/account_financial_report/report/parser.py @@ -440,8 +440,23 @@ class account_balance(report_sxw.rml_parse): ('view', 'consolidation'))])) account_not_black_ids = account_obj.search(self.cr, self.uid, ([('id', 'in', [ - i[0] for i in all_account_ids]), ('type', 'in', ('view', 'consolidation'))])) + i[0] for i in all_account_ids]),('type', '=', 'view')])) + acc_cons_ids = account_obj.search(self.cr, self.uid, ([('id', 'in', [ + i[0] for i in all_account_ids]), ('type', 'in', ('consolidation',))])) + + account_consol_ids = account_obj._get_children_and_consol( + self.cr, self.uid, acc_cons_ids) + + account_black_ids += account_obj.search(self.cr, self.uid, ( + [('id', 'in', account_consol_ids ), + ('type', 'not in', + ('view', 'consolidation'))])) + + c_account_not_black_ids = account_obj.search(self.cr, self.uid, ([ + ('id', 'in', account_consol_ids), + ('type', '=', 'view')])) + # This could be done quickly with a sql sentence account_not_black = account_obj.browse( self.cr, self.uid, account_not_black_ids) @@ -449,6 +464,21 @@ class account_balance(report_sxw.rml_parse): account_not_black.reverse() account_not_black_ids = [i.id for i in account_not_black] + c_account_not_black = account_obj.browse( + self.cr, self.uid, c_account_not_black_ids) + c_account_not_black.sort(key=lambda x: x.level) + c_account_not_black.reverse() + c_account_not_black_ids = [i.id for i in c_account_not_black] + + acc_cons_brw = account_obj.browse( + self.cr, self.uid, acc_cons_ids) + acc_cons_brw.sort(key=lambda x: x.level) + acc_cons_brw.reverse() + acc_cons_ids = [i.id for i in acc_cons_brw] + + account_not_black_ids = c_account_not_black_ids + acc_cons_ids + account_not_black_ids + account_not_black = c_account_not_black + acc_cons_brw + account_not_black + all_account_period = {} # All accounts per period # Iteration limit depending on the number of columns @@ -514,7 +544,9 @@ class account_balance(report_sxw.rml_parse): ) #It makes a copy because they modify for acc_id in account_not_black_ids: - acc_childs = dict_not_black.get(acc_id).get('obj').child_id + acc_childs = dict_not_black.get(acc_id).get('obj').type=='view' \ + and dict_not_black.get(acc_id).get('obj').child_id \ + or dict_not_black.get(acc_id).get('obj').child_consol_ids for child_id in acc_childs: dict_not_black.get(acc_id)['debit'] += all_account.get( child_id.id).get('debit') From 28b673783f4a702d6dfb161585096c2691bed1c5 Mon Sep 17 00:00:00 2001 From: Humberto Arocha Date: Fri, 26 Jul 2013 04:51:07 +0000 Subject: [PATCH 2/3] [FIX] Avoid duplicating accounts when there are Consolidating Accounts --- account_financial_report/report/parser.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/account_financial_report/report/parser.py b/account_financial_report/report/parser.py index 1a55b739..c1196eeb 100644 --- a/account_financial_report/report/parser.py +++ b/account_financial_report/report/parser.py @@ -453,10 +453,13 @@ class account_balance(report_sxw.rml_parse): ('type', 'not in', ('view', 'consolidation'))])) + account_black_ids = list(set(account_black_ids)) + c_account_not_black_ids = account_obj.search(self.cr, self.uid, ([ ('id', 'in', account_consol_ids), ('type', '=', 'view')])) - + account_not_black_ids = list(set(account_not_black_ids) - set(c_account_not_black_ids)) + # This could be done quickly with a sql sentence account_not_black = account_obj.browse( self.cr, self.uid, account_not_black_ids) From 7c5cf4b0180222776c496049f05639e85297e55f Mon Sep 17 00:00:00 2001 From: Humberto Arocha Date: Fri, 26 Jul 2013 05:43:25 +0000 Subject: [PATCH 3/3] [IMP] Now Consolidating Accounts are gotten rid when their children accounts are requested from the main window. This way, when a Trail Balance is requested it can be summarized and the sum can be checked to verify that it is correct. --- account_financial_report/report/parser.py | 32 +++++++++++++++-------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/account_financial_report/report/parser.py b/account_financial_report/report/parser.py index c1196eeb..9963074a 100644 --- a/account_financial_report/report/parser.py +++ b/account_financial_report/report/parser.py @@ -445,8 +445,8 @@ class account_balance(report_sxw.rml_parse): acc_cons_ids = account_obj.search(self.cr, self.uid, ([('id', 'in', [ i[0] for i in all_account_ids]), ('type', 'in', ('consolidation',))])) - account_consol_ids = account_obj._get_children_and_consol( - self.cr, self.uid, acc_cons_ids) + account_consol_ids = acc_cons_ids and account_obj._get_children_and_consol( + self.cr, self.uid, acc_cons_ids) or [] account_black_ids += account_obj.search(self.cr, self.uid, ( [('id', 'in', account_consol_ids ), @@ -458,7 +458,10 @@ class account_balance(report_sxw.rml_parse): c_account_not_black_ids = account_obj.search(self.cr, self.uid, ([ ('id', 'in', account_consol_ids), ('type', '=', 'view')])) - account_not_black_ids = list(set(account_not_black_ids) - set(c_account_not_black_ids)) + delete_cons = False + if c_account_not_black_ids: + delete_cons = set(account_not_black_ids) & set(c_account_not_black_ids) and True or False + account_not_black_ids = list(set(account_not_black_ids) - set(c_account_not_black_ids)) # This could be done quickly with a sql sentence account_not_black = account_obj.browse( @@ -473,14 +476,18 @@ class account_balance(report_sxw.rml_parse): c_account_not_black.reverse() c_account_not_black_ids = [i.id for i in c_account_not_black] - acc_cons_brw = account_obj.browse( - self.cr, self.uid, acc_cons_ids) - acc_cons_brw.sort(key=lambda x: x.level) - acc_cons_brw.reverse() - acc_cons_ids = [i.id for i in acc_cons_brw] + if delete_cons: + account_not_black_ids = c_account_not_black_ids + account_not_black_ids + account_not_black = c_account_not_black + account_not_black + else: + acc_cons_brw = account_obj.browse( + self.cr, self.uid, acc_cons_ids) + acc_cons_brw.sort(key=lambda x: x.level) + acc_cons_brw.reverse() + acc_cons_ids = [i.id for i in acc_cons_brw] - account_not_black_ids = c_account_not_black_ids + acc_cons_ids + account_not_black_ids - account_not_black = c_account_not_black + acc_cons_brw + account_not_black + account_not_black_ids = c_account_not_black_ids + acc_cons_ids + account_not_black_ids + account_not_black = c_account_not_black + acc_cons_brw + account_not_black all_account_period = {} # All accounts per period @@ -551,6 +558,8 @@ class account_balance(report_sxw.rml_parse): and dict_not_black.get(acc_id).get('obj').child_id \ or dict_not_black.get(acc_id).get('obj').child_consol_ids for child_id in acc_childs: + if child_id.type == 'consolidation' and delete_cons: + continue dict_not_black.get(acc_id)['debit'] += all_account.get( child_id.id).get('debit') dict_not_black.get(acc_id)['credit'] += all_account.get( @@ -577,7 +586,8 @@ class account_balance(report_sxw.rml_parse): for aa_id in account_ids: id = aa_id[0] - + if aa_id[3].type == 'consolidation' and delete_cons: + continue # # Check if we need to include this level #