2009-10-13 05:58:37 +00:00
# -*- coding: utf-8 -*-
2006-12-07 13:41:40 +00:00
##############################################################################
2010-04-07 13:20:19 +00:00
#
2009-10-14 11:15:34 +00:00
# OpenERP, Open Source Management Solution
2010-01-12 09:18:39 +00:00
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
2008-11-03 19:18:56 +00:00
#
# This program is free software: you can redistribute it and/or modify
2009-10-14 11:15:34 +00:00
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
2008-11-03 19:18:56 +00:00
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2009-10-14 11:15:34 +00:00
# GNU Affero General Public License for more details.
2008-11-03 19:18:56 +00:00
#
2009-10-14 11:15:34 +00:00
# You should have received a copy of the GNU Affero General Public License
2010-04-07 13:20:19 +00:00
# along with this program. If not, see <http://www.gnu.org/licenses/>.
2006-12-07 13:41:40 +00:00
#
##############################################################################
import time
from report import report_sxw
2010-06-29 13:48:46 +00:00
import pooler
2006-12-07 13:41:40 +00:00
#
# Use period and Journal for selection or resources
#
class journal_print ( report_sxw . rml_parse ) :
2008-07-22 15:11:28 +00:00
def __init__ ( self , cr , uid , name , context ) :
2009-10-09 11:49:00 +00:00
super ( journal_print , self ) . __init__ ( cr , uid , name , context = context )
2008-07-22 15:11:28 +00:00
self . localcontext . update ( {
' time ' : time ,
' lines ' : self . lines ,
' sum_debit ' : self . _sum_debit ,
2010-06-29 13:48:46 +00:00
' sum_credit ' : self . _sum_credit ,
' get_start_date ' : self . get_start_date ,
' get_end_date ' : self . get_end_date
2008-07-22 15:11:28 +00:00
} )
2008-10-22 13:00:47 +00:00
2008-07-22 15:11:28 +00:00
def lines ( self , period_id , journal_id , * args ) :
2008-10-22 13:00:47 +00:00
if type ( period_id ) == type ( [ ] ) :
ids_final = [ ]
for journal in journal_id :
for period in period_id :
2010-06-16 11:51:39 +00:00
ids_journal_period = self . pool . get ( ' account.journal.period ' ) . search ( self . cr , self . uid , [ ( ' journal_id ' , ' = ' , journal ) , ( ' period_id ' , ' = ' , period ) ] )
2008-10-22 13:00:47 +00:00
if ids_journal_period :
2008-12-10 14:29:55 +00:00
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 ) )
2008-10-22 13:00:47 +00:00
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 ) }
2010-06-25 12:39:06 +00:00
if res :
res [ 0 ] . update ( a )
ids_final . append ( res )
2008-10-22 13:00:47 +00:00
return ids_final
2008-12-10 14:29:55 +00:00
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 ) )
2008-10-22 13:00:47 +00:00
res = self . cr . dictfetchall ( )
return res
2008-07-22 15:11:28 +00:00
def _sum_debit ( self , period_id , journal_id ) :
2008-12-10 14:29:55 +00:00
self . cr . execute ( ' select sum(debit) from account_move_line where period_id= %s and journal_id= %s and state<> \' draft \' ' , ( period_id , journal_id ) )
2008-07-22 15:11:28 +00:00
return self . cr . fetchone ( ) [ 0 ] or 0.0
2008-10-22 13:00:47 +00:00
2008-07-22 15:11:28 +00:00
def _sum_credit ( self , period_id , journal_id ) :
2008-12-10 14:29:55 +00:00
self . cr . execute ( ' select sum(credit) from account_move_line where period_id= %s and journal_id= %s and state<> \' draft \' ' , ( period_id , journal_id ) )
2008-07-22 15:11:28 +00:00
return self . cr . fetchone ( ) [ 0 ] or 0.0
2010-06-29 13:48:46 +00:00
def get_start_date ( self , form ) :
return pooler . get_pool ( self . cr . dbname ) . get ( ' account.period ' ) . browse ( self . cr , self . uid , form [ ' period_from ' ] ) . name
def get_end_date ( self , form ) :
return pooler . get_pool ( self . cr . dbname ) . get ( ' account.period ' ) . browse ( self . cr , self . uid , form [ ' period_to ' ] ) . name
2010-04-07 13:20:19 +00:00
report_sxw . report_sxw ( ' report.account.central.journal ' , ' account.journal.period ' , ' addons/account/report/central_journal.rml ' , parser = journal_print , header = False )
report_sxw . report_sxw ( ' report.account.central.journal.wiz ' , ' account.journal.period ' , ' addons/account/report/wizard_central_journal.rml ' , parser = journal_print , header = False )
2008-07-23 14:41:47 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: