[FIX] Print journal report => Now it can run from menu as well as account.journal.period object also

bzr revid: mra@mra-laptop-20100709041743-kygbfrkpnksfbuoq
This commit is contained in:
Mustufa Rangwala 2010-07-09 09:47:43 +05:30
parent 762204306f
commit af7c1f1bbe
2 changed files with 45 additions and 30 deletions

View File

@ -20,23 +20,32 @@
##############################################################################
import time
import pooler
from report import report_sxw
#
# Use period and Journal for selection or resources
#
class journal_print(report_sxw.rml_parse):
def set_context(self, objects, data, ids, report_type = None):
def set_context(self, objects, data, ids, report_type=None):
new_ids = ids
self.query_get_clause = ''
self.sort_selection = 'date'
if (data['model'] == 'ir.ui.menu'):
new_ids = 'active_ids' in data['form'] and data['form']['active_ids'] or []
objects = self.pool.get('account.journal.period').browse(self.cr, self.uid, new_ids)
self.query_get_clause = data['form']['query_line'] or ''
super(journal_print, self).set_context(objects, data, new_ids, report_type)
self.query_get_clause = 'AND '
self.query_get_clause += data['form']['query_line'] or ''
self.sort_selection = data['form']['sort_selection']
objects = self.pool.get('account.journal.period').browse(self.cr, self.uid, new_ids)
self.cr.execute('SELECT period_id, journal_id FROM account_journal_period WHERE id IN %s', (tuple(new_ids),))
res = self.cr.fetchall()
self.period_ids, self.journal_ids = zip(*res)
return super(journal_print, self).set_context(objects, data, ids, report_type)
def __init__(self, cr, uid, name, context={}):
def __init__(self, cr, uid, name, context=None):
if context is None:
context = {}
super(journal_print, self).__init__(cr, uid, name, context=context)
self.localcontext.update( {
'time': time,
@ -48,32 +57,38 @@ class journal_print(report_sxw.rml_parse):
'get_account': self.get_account
})
def lines(self, period_id, journal_id, sort_selection='date', *args):
def lines(self, period_id, journal_id=[]):
obj_jperiod = self.pool.get('account.journal.period')
obj_mline = self.pool.get('account.move.line')
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal_id,period_id,'draft'))
self.cr.execute('update account_journal_period set state=%s where journal_id IN %s and period_id=%s and state=%s', ('printed', self.journal_ids, period_id, 'draft'))
self.cr.commit()
self.cr.execute('SELECT id FROM account_move_line l WHERE '+self.query_get_clause+' AND period_id=%s AND journal_id=%s ORDER BY %s', (period_id, journal_id, sort_selection))
self.cr.execute('SELECT id FROM account_move_line l WHERE period_id=%s AND journal_id IN %s ' + self.query_get_clause + ' ORDER BY '+ self.sort_selection + '' ,(period_id, self.journal_ids ))
ids = map(lambda x: x[0], self.cr.fetchall())
return obj_mline.browse(self.cr, self.uid, ids)
def _sum_debit(self, period_id, journal_id):
self.cr.execute('SELECT SUM(debit) FROM account_move_line l WHERE '+self.query_get_clause+' AND period_id=%s AND journal_id=%s', (period_id, journal_id))
def _sum_debit(self, period_id, journal_id=[]):
self.cr.execute('SELECT SUM(debit) FROM account_move_line l WHERE period_id=%s AND journal_id IN %s '+ self.query_get_clause +'', (period_id, self.journal_ids))
return self.cr.fetchone()[0] or 0.0
def _sum_credit(self, period_id, journal_id):
self.cr.execute('SELECT SUM(credit) FROM account_move_line l WHERE '+self.query_get_clause+' AND period_id=%s AND journal_id=%s', (period_id, journal_id))
def _sum_credit(self, period_id, journal_id=[]):
self.cr.execute('SELECT SUM(credit) FROM account_move_line l WHERE period_id=%s AND journal_id IN %s '+ self.query_get_clause +'', (period_id, self.journal_ids))
return self.cr.fetchone()[0] or 0.0
def get_start_period(self, form):
return pooler.get_pool(self.cr.dbname).get('account.period').browse(self.cr,self.uid,form['period_from']).name
if 'period_from' in form and form['period_from']:
return pooler.get_pool(self.cr.dbname).get('account.period').browse(self.cr,self.uid,form['period_from']).name
return ''
def get_end_period(self, form):
return pooler.get_pool(self.cr.dbname).get('account.period').browse(self.cr,self.uid,form['period_to']).name
if 'period_to' in form and form['period_to']:
return pooler.get_pool(self.cr.dbname).get('account.period').browse(self.cr,self.uid,form['period_to']).name
return ''
def get_account(self, form):
return pooler.get_pool(self.cr.dbname).get('account.account').browse(self.cr,self.uid,form['chart_account_id']).name
if 'chart_account_id' in form and form['chart_account_id']:
return pooler.get_pool(self.cr.dbname).get('account.account').browse(self.cr,self.uid,form['chart_account_id']).name
return ''
report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header=False)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -200,8 +200,8 @@
</blockTable>
<para style="P9">
<font color="white"> </font>
</para>
</para>
<para style="P9">
<font color="white"> </font>
</para>
@ -219,14 +219,14 @@
</blockTable>
<blockTable colWidths="67.0,67.0,67.0,67.0,68.0,68.0,68.0,68.0" style="Table_Subheader_Content_detail">
<tr>
<td><para style="terp_default_Centre_8">[[ data['form']['date_from'] ]]</para></td>
<td><para style="terp_default_Centre_8">[[ data['form']['date_to'] ]]</para></td>
<td><para style="terp_default_Centre_8">[[ data['form']['sort_selection'] ]]</para></td>
<td><para style="terp_default_Centre_8">[[ get_account(data['form']) ]]</para></td>
<td><para style="terp_default_Centre_8">[[ get_start_period(data['form']) or removeParentNode('para') ]]</para></td>
<td><para style="terp_default_Centre_8">[[ get_end_period(data['form']) or removeParentNode('para') ]]</para></td>
<td><para style="terp_default_Centre_8">[[ data['form']['filter'] ]]</para></td>
<td><para style="terp_default_Centre_8">[[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'),date_time = True) ]] </para></td>
<td><para style="terp_default_Centre_8">[[ data and 'form' in data and data['form']['date_from'] or '' ]]</para></td>
<td><para style="terp_default_Centre_8">[[ data and 'form' in data and data['form']['date_to'] or '']]</para></td>
<td><para style="terp_default_Centre_8">[[ data and 'form' in data and data['form']['sort_selection'] or 'date' ]]</para></td>
<td><para style="terp_default_Centre_8">[[ get_account(data) ]]</para></td>
<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>
<td><para style="terp_default_Centre_8">[[ data and 'form' in data and data['form']['filter'] or 'No Filter' ]]</para></td>
<td><para style="terp_default_Centre_8">[[ formatLang(time.strftime('%Y-%m-%d %H:%M:%S'), date_time = True) ]] </para></td>
</tr>
</blockTable>
<para style="P9">