[IMP] account: financial report display with hierarchy feature + balance on financial...
authorQuentin (OpenERP) <qdp-launchpad@openerp.com>
Fri, 9 Dec 2011 16:16:28 +0000 (17:16 +0100)
committerQuentin (OpenERP) <qdp-launchpad@openerp.com>
Fri, 9 Dec 2011 16:16:28 +0000 (17:16 +0100)
bzr revid: qdp-launchpad@openerp.com-20111209161628-0jmmpb274c8j1109

addons/account/account.py
addons/account/report/account_financial_report.py

index 081f8fe..38c489f 100644 (file)
@@ -2954,6 +2954,7 @@ class account_financial_report(osv.osv):
         return res
 
     def _get_balance(self, cr, uid, ids, name, args, context=None):
+        account_obj = self.pool.get('account.account')
         res = {}
         res_all = {}
         for report in self.browse(cr, uid, ids, context=context):
@@ -2964,6 +2965,12 @@ class account_financial_report(osv.osv):
                 # it's the sum of balance of the linked accounts
                 for a in report.account_ids:
                     balance += a.balance
+            elif report.type == 'account_type':
+                # it's the sum of balance of the leaf accounts with such an account type
+                report_types = [x.id for x in report.account_type_ids]
+                account_ids = account_obj.search(cr, uid, [('user_type','in', report_types), ('type','!=','view')], context=context)
+                for a in account_obj.browse(cr, uid, account_ids, context=context):
+                    balance += a.balance
             elif report.type == 'account_report' and report.account_report_id:
                 # it's the amount of the linked report
                 res2 = self._get_balance(cr, uid, [report.account_report_id.id], 'balance', False, context=context)
index ab8f3f7..837b3de 100644 (file)
@@ -65,32 +65,28 @@ class report_account_common(report_sxw.rml_parse, common_report_header):
             lines.append(vals)
             account_ids = []
             if report.type == 'accounts' and report.account_ids:
-                if report.display_detail == 'only_detail':
-                    account_ids = account_obj._get_children_and_consol(self.cr, self.uid, [x.id for x in report.account_ids])
-                elif report.display_detail == 'detail_with_hierarchy':
-                    account_ids = [x.id for x in report.account_ids]
+                account_ids = account_obj._get_children_and_consol(self.cr, self.uid, [x.id for x in report.account_ids])
             elif report.type == 'account_type' and report.account_type_ids:
                 account_ids = account_obj.search(self.cr, self.uid, [('user_type','in', [x.id for x in report.account_type_ids])])
             account_ids.sort()
             if account_ids:
                 for account in account_obj.browse(self.cr, self.uid, account_ids, context=data['form']['used_context']):
-                    if report.display_detail == 'detail_with_hierarchy' or account.type != 'view':
-                        flag = False
-                        vals = {
-                            'name': account.code + ' ' + account.name,
-                            'balance':  account.balance != 0 and account.balance * report.sign or account.balance,
-                            'type': 'account',
-                            'level': 6,
-                            'account_type': account.type,
-                        }
-                        if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance']):
+                    flag = False
+                    vals = {
+                        'name': account.code + ' ' + account.name,
+                        'balance':  account.balance != 0 and account.balance * report.sign or account.balance,
+                        'type': 'account',
+                        'level': report.display_detail == 'detail_with_hierarchy' and min(account.level,6) or 6,
+                        'account_type': account.type,
+                    }
+                    if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance']):
+                        flag = True
+                    if data['form']['enable_filter']:
+                        vals['balance_cmp'] = account_obj.browse(self.cr, self.uid, account.id, context=data['form']['comparison_context']).balance
+                        if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance_cmp']):
                             flag = True
-                        if data['form']['enable_filter']:
-                            vals['balance_cmp'] = account_obj.browse(self.cr, self.uid, account.id, context=data['form']['comparison_context']).balance
-                            if not currency_obj.is_zero(self.cr, self.uid, account.company_id.currency_id, vals['balance_cmp']):
-                                flag = True
-                        if flag:
-                            lines.append(vals)
+                    if flag:
+                        lines.append(vals)
         return lines
 
 report_sxw.report_sxw('report.account.financial.report', 'account.financial.report',