[IMP] account: cumulative balance for journal report
authorpsi (Open ERP) <psi@tinyerp.co.in>
Mon, 22 Nov 2010 11:10:50 +0000 (16:40 +0530)
committerpsi (Open ERP) <psi@tinyerp.co.in>
Mon, 22 Nov 2010 11:10:50 +0000 (16:40 +0530)
bzr revid: psi@tinyerp.co.in-20101122111050-jjwk79g6m5lq7g0p

addons/account/report/account_journal.py
addons/account/report/account_journal.rml

index 82af01c..336a32b 100644 (file)
@@ -117,10 +117,22 @@ class journal_print(report_sxw.rml_parse, common_report_header):
         move_state = ['draft','posted']
         if self.target_move == 'posted':
             move_state = ['posted']
-
-        self.cr.execute('SELECT l.id FROM account_move_line l, account_move am WHERE l.move_id=am.id AND am.state IN %s AND l.period_id=%s AND l.journal_id IN %s ' + self.query_get_clause + ' ORDER BY l.'+ self.sort_selection + '',(tuple(move_state), period_id, tuple(journal_id) ))
-        ids = map(lambda x: x[0], self.cr.fetchall())
-        return obj_mline.browse(self.cr, self.uid, ids)
+        self.cr.execute("SELECT l.id, l.date, l.ref, l.name, l.debit, l.credit, m.name as move_name, acc.code as account_code, rp.name as partner_name "\
+                        "FROM account_move_line l "\
+                        "LEFT JOIN account_move m ON (m.id=l.move_id) "\
+                        "LEFT JOIN account_account acc ON (l.account_id = acc.id) "\
+                        "LEFT JOIN res_partner rp ON (l.partner_id=rp.id) "\
+                        "WHERE m.state IN %s "\
+                        "AND l.period_id = %s "\
+                        "AND l.journal_id IN %s " + self.query_get_clause + " "\
+                        "ORDER BY l."+ self.sort_selection + " ",
+                        (tuple(move_state), period_id, tuple(journal_id) ))
+        res = self.cr.dictfetchall()
+        account_sum = 0.0
+        for l in res:
+            account_sum += l['debit'] - l['credit']
+            l['progress'] = account_sum
+        return res
 
     def _set_get_account_currency_code(self, account_id):
         self.cr.execute("SELECT c.symbol AS code "\
index cb37b4e..0a20da7 100644 (file)
     <paraStyle name="terp_default_1" fontName="Helvetica" fontSize="2.0" leading="3" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_Right_9_Bold" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="RIGHT" spaceBefore="0.0" spaceAfter="0.0"/>
     <paraStyle name="terp_default_8_Italic" fontName="Helvetica-Oblique" fontSize="8.0" leading="10" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-       <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
-       <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
-       <paraStyle name="terp_tblheader_Details_left" fontName="Helvetica-Bold" fontSize="8.0" leading="8" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
+    <paraStyle name="terp_default_Bold_9" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="8.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
+    <paraStyle name="terp_tblheader_Details_left" fontName="Helvetica-Bold" fontSize="8.0" leading="8" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
   </stylesheet>
   <images/>
   <story>
     </para>
       <blockTable colWidths="85.0,80.0,80.0,120.0,70.0,100.0" style="Table2">
       <tr>
-       <td><para style="terp_tblheader_General_Centre">  [[ data['model']=='account.journal.period'and 'Company' or removeParentNode('para') ]]</para>
-       <para style="terp_tblheader_General_Centre">[[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]</para></td>
+        <td><para style="terp_tblheader_General_Centre">  [[ data['model']=='account.journal.period'and 'Company' or removeParentNode('para') ]]</para>
+        <para style="terp_tblheader_General_Centre">[[ data['model']=='ir.ui.menu' and 'Chart of Account' or removeParentNode('para') ]]</para></td>
         <td><para style="terp_tblheader_General_Centre">Fiscal Year</para></td>
-               <td><para style="terp_tblheader_General_Centre">Journal</para></td>
+        <td><para style="terp_tblheader_General_Centre">Journal</para></td>
         <td><para style="terp_tblheader_General_Centre">Filters By </para></td>
-         <td><para style="terp_tblheader_General_Centre">Entries Sorted By</para></td>
+        <td><para style="terp_tblheader_General_Centre">Entries Sorted By</para></td>
         <td><para style="terp_tblheader_General_Centre">Target Moves</para></td>
       </tr>
-       <tr>
-          <td><para style="terp_default_Centre_8">[[ get_account(data) or ''  ]]</para></td>
+  <tr>
+       <td><para style="terp_default_Centre_8">[[ get_account(data) or ''  ]]</para></td>
        <td><para style="terp_default_Centre_8">[[ get_fiscalyear(data) or '' ]]</para></td>
-               <td><para style="terp_default_Centre_8">[[o.journal_id.name  ]]</para></td>
-        <td><para style="terp_default_Centre_8">[[ get_filter(data)=='No Filter' and get_filter(data) or removeParentNode('para') ]] </para>
-               <blockTable colWidths="60.0,60.0" style="Table3">[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
-                               <tr>
-                      <td><para style="terp_tblheader_Details_Centre">Start Date</para></td>
-                               <td><para style="terp_tblheader_Details_Centre">End Date</para></td>
-                       </tr>
-                       <tr>
-                               <td><para style="terp_default_Centre_8">[[ formatLang(get_start_date(data),date=True) ]]</para></td>
-                               <td><para style="terp_default_Centre_8">[[ formatLang(get_end_date(data),date=True) ]]</para></td>
-                       </tr>
-               </blockTable>
-               <blockTable colWidths="60.0,60.0" style="Table3">[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
-                               <tr>
-                               <td><para style="terp_tblheader_Details_Centre">Start Period</para></td>
-                               <td><para style="terp_tblheader_Details_Centre">End Period</para></td>
-                       </tr>
-                       <tr>
-                               <td><para style="terp_default_Centre_8">[[ get_start_period(data) or removeParentNode('para') ]]</para></td>
-                               <td><para style="terp_default_Centre_8">[[ get_end_period(data) or removeParentNode('para') ]]</para></td>
-                       </tr>
-                </blockTable>
-               </td>
-        <td><para style="terp_default_Centre_8">[[ get_sortby(data) ]]</para></td>
-       <td><para style="terp_default_Centre_8">[[ get_target_move(data) ]] </para></td>
-       </tr>
-       </blockTable>
+       <td><para style="terp_default_Centre_8">[[o.journal_id.name  ]]</para></td>
+       <td><para style="terp_default_Centre_8">[[ get_filter(data)=='No Filter' and get_filter(data) or removeParentNode('para') ]] </para>
+           <blockTable colWidths="60.0,60.0" style="Table3">[[ get_filter(data)=='Date' or removeParentNode('blockTable') ]]
+                <tr>
+                    <td><para style="terp_tblheader_Details_Centre">Start Date</para></td>
+                    <td><para style="terp_tblheader_Details_Centre">End Date</para></td>
+                </tr>
+                <tr>
+                    <td><para style="terp_default_Centre_8">[[ formatLang(get_start_date(data),date=True) ]]</para></td>
+                    <td><para style="terp_default_Centre_8">[[ formatLang(get_end_date(data),date=True) ]]</para></td>
+                </tr>
+           </blockTable>
+           <blockTable colWidths="60.0,60.0" style="Table3">[[ get_filter(data)=='Periods' or removeParentNode('blockTable') ]]
+                <tr>
+                  <td><para style="terp_tblheader_Details_Centre">Start Period</para></td>
+                  <td><para style="terp_tblheader_Details_Centre">End Period</para></td>
+                </tr>
+                <tr>
+                  <td><para style="terp_default_Centre_8">[[ get_start_period(data) or removeParentNode('para') ]]</para></td>
+                  <td><para style="terp_default_Centre_8">[[ get_end_period(data) or removeParentNode('para') ]]</para></td>
+                </tr>
+           </blockTable>
+       </td>
+       <td><para style="terp_default_Centre_8">[[ get_sortby(data) ]]</para></td>
+       <td><para style="terp_default_Centre_8">[[ get_target_move(data) ]] </para></td>
+  </tr>
+  </blockTable>
     <para style="P9">
       <font color="white"> </font>
     </para>
       </tr>
       <para style="Standard"><font color="white">[[lines(o.period_id.id, o.journal_id.id) or removeParentNode('story') ]]</font></para>
       <tr>
-        <td><para style="terp_default_8">[[ repeatIn(lines(o.period_id.id, o.journal_id.id), 'line') ]]</para><para style="terp_default_8">[[ formatLang(line.date,date=True) ]]</para></td>
-        <td><para style="terp_default_Centre_8">[[ line.ref ]]</para></td>
-        <td><para style="terp_default_Centre_8">[[ line.account_id.code ]]</para></td>
-        <td><para style="terp_default_8">[[ line.partner_id and line.partner_id.name ]]</para></td>
-        <td><para style="terp_default_8">[[ line.move_id.name ]] - [[ line.name ]]</para></td>
-        <td><para style="P8">[[ formatLang(line.debit) ]]</para></td>
-        <td><para style="P8">[[ formatLang(line.credit) ]]</para></td>
-        <td><para style="P8">[[ formatLang(line.credit - line.debit) ]] [[ company.currency_id.symbol ]]</para></td>
+        <td><para style="terp_default_8">[[ repeatIn(lines(o.period_id.id, o.journal_id.id), 'line') ]]</para><para style="terp_default_8">[[ formatLang(line['date'],date=True) ]]</para></td>
+        <td><para style="terp_default_Centre_8">[[ line['ref'] or '' ]]</para></td>
+        <td><para style="terp_default_Centre_8">[[ line['account_code'] or '' ]]</para></td>
+        <td><para style="terp_default_8">[[ line['partner_name'] or '' ]]</para></td>
+        <td><para style="terp_default_8">[[ line['move_name'] or '' ]] - [[ line['name'] or '' ]]</para></td>
+        <td><para style="P8">[[ formatLang(line['debit']) ]]</para></td>
+        <td><para style="P8">[[ formatLang(line['credit']) ]]</para></td>
+        <td><para style="P8">[[ formatLang(line['progress']) ]] [[ company.currency_id.symbol ]]</para></td>
       </tr>
     </blockTable>
 
         <td><para style="P10a">Move/Entry label</para></td>
         <td><para style="P10b">Debit</para></td>
         <td><para style="P10b">Credit</para></td>
-               <td><para style="P10b">Balance</para></td>
-               <td><para style="P10b">Currency</para></td>
+       <td><para style="P10b">Balance</para></td>
+    <td><para style="P10b">Currency</para></td>
       </tr>
        <tr>
         <td><para style="P11">[[o.period_id.name ]]</para></td>
         <td><para style="P11"><font color="white"></font></para></td>
         <td><para style="P12"><u>[[ formatLang(sum_debit(o.period_id.id, o.journal_id.id)) ]]</u></para></td>
         <td><para style="P12"><u>[[ formatLang(sum_credit(o.period_id.id, o.journal_id.id)) ]]</u></para></td>
-               <td> <para style="P12"><u>[[ formatLang((sum_debit(o.period_id.id, o.journal_id.id) - sum_credit(o.period_id.id, o.journal_id.id))) ]] [[ company.currency_id.symbol ]]</u></para></td>
+    <td> <para style="P12"><u>[[ formatLang((sum_debit(o.period_id.id, o.journal_id.id) - sum_credit(o.period_id.id, o.journal_id.id))) ]] [[ company.currency_id.symbol ]]</u></para></td>
       </tr>
        <para style="Standard"><font color="white">[[lines(o.period_id.id, o.journal_id.id) or removeParentNode('story') ]]</font></para>
       <tr>
-        <td><para style="terp_default_8">[[ repeatIn(lines(o.period_id.id, o.journal_id.id), 'line') ]]</para><para style="terp_default_8">[[ formatLang(line.date,date=True) ]]</para></td>
-        <td><para style="terp_default_Centre_8">[[ line.ref ]]</para></td>
-        <td><para style="terp_default_Centre_8">[[ line.account_id.code ]]</para></td>
-        <td><para style="terp_default_8">[[ line.partner_id and line.partner_id.name ]]</para></td>
-        <td><para style="terp_default_8">[[ line.move_id.name ]] - [[ line.name ]]</para></td>
-        <td><para style="P8">[[ formatLang(line.debit) ]]</para></td>
-        <td><para style="P8">[[ formatLang(line.credit) ]]</para></td>
-        <td><para style="P8">[[ formatLang(line.credit - line.debit) ]] [[ company.currency_id.symbol ]]</para></td>
-               <td><para style="P8">[[ line.currency_id  and formatLang(line.amount_currency) or '' ]] [[ line.currency_id.symbol or '']]</para></td>
+        <td><para style="terp_default_8">[[ repeatIn(lines(o.period_id.id, o.journal_id.id), 'line') ]]</para><para style="terp_default_8">[[ formatLang(line['date'],date=True) ]]</para></td>
+        <td><para style="terp_default_Centre_8">[[ line['ref'] or '' ]]</para></td>
+        <td><para style="terp_default_Centre_8">[[ line['account_code'] or '' ]]</para></td>
+        <td><para style="terp_default_8">[[ line['partner_name'] or '' ]]</para></td>
+        <td><para style="terp_default_8">[[ line['move_name'] or '' ]] - [[ line['name'] or '' ]]</para></td>
+        <td><para style="P8">[[ formatLang(line['debit']) ]]</para></td>
+        <td><para style="P8">[[ formatLang(line['credit']) ]]</para></td>
+        <td><para style="P8">[[ formatLang(line['progress']) ]] [[ company.currency_id.symbol ]]</para></td>
+    <td><para style="P8">[[ line.currency_id  and formatLang(line.amount_currency) or '' ]] [[ line.currency_id.symbol or '']]</para></td>
 
       </tr>
     </blockTable>