[FIX] account : General Journal and Central Journal Reports Corrected & Optimized
authorAnup (OpenERP) <ach@tinyerp.com>
Thu, 19 Aug 2010 13:56:52 +0000 (19:26 +0530)
committerAnup (OpenERP) <ach@tinyerp.com>
Thu, 19 Aug 2010 13:56:52 +0000 (19:26 +0530)
lp bug: https://launchpad.net/bugs/620429 fixed

bzr revid: ach@tinyerp.com-20100819135652-ff9in90qr4kxsqqo

addons/account/report/central_journal.py
addons/account/report/general_journal.py
addons/account/wizard/wizard_central_journal.py
addons/account/wizard/wizard_general_journal.py

index 762282a..b9b7bfc 100644 (file)
@@ -39,15 +39,20 @@ class journal_print(report_sxw.rml_parse):
     def lines(self, period_id, journal_id, *args):
         if type(period_id)==type([]):
             ids_final = []
+            journal_obj = self.pool.get('account.journal')
+            period_obj = self.pool.get('account.period')
+            journal_period_obj = self.pool.get('account.journal.period')
             for journal in journal_id:
+                a = {'journal':journal_obj.browse(self.cr, self.uid, journal)}
                 for period in period_id:
-                    ids_journal_period = self.pool.get('account.journal.period').search(self.cr,self.uid, [('journal_id','=',journal),('period_id','=',period)])
+                    ids_journal_period = journal_period_obj.search(self.cr,self.uid, [('journal_id','=',journal),('period_id','=',period)])
                     if ids_journal_period:
                         self.cr.execute('select a.code, a.name, sum(debit) as debit, sum(credit) as credit from account_move_line l left join account_account a on (l.account_id=a.id) where l.period_id=%s and l.journal_id=%s and l.state<>\'draft\' group by a.id, a.code, a.name, l.journal_id, l.period_id', (period, journal))
                         res = self.cr.dictfetchall()
-                        a = {'journal':self.pool.get('account.journal').browse(self.cr, self.uid, journal),'period':self.pool.get('account.period').browse(self.cr, self.uid, period)}
-                        res[0].update(a)
-                        ids_final.append(res)
+                        if res:
+                            a.update({'period':period_obj.browse(self.cr, self.uid, period)})
+                            res[0].update(a)
+                            ids_final.append(res)
             return ids_final
         self.cr.execute('select a.code, a.name, sum(debit) as debit, sum(credit) as credit from account_move_line l left join account_account a on (l.account_id=a.id) where l.period_id=%s and l.journal_id=%s and l.state<>\'draft\' group by a.id, a.code, a.name', (period_id, journal_id))
         res = self.cr.dictfetchall()
index 4313432..6485cbe 100644 (file)
@@ -69,19 +69,21 @@ class journal_print(report_sxw.rml_parse):
     def lines(self, period_id, journal_id=[]):
         if type(period_id)==type([]):
             ids_final = []
+            journal_peroid_obj = self.pool.get('account.journal.period')
+            period_obj = self.pool.get('account.period')
             for journal in journal_id:
                     for period in period_id:
-                        ids_journal_period = self.pool.get('account.journal.period').search(self.cr,self.uid, [('journal_id','=',journal),('period_id','=',period)])
+                        ids_journal_period = journal_peroid_obj.search(self.cr,self.uid, [('journal_id','=',journal),('period_id','=',period)])
                         if ids_journal_period:
                             ids_final.append(ids_journal_period[0])
-            data_jour_period = self.pool.get('account.journal.period').browse(self.cr, self.uid, ids_final)
+            data_jour_period = journal_peroid_obj.browse(self.cr, self.uid, ids_final)
             lines_data = []
             periods = []
             for data in data_jour_period:
                 if not data.period_id.id in periods:
                     periods.append(data.period_id.id)
             for period in periods:
-                period_data = self.pool.get('account.period').browse(self.cr, self.uid, period)
+                period_data = period_obj.browse(self.cr, self.uid, period)
                 self.cr.execute(
                     'SELECT j.code, j.name, '
                     'SUM(l.debit) AS debit, SUM(l.credit) AS credit '
@@ -91,9 +93,9 @@ class journal_print(report_sxw.rml_parse):
                     'AND l.state<>\'draft\' '
                     'GROUP BY j.id, j.code, j.name', (period, tuple(journal_id)))
                 res = self.cr.dictfetchall()
-                res[0].update({'period_name':period_data.name})
-                res[0].update({'pid':period})
-                lines_data.append(res)
+                if res:
+                    res[0].update({'period_name':period_data.name,'pid':period})
+                    lines_data.append(res) 
             return lines_data
         if not self.journal_ids:
             return []
index 09e6bd5..9d500fd 100644 (file)
@@ -40,16 +40,16 @@ def _check_data(self, cr, uid, data, *args):
     period_id = data['form']['period_id'][0][2]
     journal_id=data['form']['journal_id'][0][2]
 
-    if type(period_id)==type([]):
-        
+    if type(period_id)==type([]):  
         ids_final = []
-
+        journal_period_obj = pooler.get_pool(cr.dbname).get('account.journal.period')
+        acct_move_line_obj = pooler.get_pool(cr.dbname).get('account.move.line')
         for journal in journal_id:
             for period in period_id:
-                ids_journal_period = pooler.get_pool(cr.dbname).get('account.journal.period').search(cr,uid, [('journal_id','=',journal),('period_id','=',period)])
+                ids_journal_period = journal_period_obj.search(cr,uid, [('journal_id','=',journal),('period_id','=',period)])
 
-                if ids_journal_period:
-                    ids_final.append(ids_journal_period)
+                if ids_journal_period and acct_move_line_obj.search(cr,uid, [('journal_id','=',journal),('period_id','=',period),('state','!=','draft')]):
+                    ids_final += ids_journal_period
 
             if not ids_final:
                 raise wizard.except_wizard(_('No Data Available'), _('No records found for your selection!'))
index c13352d..3f4ad23 100644 (file)
@@ -40,15 +40,15 @@ def _check_data(self, cr, uid, data, *args):
     journal_id=data['form']['journal_id'][0][2]
 
     if type(period_id)==type([]):
-        
         ids_final = []
-
+        acct_journal_period_obj = pooler.get_pool(cr.dbname).get('account.journal.period')
+        acct_move_line_obj = pooler.get_pool(cr.dbname).get('account.move.line')
         for journal in journal_id:
             for period in period_id:
-                ids_journal_period = pooler.get_pool(cr.dbname).get('account.journal.period').search(cr,uid, [('journal_id','=',journal),('period_id','=',period)])
+                ids_journal_period = acct_journal_period_obj.search(cr,uid, [('journal_id','=',journal),('period_id','=',period)])
 
-                if ids_journal_period:
-                    ids_final.append(ids_journal_period)
+                if ids_journal_period and acct_move_line_obj.search(cr,uid, [('journal_id','=',journal),('period_id','=',period),('state','!=','draft')]):
+                    ids_final += ids_journal_period
 
             if not ids_final:
                 raise wizard.except_wizard(_('No Data Available'), _('No records found for your selection!'))