diff --git a/addons/account/project/report/analytic_balance.py b/addons/account/project/report/analytic_balance.py index 341424984df..461f271990f 100644 --- a/addons/account/project/report/analytic_balance.py +++ b/addons/account/project/report/analytic_balance.py @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- ############################################################################## # -# OpenERP, Open Source Management Solution +# OpenERP, Open Source Management Solution # Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved # $Id$ # @@ -28,6 +28,7 @@ from report import report_sxw class account_analytic_balance(report_sxw.rml_parse): def __init__(self, cr, uid, name, context): super(account_analytic_balance, self).__init__(cr, uid, name, context) + self.done_l = [] self.localcontext.update( { 'time': time, 'lines_g': self._lines_g, @@ -40,34 +41,41 @@ class account_analytic_balance(report_sxw.rml_parse): 'move_sum_balance': self._move_sum_balance, 'move_sum_quantity': self._move_sum_quantity, }) - + def _lines_g(self, account_id, date1, date2): + res = [] account_analytic_obj = self.pool.get('account.analytic.account') ids = account_analytic_obj.search(self.cr, self.uid, [('parent_id', 'child_of', [account_id])]) - self.cr.execute("SELECT aa.name AS name, aa.code AS code, \ - sum(aal.amount) AS balance, sum(aal.unit_amount) AS quantity \ - FROM account_analytic_line AS aal, account_account AS aa \ - WHERE (aal.general_account_id=aa.id) \ - AND (aal.account_id in (" + ','.join(map(str, ids)) + "))\ - AND (date>=%s) AND (date<=%s) AND aa.active \ - GROUP BY aal.general_account_id, aa.name, aa.code, aal.code \ - ORDER BY aal.code", (date1, date2)) - res = self.cr.dictfetchall() - - for r in res: - if r['balance'] > 0: - r['debit'] = r['balance'] - r['credit'] = 0.0 - elif r['balance'] < 0: - r['debit'] = 0.0 - r['credit'] = -r['balance'] + temp_l = ids + for id in ids: + if id not in self.done_l: + self.done_l.append(id) else: - r['balance'] == 0 - r['debit'] = 0.0 - r['credit'] = 0.0 + temp_l.remove(id) + if temp_l: + self.cr.execute("SELECT aa.name AS name, aa.code AS code, \ + sum(aal.amount) AS balance, sum(aal.unit_amount) AS quantity \ + FROM account_analytic_line AS aal, account_account AS aa \ + WHERE (aal.general_account_id=aa.id) \ + AND (aal.account_id in (" + ','.join(map(str, temp_l)) + "))\ + AND (date>=%s) AND (date<=%s) AND aa.active \ + GROUP BY aal.general_account_id, aa.name, aa.code, aal.code \ + ORDER BY aal.code", (date1, date2)) + res = self.cr.dictfetchall() + for r in res: + if r['balance'] > 0: + r['debit'] = r['balance'] + r['credit'] = 0.0 + elif r['balance'] < 0: + r['debit'] = 0.0 + r['credit'] = -r['balance'] + else: + r['balance'] == 0 + r['debit'] = 0.0 + r['credit'] = 0.0 return res - + def _move_sum_debit(self, account_id, date1, date2): account_analytic_obj = self.pool.get('account.analytic.account') @@ -90,12 +98,12 @@ class account_analytic_balance(report_sxw.rml_parse): AND date>=%s AND date<=%s AND amount<0", (date1, date2)) return self.cr.fetchone()[0] or 0.0 - + def _move_sum_balance(self, account_id, date1, date2): - debit = self._move_sum_debit(account_id, date1, date2) + debit = self._move_sum_debit(account_id, date1, date2) credit = self._move_sum_credit(account_id, date1, date2) return (debit-credit) - + def _move_sum_quantity(self, account_id, date1, date2): account_analytic_obj = self.pool.get('account.analytic.account') ids = account_analytic_obj.search(self.cr, self.uid, @@ -107,7 +115,7 @@ class account_analytic_balance(report_sxw.rml_parse): (date1, date2)) return self.cr.fetchone()[0] or 0.0 - + def _sum_debit(self, accounts, date1, date2): ids = map(lambda x: x.id, accounts) if not len(ids): @@ -121,7 +129,7 @@ class account_analytic_balance(report_sxw.rml_parse): AND date>=%s AND date<=%s AND amount>0", (date1, date2)) return self.cr.fetchone()[0] or 0.0 - + def _sum_credit(self, accounts, date1, date2): ids = map(lambda x: x.id, accounts) if not len(ids): diff --git a/addons/account/project/report/analytic_journal.rml b/addons/account/project/report/analytic_journal.rml index 6cb381531c9..bd4129fd067 100644 --- a/addons/account/project/report/analytic_journal.rml +++ b/addons/account/project/report/analytic_journal.rml @@ -119,7 +119,7 @@ - Analitic Journal - [[ company.currency_id.name ]] + Analytic Journal - [[ company.currency_id.name ]] @@ -203,10 +203,10 @@ - [[ move.name ]] + [[ move.name ]] KI - [[ move.account_id.code ]] - [[ move.account_id.name ]] + [[ move.account_id.code ]] [[ move.account_id.name ]] [[ formatLang(move.debit-move.credit) ]] @@ -226,13 +226,13 @@ - [[ move_a or removeParentNode('blockTable') ]] [[ formatLang(move_a.date,date = True) ]] + [[ (not move_a) and removeParentNode('blockTable') ]] [[ formatLang(move_a.date,date = True) ]] [[ move_a.code ]] - [[ move_a.name ]] + [[ move_a.name ]] asgfas [[ move_a.account_id.code ]] - [[ move_a.account_id.name ]] @@ -266,7 +266,7 @@ - [[ move_a or removeParentNode('blockTable') ]] [[ formatLang(move_a.date,date = True) ]] + [[ (not move_a) and removeParentNode('blockTable') ]] [[ formatLang(move_a.date,date = True) ]] [[ move_a.code ]] diff --git a/addons/account/project/report/inverted_analytic_balance.rml b/addons/account/project/report/inverted_analytic_balance.rml index 18511393253..5761fc122c6 100644 --- a/addons/account/project/report/inverted_analytic_balance.rml +++ b/addons/account/project/report/inverted_analytic_balance.rml @@ -157,7 +157,7 @@ - [[ move_g or removeParentNode('blockTable') ]] [[ move_g['code'] ]] + [[ (not move_g) and removeParentNode('blockTable') ]] [[ move_g['code'] ]] [[ move_g['name'] ]] @@ -184,7 +184,7 @@ - [[ move_a or removeParentNode('blockTable') ]] [[ move_a['code'] ]] + [[ (not move_a) and removeParentNode('blockTable') ]] [[ move_a['code'] ]] [[ move_a['complete_name'] ]]