2010-06-11 14:44:32 +00:00
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# 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.
#
# 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
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
from osv import fields , osv
from tools . translate import _
import tools
class account_common_report ( osv . osv_memory ) :
_name = " account.common.report "
2010-06-25 11:58:36 +00:00
_description = " Account Common Report "
2010-06-11 14:44:32 +00:00
_columns = {
2010-06-25 11:58:36 +00:00
' chart_account_id ' : fields . many2one ( ' account.account ' , ' Chart of account ' , help = ' Select Charts of Accounts ' , required = True , domain = [ ( ' parent_id ' , ' = ' , False ) ] ) ,
2010-06-11 14:44:32 +00:00
' fiscalyear_id ' : fields . many2one ( ' account.fiscalyear ' , ' Fiscal year ' , help = ' Keep empty for all open fiscal year ' ) ,
2010-06-25 11:58:36 +00:00
' filter ' : fields . selection ( [ ( ' filter_no ' , ' No filters ' ) , ( ' filter_date ' , ' Date ' ) , ( ' filter_period ' , ' Periods ' ) ] , " Filter by: " , required = True ) ,
2010-06-11 15:53:39 +00:00
' period_from ' : fields . many2one ( ' account.period ' , ' Start period ' ) ,
2010-06-11 14:44:32 +00:00
' period_to ' : fields . many2one ( ' account.period ' , ' End period ' ) ,
2010-06-24 13:28:50 +00:00
#not used. Do we really need it? 'period_ids': fields.many2many('account.period', 'ledger_period_rel', 'ledger_id', 'period_id', 'Periods'),
2010-06-11 14:44:32 +00:00
' journal_ids ' : fields . many2many ( ' account.journal ' , ' account_common_journal_rel ' , ' account_id ' , ' journal_id ' , ' Journals ' , required = True ) ,
2010-06-25 11:58:36 +00:00
' date_from ' : fields . date ( " Start Date " ) ,
' date_to ' : fields . date ( " End Date " ) ,
2010-06-11 14:44:32 +00:00
#'display_account': fields.selection([('bal_mouvement','With movements'), ('bal_all','All'), ('bal_solde','With balance is not equal to 0')],"Display accounts"),
#'landscape': fields.boolean("Landscape Mode"),
#'soldeinit': fields.boolean("Include initial balances"),
#'amount_currency': fields.boolean("With Currency"),
#'filter': fields.boolean("Landscape Mode"),
#'state': fields.selection([('bydate','By Date'), ('byperiod','By Period'), ('all','By Date and Period'), ('none','No Filter')],"Date/Period Filter"),
#'company_id': fields.many2one('res.company', 'Company', required=True),
}
2010-06-24 13:28:50 +00:00
# def _get_company(self, cr, uid, context=None):
# user_obj = self.pool.get('res.users')
# company_obj = self.pool.get('res.company')
# if context is None:
# context = {}
# user = user_obj.browse(cr, uid, uid, context=context)
# if user.company_id:
# return user.company_id.id
# else:
# return company_obj.search(cr, uid, [('parent_id', '=', False)])[0]
2010-06-11 14:44:32 +00:00
2010-06-11 15:49:23 +00:00
def _get_account ( self , cr , uid , context = None ) :
tmp = self . pool . get ( ' account.account ' ) . search ( cr , uid , [ ] , limit = 1 )
if not tmp :
return False
return tmp [ 0 ]
2010-06-11 14:44:32 +00:00
def _get_fiscalyear ( self , cr , uid , context = None ) :
2010-06-11 15:49:23 +00:00
now = time . strftime ( ' % Y- % m- %d ' )
tmp = self . pool . get ( ' account.fiscalyear ' ) . search ( cr , uid , [ ( ' date_start ' , ' < ' , now ) , ( ' date_stop ' , ' > ' , now ) ] , limit = 1 )
if not tmp :
return False
return tmp [ 0 ]
def _get_all_journal ( self , cr , uid , context = None ) :
return self . pool . get ( ' account.journal ' ) . search ( cr , uid , [ ] )
2010-06-11 14:44:32 +00:00
_defaults = {
2010-06-11 15:49:23 +00:00
# 'state' : 'none',
2010-06-14 10:59:28 +00:00
' date_from ' : time . strftime ( ' % Y-01-01 ' ) ,
' date_to ' : time . strftime ( ' % Y- % m- %d ' ) ,
2010-06-11 15:49:23 +00:00
# 'company_id' : _get_company,
# 'display_account' : 'bal_all',
# 'sortbydate' : 'sort_date',
' fiscalyear_id ' : _get_fiscalyear ,
# 'landscape': True,
# 'amount_currency' : True,
' journal_ids ' : _get_all_journal ,
' filter ' : ' filter_no ' ,
2010-06-24 10:11:45 +00:00
' chart_account_id ' : _get_account ,
2010-06-11 14:44:32 +00:00
}
2010-06-25 11:58:36 +00:00
def _build_context ( self , cr , uid , ids , data , context = None ) :
if context is None :
context = { }
2010-06-14 10:59:28 +00:00
result = { }
result [ ' fiscalyear ' ] = data [ ' form ' ] [ ' fiscalyear_id ' ] and data [ ' form ' ] [ ' fiscalyear_id ' ] or False
if data [ ' form ' ] [ ' filter ' ] == ' filter_date ' :
result [ ' date_from ' ] = data [ ' form ' ] [ ' date_from ' ]
result [ ' date_to ' ] = data [ ' form ' ] [ ' date_to ' ]
elif data [ ' form ' ] [ ' filter ' ] == ' filter_period ' :
2010-06-25 11:22:16 +00:00
if data [ ' form ' ] [ ' period_from ' ] == False or data [ ' form ' ] [ ' period_to ' ] == False :
raise osv . except_osv ( _ ( ' Error ' ) , _ ( ' Select Start period and End period ' ) )
2010-06-25 11:46:06 +00:00
period_date_start = period_obj . read ( cr , uid , data [ ' form ' ] [ ' period_from ' ] , [ ' date_start ' ] ) [ ' date_start ' ]
period_date_stop = period_obj . read ( cr , uid , data [ ' form ' ] [ ' period_to ' ] , [ ' date_stop ' ] ) [ ' date_stop ' ]
2010-06-14 10:59:28 +00:00
cr . execute ( ' SELECT id FROM account_period WHERE date_start >= %s AND date_stop <= %s ' , ( period_date_start , period_date_stop ) )
result [ ' periods ' ] = lambda x : x [ 0 ] , cr . fetchall ( )
return result
2010-06-25 11:58:36 +00:00
def _print_report ( self , cr , uid , ids , data , query_line , context = None ) :
2010-06-24 10:11:45 +00:00
raise ( _ ( ' Error ' ) , _ ( ' not implemented ' ) )
2010-06-11 14:44:32 +00:00
def check_report ( self , cr , uid , ids , context = None ) :
2010-06-25 11:58:36 +00:00
if context is None :
context = { }
2010-06-24 10:11:45 +00:00
data = { }
2010-06-25 11:58:36 +00:00
data [ ' ids ' ] = context . get ( ' active_ids ' , [ ] )
2010-06-24 10:11:45 +00:00
data [ ' model ' ] = context . get ( ' active_model ' , ' ir.ui.menu ' )
data [ ' form ' ] = self . read ( cr , uid , ids , [ ' date_from ' , ' date_to ' , ' fiscalyear_id ' , ' journal_ids ' , ' period_from ' , ' period_to ' , ' filter ' , ' chart_account_id ' ] ) [ 0 ]
2010-06-14 10:59:28 +00:00
used_context = self . _build_context ( cr , uid , ids , data , context )
2010-06-25 11:58:36 +00:00
if used_context . get ( ' periods ' , False ) :
data [ ' form ' ] [ ' periods ' ] = used_context [ ' periods ' ]
query_line = self . pool . get ( ' account.move.line ' ) . _query_get ( cr , uid , obj = ' l ' , context = used_context )
return self . _print_report ( cr , uid , ids , data , query_line , context = context )
2010-06-11 14:44:32 +00:00
2010-06-25 11:58:36 +00:00
account_common_report ( )
2010-06-11 14:44:32 +00:00
2010-06-25 11:58:36 +00:00
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: