@ -3,7 +3,7 @@
# Module Writen to OpenERP, Open Source Management Solution
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
# All Rights Reserved
############### Credits######################################################
# Credits######################################################
# Coded by: Humberto Arocha humberto@openerp.com.ve
# Angelica Barrios angelicaisabelb@gmail.com
# Jordi Esteve <jesteve@zikzakmedia.com>
@ -35,6 +35,8 @@ from report import report_sxw
from tools import config
from tools.translate import _
from osv import osv
class account_balance ( report_sxw . rml_parse ) :
def __init__ ( self , cr , uid , name , context ) :
@ -53,12 +55,11 @@ class account_balance(report_sxw.rml_parse):
' get_fiscalyear_text ' : self . get_fiscalyear_text ,
' get_periods_and_date_text ' : self . get_periods_and_date_text ,
' get_informe_text ' : self . get_informe_text ,
' get_month ' : self . get_month ,
' exchange_name ' : self . exchange_name ,
' get_month ' : self . get_month ,
' exchange_name ' : self . exchange_name ,
} )
self . context = context
def get_fiscalyear_text ( self , form ) :
"""
Returns the fiscal year text used on the report .
@ -66,26 +67,29 @@ class account_balance(report_sxw.rml_parse):
fiscalyear_obj = self . pool . get ( ' account.fiscalyear ' )
fiscalyear = None
if form . get ( ' fiscalyear ' ) :
fiscalyear = fiscalyear_obj . browse ( self . cr , self . uid , form [ ' fiscalyear ' ] )
fiscalyear = fiscalyear_obj . browse (
self . cr , self . uid , form [ ' fiscalyear ' ] )
return fiscalyear . name or fiscalyear . code
else :
fiscalyear = fiscalyear_obj . browse ( self . cr , self . uid , fiscalyear_obj . find ( self . cr , self . uid ) )
fiscalyear = fiscalyear_obj . browse (
self . cr , self . uid , fiscalyear_obj . find ( self . cr , self . uid ) )
return " %s * " % ( fiscalyear . name or fiscalyear . code )
def get_informe_text ( self , form ) :
"""
Returns the header text used on the report .
"""
afr_id = form [ ' afr_id ' ] and type ( form [ ' afr_id ' ] ) in ( list , tuple ) and form [ ' afr_id ' ] [ 0 ] or form [ ' afr_id ' ]
afr_id = form [ ' afr_id ' ] and type ( form [ ' afr_id ' ] ) in (
list , tuple ) and form [ ' afr_id ' ] [ 0 ] or form [ ' afr_id ' ]
if afr_id :
name = self . pool . get ( ' afr ' ) . browse ( self . cr , self . uid , afr_id ) . name
elif form [ ' analytic_ledger ' ] and form [ ' columns ' ] == ' four ' and form [ ' inf_type ' ] == ' BS ' :
elif form [ ' analytic_ledger ' ] and form [ ' columns ' ] == ' four ' and form [ ' inf_type ' ] == ' BS ' :
name = _ ( ' Analytic Ledger ' )
elif form [ ' inf_type ' ] == ' BS ' :
name = _ ( ' Balance Sheet ' )
elif form [ ' inf_type ' ] == ' IS ' :
name = _ ( ' Income Statement ' )
return name
def get_month ( self , form ) :
@ -93,15 +97,16 @@ class account_balance(report_sxw.rml_parse):
return day , year and month
'''
if form [ ' filter ' ] in [ ' bydate ' , ' all ' ] :
months = [ " Enero " , " Febrero " , " Marzo " , " Abril " , " Mayo " , " Junio " , " Julio " , " Agosto " , " Septiembre " , " Octubre " , " Noviembre " , " Diciembre " ]
mes = months [ time . strptime ( form [ ' date_to ' ] , " % Y- % m- %d " ) [ 1 ] - 1 ]
ano = time . strptime ( form [ ' date_to ' ] , " % Y- % m- %d " ) [ 0 ]
dia = time . strptime ( form [ ' date_to ' ] , " % Y- % m- %d " ) [ 2 ]
return _ ( ' From ' ) + self . formatLang ( form [ ' date_from ' ] , date = True ) + _ ( ' to ' ) + self . formatLang ( form [ ' date_to ' ] , date = True )
months = [ " Enero " , " Febrero " , " Marzo " , " Abril " , " Mayo " , " Junio " ,
" Julio " , " Agosto " , " Septiembre " , " Octubre " , " Noviembre " , " Diciembre " ]
mes = months [ time . strptime ( form [ ' date_to ' ] , " % Y- % m- %d " ) [ 1 ] - 1 ]
ano = time . strptime ( form [ ' date_to ' ] , " % Y- % m- %d " ) [ 0 ]
dia = time . strptime ( form [ ' date_to ' ] , " % Y- % m- %d " ) [ 2 ]
return _ ( ' From ' ) + self . formatLang ( form [ ' date_from ' ] , date = True ) + _ ( ' to ' ) + self . formatLang ( form [ ' date_to ' ] , date = True )
elif form [ ' filter ' ] in [ ' byperiod ' , ' all ' ] :
aux = [ ]
aux = [ ]
period_obj = self . pool . get ( ' account.period ' )
for period in period_obj . browse ( self . cr , self . uid , form [ ' periods ' ] ) :
aux . append ( period . date_start )
aux . append ( period . date_stop )
@ -114,17 +119,20 @@ class account_balance(report_sxw.rml_parse):
"""
period_obj = self . pool . get ( ' account.period ' )
periods_str = None
fiscalyear_id = form [ ' fiscalyear ' ] or fiscalyear_obj . find ( self . cr , self . uid )
period_ids = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear_id ) , ( ' special ' , ' = ' , False ) ] )
fiscalyear_id = form [
' fiscalyear ' ] or fiscalyear_obj . find ( self . cr , self . uid )
period_ids = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear_id ) , ( ' special ' , ' = ' , False ) ] )
if form [ ' filter ' ] in [ ' byperiod ' , ' all ' ] :
period_ids = form [ ' periods ' ]
periods_str = ' , ' . join ( [ period . name or period . code for period in period_obj . browse ( self . cr , self . uid , period_ids ) ] )
periods_str = ' , ' . join ( [ period . name or period . code for period in period_obj . browse (
self . cr , self . uid , period_ids ) ] )
dates_str = None
if form [ ' filter ' ] in [ ' bydate ' , ' all ' ] :
dates_str = self . formatLang ( form [ ' date_from ' ] , date = True ) + ' - ' + self . formatLang ( form [ ' date_to ' ] , date = True ) + ' '
return { ' periods ' : periods_str , ' date ' : dates_str }
dates_str = self . formatLang ( form [
' date_from ' ] , date = True ) + ' - ' + self . formatLang ( form [ ' date_to ' ] , date = True ) + ' '
return { ' periods ' : periods_str , ' date ' : dates_str }
def special_period ( self , periods ) :
period_obj = self . pool . get ( ' account.period ' )
@ -133,13 +141,15 @@ class account_balance(report_sxw.rml_parse):
if not period_counter :
return True
return False
def exchange_name ( self , form ) :
self . from_currency_id = self . get_company_currency ( form [ ' company_id ' ] and type ( form [ ' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] )
self . from_currency_id = self . get_company_currency ( form [ ' company_id ' ] and type ( form [
' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] )
if not form [ ' currency_id ' ] :
self . to_currency_id = self . from_currency_id
else :
self . to_currency_id = form [ ' currency_id ' ] and type ( form [ ' currency_id ' ] ) in ( list , tuple ) and form [ ' currency_id ' ] [ 0 ] or form [ ' currency_id ' ]
self . to_currency_id = form [ ' currency_id ' ] and type ( form [ ' currency_id ' ] ) in (
list , tuple ) and form [ ' currency_id ' ] [ 0 ] or form [ ' currency_id ' ]
return self . pool . get ( ' res.currency ' ) . browse ( self . cr , self . uid , self . to_currency_id ) . name
def exchange ( self , from_amount ) :
@ -147,34 +157,34 @@ class account_balance(report_sxw.rml_parse):
return from_amount
curr_obj = self . pool . get ( ' res.currency ' )
return curr_obj . compute ( self . cr , self . uid , self . from_currency_id , self . to_currency_id , from_amount )
def get_company_currency ( self , company_id ) :
rc_obj = self . pool . get ( ' res.company ' )
return rc_obj . browse ( self . cr , self . uid , company_id ) . currency_id . id
def get_company_accounts ( self , company_id , acc = ' credit ' ) :
rc_obj = self . pool . get ( ' res.company ' )
if acc == ' credit ' :
if acc == ' credit ' :
return [ brw . id for brw in rc_obj . browse ( self . cr , self . uid , company_id ) . credit_account_ids ]
else :
return [ brw . id for brw in rc_obj . browse ( self . cr , self . uid , company_id ) . debit_account_ids ]
def _get_analytic_ledger ( self , account , ctx = { } ) :
res = [ ]
if account [ ' type ' ] in ( ' other ' , ' liquidity ' , ' receivable ' , ' payable ' ) :
if account [ ' type ' ] in ( ' other ' , ' liquidity ' , ' receivable ' , ' payable ' ) :
#~ TODO: CUANDO EL PERIODO ESTE VACIO LLENARLO CON LOS PERIODOS DEL EJERCICIO
#~ FISCAL, SIN LOS PERIODOS ESPECIALES
periods = ' , ' . join ( [ str ( i ) for i in ctx [ ' periods ' ] ] )
#~ periods = str(tuple(ctx['periods']))
where = """ where aml.period_id in ( %s ) and aa.id = %s and aml.state <> ' draft ' """ % ( periods , account [ ' id ' ] )
where = """ where aml.period_id in ( %s ) and aa.id = %s and aml.state <> ' draft ' """ % (
periods , account [ ' id ' ] )
sql_detalle = """ select aml.id as id, aj.name as diario, aa.name as descripcion,
( select name from res_partner where aml.partner_id = id ) as partner ,
aa . code as cuenta , aml . name as name ,
aml . ref as ref ,
case when aml . debit is null then 0.00 else aml . debit end as debit ,
case when aml . debit is null then 0.00 else aml . debit end as debit ,
case when aml . credit is null then 0.00 else aml . credit end as credit ,
( select code from account_analytic_account where aml.analytic_account_id = id ) as analitica ,
aml . date as date , ap . name as periodo ,
@ -194,10 +204,10 @@ class account_balance(report_sxw.rml_parse):
res . append ( {
' id ' : det [ ' id ' ] ,
' date ' : det [ ' date ' ] ,
' journal ' : det [ ' diario ' ] ,
' partner ' : det [ ' partner ' ] ,
' name ' : det [ ' name ' ] ,
' entry ' : det [ ' asiento ' ] ,
' journal ' : det [ ' diario ' ] ,
' partner ' : det [ ' partner ' ] ,
' name ' : det [ ' name ' ] ,
' entry ' : det [ ' asiento ' ] ,
' ref ' : det [ ' ref ' ] ,
' debit ' : det [ ' debit ' ] ,
' credit ' : det [ ' credit ' ] ,
@ -216,105 +226,119 @@ class account_balance(report_sxw.rml_parse):
account_obj = self . pool . get ( ' account.account ' )
period_obj = self . pool . get ( ' account.period ' )
fiscalyear_obj = self . pool . get ( ' account.fiscalyear ' )
def _get_children_and_consol ( cr , uid , ids , level , context = { } , change_sign = False ) :
def _get_children_and_consol ( cr , uid , ids , level , context = { } , change_sign = False ) :
aa_obj = self . pool . get ( ' account.account ' )
ids2 = [ ]
ids2 = [ ]
for aa_brw in aa_obj . browse ( cr , uid , ids , context ) :
if aa_brw . child_id and aa_brw . level < level and aa_brw . type != ' consolidation ' :
if aa_brw . child_id and aa_brw . level < level and aa_brw . type != ' consolidation ' :
if not change_sign :
ids2 . append ( [ aa_brw . id , True , False , aa_brw ] )
ids2 + = _get_children_and_consol ( cr , uid , [ x . id for x in aa_brw . child_id ] , level , context , change_sign = change_sign )
ids2 . append ( [ aa_brw . id , True , False , aa_brw ] )
ids2 + = _get_children_and_consol ( cr , uid , [
x . id for x in aa_brw . child_id ] , level , context , change_sign = change_sign )
if change_sign :
ids2 . append ( aa_brw . id )
ids2 . append ( aa_brw . id )
else :
ids2 . append ( [ aa_brw . id , False , True , aa_brw ] )
ids2 . append ( [ aa_brw . id , False , True , aa_brw ] )
else :
if change_sign :
ids2 . append ( aa_brw . id )
ids2 . append ( aa_brw . id )
else :
ids2 . append ( [ aa_brw . id , True , True , aa_brw ] )
ids2 . append ( [ aa_brw . id , True , True , aa_brw ] )
return ids2
#############################################################################
# CONTEXT FOR ENDIND BALANCE #
#############################################################################
#######################################################################
def _ctx_end ( ctx ) :
ctx_end = ctx
ctx_end [ ' filter ' ] = form . get ( ' filter ' , ' all ' )
ctx_end [ ' filter ' ] = form . get ( ' filter ' , ' all ' )
ctx_end [ ' fiscalyear ' ] = fiscalyear . id
#~ ctx_end['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
if ctx_end [ ' filter ' ] not in [ ' bydate ' , ' none ' ] :
if ctx_end [ ' filter ' ] not in [ ' bydate ' , ' none ' ] :
special = self . special_period ( form [ ' periods ' ] )
else :
special = False
if form [ ' filter ' ] in [ ' byperiod ' , ' all ' ] :
if special :
ctx_end [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' id ' , ' in ' , form [ ' periods ' ] or ctx_end . get ( ' periods ' , False ) ) ] )
ctx_end [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' id ' , ' in ' , form [ ' periods ' ] or ctx_end . get ( ' periods ' , False ) ) ] )
else :
ctx_end [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' id ' , ' in ' , form [ ' periods ' ] or ctx_end . get ( ' periods ' , False ) ) , ( ' special ' , ' = ' , False ) ] )
if form [ ' filter ' ] in [ ' bydate ' , ' all ' , ' none ' ] :
ctx_end [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' id ' , ' in ' , form [
' periods ' ] or ctx_end . get ( ' periods ' , False ) ) , ( ' special ' , ' = ' , False ) ] )
if form [ ' filter ' ] in [ ' bydate ' , ' all ' , ' none ' ] :
ctx_end [ ' date_from ' ] = form [ ' date_from ' ]
ctx_end [ ' date_to ' ] = form [ ' date_to ' ]
return ctx_end . copy ( )
def missing_period ( ctx_init ) :
ctx_init [ ' fiscalyear ' ] = fiscalyear_obj . search ( self . cr , self . uid , [ ( ' date_stop ' , ' < ' , fiscalyear . date_start ) ] , order = ' date_stop ' ) and \
fiscalyear_obj . search ( self . cr , self . uid , [ ( ' date_stop ' , ' < ' , fiscalyear . date_start ) ] , order = ' date_stop ' ) [ - 1 ] or [ ]
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , ctx_init [ ' fiscalyear ' ] ) , ( ' date_stop ' , ' < ' , fiscalyear . date_start ) ] )
ctx_init [ ' fiscalyear ' ] = fiscalyear_obj . search ( self . cr , self . uid , [ ( ' date_stop ' , ' < ' , fiscalyear . date_start ) ] , order = ' date_stop ' ) and \
fiscalyear_obj . search ( self . cr , self . uid , [ (
' date_stop ' , ' < ' , fiscalyear . date_start ) ] , order = ' date_stop ' ) [ - 1 ] or [ ]
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , ctx_init [ ' fiscalyear ' ] ) , ( ' date_stop ' , ' < ' , fiscalyear . date_start ) ] )
return ctx_init
#############################################################################
# CONTEXT FOR INITIAL BALANCE #
#############################################################################
#######################################################################
def _ctx_init ( ctx ) :
ctx_init = self . context . copy ( )
ctx_init [ ' filter ' ] = form . get ( ' filter ' , ' all ' )
ctx_init [ ' filter ' ] = form . get ( ' filter ' , ' all ' )
ctx_init [ ' fiscalyear ' ] = fiscalyear . id
if form [ ' filter ' ] in [ ' byperiod ' , ' all ' ] :
ctx_init [ ' periods ' ] = form [ ' periods ' ]
if not ctx_init [ ' periods ' ] :
ctx_init = missing_period ( ctx_init . copy ( ) )
date_start = min ( [ period . date_start for period in period_obj . browse ( self . cr , self . uid , ctx_init [ ' periods ' ] ) ] )
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' date_stop ' , ' <= ' , date_start ) ] )
date_start = min ( [ period . date_start for period in period_obj . browse (
self . cr , self . uid , ctx_init [ ' periods ' ] ) ] )
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' date_stop ' , ' <= ' , date_start ) ] )
elif form [ ' filter ' ] in [ ' bydate ' ] :
ctx_init [ ' date_from ' ] = fiscalyear . date_start
ctx_init [ ' date_to ' ] = form [ ' date_from ' ]
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' date_stop ' , ' <= ' , ctx_init [ ' date_to ' ] ) ] )
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' date_stop ' , ' <= ' , ctx_init [ ' date_to ' ] ) ] )
elif form [ ' filter ' ] == ' none ' :
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , True ) ] )
date_start = min ( [ period . date_start for period in period_obj . browse ( self . cr , self . uid , ctx_init [ ' periods ' ] ) ] )
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' date_start ' , ' <= ' , date_start ) , ( ' special ' , ' = ' , True ) ] )
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , True ) ] )
date_start = min ( [ period . date_start for period in period_obj . browse (
self . cr , self . uid , ctx_init [ ' periods ' ] ) ] )
ctx_init [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' date_start ' , ' <= ' , date_start ) , ( ' special ' , ' = ' , True ) ] )
return ctx_init . copy ( )
def z ( n ) :
return abs ( n ) < 0.005 and 0.0 or n
self . from_currency_id = self . get_company_currency ( form [ ' company_id ' ] and type ( form [ ' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] )
self . from_currency_id = self . get_company_currency ( form [ ' company_id ' ] and type ( form [
' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] )
if not form [ ' currency_id ' ] :
self . to_currency_id = self . from_currency_id
else :
self . to_currency_id = form [ ' currency_id ' ] and type ( form [ ' currency_id ' ] ) in ( list , tuple ) and form [ ' currency_id ' ] [ 0 ] or form [ ' currency_id ' ]
self . to_currency_id = form [ ' currency_id ' ] and type ( form [ ' currency_id ' ] ) in (
list , tuple ) and form [ ' currency_id ' ] [ 0 ] or form [ ' currency_id ' ]
if form . has_key ( ' account_list ' ) and form [ ' account_list ' ] :
if ' account_list ' in form and form [ ' account_list ' ] :
account_ids = form [ ' account_list ' ]
del form [ ' account_list ' ]
credit_account_ids = self . get_company_accounts ( form [ ' company_id ' ] and type ( form [ ' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] , ' credit ' )
debit_account_ids = self . get_company_accounts ( form [ ' company_id ' ] and type ( form [ ' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] , ' debit ' )
credit_account_ids = self . get_company_accounts ( form [ ' company_id ' ] and type ( form [
' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] , ' credit ' )
debit_account_ids = self . get_company_accounts ( form [ ' company_id ' ] and type ( form [
' company_id ' ] ) in ( list , tuple ) and form [ ' company_id ' ] [ 0 ] or form [ ' company_id ' ] , ' debit ' )
if form . get ( ' fiscalyear ' ) :
if type ( form . get ( ' fiscalyear ' ) ) in ( list , tuple ) :
if type ( form . get ( ' fiscalyear ' ) ) in ( list , tuple ) :
fiscalyear = form [ ' fiscalyear ' ] and form [ ' fiscalyear ' ] [ 0 ]
elif type ( form . get ( ' fiscalyear ' ) ) in ( int , ) :
fiscalyear = form [ ' fiscalyear ' ]
@ -324,44 +348,52 @@ class account_balance(report_sxw.rml_parse):
# Get the accounts #
################################################################
account_ids = _get_children_and_consol ( self . cr , self . uid , account_ids , form [ ' display_account_level ' ] and form [ ' display_account_level ' ] or 100 , self . context )
credit_account_ids = _get_children_and_consol ( self . cr , self . uid , credit_account_ids , 100 , self . context , change_sign = True )
debit_account_ids = _get_children_and_consol ( self . cr , self . uid , debit_account_ids , 100 , self . context , change_sign = True )
credit_account_ids = list ( set ( credit_account_ids ) - set ( debit_account_ids ) )
account_ids = _get_children_and_consol ( self . cr , self . uid , account_ids , form [
' display_account_level ' ] and form [ ' display_account_level ' ] or 100 , self . context )
credit_account_ids = _get_children_and_consol (
self . cr , self . uid , credit_account_ids , 100 , self . context , change_sign = True )
debit_account_ids = _get_children_and_consol (
self . cr , self . uid , debit_account_ids , 100 , self . context , change_sign = True )
credit_account_ids = list ( set (
credit_account_ids ) - set ( debit_account_ids ) )
#
# Generate the report lines (checking each account)
#
tot_check = False
if not form [ ' periods ' ] :
form [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , False ) ] , order = ' date_start asc ' )
form [ ' periods ' ] = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , False ) ] , order = ' date_start asc ' )
if not form [ ' periods ' ] :
raise osv . except_osv ( _ ( ' UserError ' ) , _ ( ' The Selected Fiscal Year Does not have Regular Periods ' ) )
raise osv . except_osv ( _ ( ' UserError ' ) , _ (
' The Selected Fiscal Year Does not have Regular Periods ' ) )
if form [ ' columns ' ] == ' qtr ' :
period_ids = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , False ) ] , order = ' date_start asc ' )
a = 0
l = [ ]
p = [ ]
period_ids = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , False ) ] , order = ' date_start asc ' )
a = 0
l = [ ]
p = [ ]
for x in period_ids :
a + = 1
if a < 3 :
a + = 1
if a < 3 :
l . append ( x )
else :
l . append ( x )
p . append ( l )
l = [ ]
a = 0
l = [ ]
a = 0
#~ period_ids = p
elif form [ ' columns ' ] == ' thirteen ' :
period_ids = period_obj . search ( self . cr , self . uid , [ ( ' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , False ) ] , order = ' date_start asc ' )
period_ids = period_obj . search ( self . cr , self . uid , [ (
' fiscalyear_id ' , ' = ' , fiscalyear . id ) , ( ' special ' , ' = ' , False ) ] , order = ' date_start asc ' )
if form [ ' columns ' ] == ' qtr ' :
tot_bal1 = 0.0
@ -386,7 +418,7 @@ class account_balance(report_sxw.rml_parse):
tot_bal13 = 0.0
else :
ctx_init = _ctx_init ( self . context . copy ( ) )
ctx_end = _ctx_end ( self . context . copy ( ) )
@ -395,11 +427,10 @@ class account_balance(report_sxw.rml_parse):
tot_crd = 0.0
tot_ytd = 0.0
tot_eje = 0.0
res = { }
result_acc = [ ]
tot = { }
tot = { }
for aa_id in account_ids :
id = aa_id [ 0 ]
@ -409,129 +440,148 @@ class account_balance(report_sxw.rml_parse):
#
if not form [ ' display_account_level ' ] or aa_id [ 3 ] . level < = form [ ' display_account_level ' ] :
res = {
' id ' : id ,
' type ' : aa_id [ 3 ] . type ,
' code ' : aa_id [ 3 ] . code ,
' name ' : ( aa_id [ 2 ] and not aa_id [ 1 ] ) and ' TOTAL %s ' % ( aa_id [ 3 ] . name . upper ( ) ) or aa_id [ 3 ] . name ,
' parent_id ' : aa_id [ 3 ] . parent_id and aa_id [ 3 ] . parent_id . id ,
' level ' : aa_id [ 3 ] . level ,
' label ' : aa_id [ 1 ] ,
' total ' : aa_id [ 2 ] ,
' change_sign ' : credit_account_ids and ( id in credit_account_ids and - 1 or 1 ) or 1
' id ' : id ,
' type ' : aa_id [ 3 ] . type ,
' code ' : aa_id [ 3 ] . code ,
' name ' : ( aa_id [ 2 ] and not aa_id [ 1 ] ) and ' TOTAL %s ' % ( aa_id [ 3 ] . name . upper ( ) ) or aa_id [ 3 ] . name ,
' parent_id ' : aa_id [ 3 ] . parent_id and aa_id [ 3 ] . parent_id . id ,
' level ' : aa_id [ 3 ] . level ,
' label ' : aa_id [ 1 ] ,
' total ' : aa_id [ 2 ] ,
' change_sign ' : credit_account_ids and ( id in credit_account_ids and - 1 or 1 ) or 1
}
if form [ ' columns ' ] == ' qtr ' :
pn = 1
for p_id in p :
form [ ' periods ' ] = p_id
ctx_init = _ctx_init ( self . context . copy ( ) )
aa_brw_init = account_obj . browse ( self . cr , self . uid , id , ctx_init )
aa_brw_init = account_obj . browse (
self . cr , self . uid , id , ctx_init )
ctx_end = _ctx_end ( self . context . copy ( ) )
aa_brw_end = account_obj . browse ( self . cr , self . uid , id , ctx_end )
aa_brw_end = account_obj . browse (
self . cr , self . uid , id , ctx_end )
if form [ ' inf_type ' ] == ' IS ' :
d , c , b = map ( z , [ aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
d , c , b = map ( z , [
aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
res . update ( {
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
} )
else :
i , d , c = map ( z , [ aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
i , d , c = map ( z , [
aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
b = z ( i + d - c )
res . update ( {
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
} )
pn + = 1
pn + = 1
form [ ' periods ' ] = period_ids
ctx_init = _ctx_init ( self . context . copy ( ) )
aa_brw_init = account_obj . browse ( self . cr , self . uid , id , ctx_init )
aa_brw_init = account_obj . browse (
self . cr , self . uid , id , ctx_init )
ctx_end = _ctx_end ( self . context . copy ( ) )
aa_brw_end = account_obj . browse ( self . cr , self . uid , id , ctx_end )
aa_brw_end = account_obj . browse (
self . cr , self . uid , id , ctx_end )
if form [ ' inf_type ' ] == ' IS ' :
d , c , b = map ( z , [ aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
d , c , b = map ( z , [
aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
res . update ( {
' dbr5 ' : self . exchange ( d ) ,
' cdr5 ' : self . exchange ( c ) ,
' bal5 ' : self . exchange ( b ) ,
} )
else :
i , d , c = map ( z , [ aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
i , d , c = map ( z , [
aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
b = z ( i + d - c )
res . update ( {
' dbr5 ' : self . exchange ( d ) ,
' cdr5 ' : self . exchange ( c ) ,
' bal5 ' : self . exchange ( b ) ,
} )
elif form [ ' columns ' ] == ' thirteen ' :
pn = 1
for p_id in period_ids :
form [ ' periods ' ] = [ p_id ]
ctx_init = _ctx_init ( self . context . copy ( ) )
aa_brw_init = account_obj . browse ( self . cr , self . uid , id , ctx_init )
aa_brw_init = account_obj . browse (
self . cr , self . uid , id , ctx_init )
ctx_end = _ctx_end ( self . context . copy ( ) )
aa_brw_end = account_obj . browse ( self . cr , self . uid , id , ctx_end )
aa_brw_end = account_obj . browse (
self . cr , self . uid , id , ctx_end )
if form [ ' inf_type ' ] == ' IS ' :
d , c , b = map ( z , [ aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
d , c , b = map ( z , [
aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
res . update ( {
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
} )
else :
i , d , c = map ( z , [ aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
i , d , c = map ( z , [
aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
b = z ( i + d - c )
res . update ( {
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
' dbr %s ' % pn : self . exchange ( d ) ,
' cdr %s ' % pn : self . exchange ( c ) ,
' bal %s ' % pn : self . exchange ( b ) ,
} )
pn + = 1
pn + = 1
form [ ' periods ' ] = period_ids
ctx_init = _ctx_init ( self . context . copy ( ) )
aa_brw_init = account_obj . browse ( self . cr , self . uid , id , ctx_init )
aa_brw_init = account_obj . browse (
self . cr , self . uid , id , ctx_init )
ctx_end = _ctx_end ( self . context . copy ( ) )
aa_brw_end = account_obj . browse ( self . cr , self . uid , id , ctx_end )
aa_brw_end = account_obj . browse (
self . cr , self . uid , id , ctx_end )
if form [ ' inf_type ' ] == ' IS ' :
d , c , b = map ( z , [ aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
d , c , b = map ( z , [
aa_brw_end . debit , aa_brw_end . credit , aa_brw_end . balance ] )
res . update ( {
' dbr13 ' : self . exchange ( d ) ,
' cdr13 ' : self . exchange ( c ) ,
' bal13 ' : self . exchange ( b ) ,
} )
else :
i , d , c = map ( z , [ aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
i , d , c = map ( z , [
aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
b = z ( i + d - c )
res . update ( {
' dbr13 ' : self . exchange ( d ) ,
' cdr13 ' : self . exchange ( c ) ,
' bal13 ' : self . exchange ( b ) ,
} )
else :
aa_brw_init = account_obj . browse ( self . cr , self . uid , id , ctx_init )
aa_brw_end = account_obj . browse ( self . cr , self . uid , id , ctx_end )
aa_brw_init = account_obj . browse (
self . cr , self . uid , id , ctx_init )
aa_brw_end = account_obj . browse (
self . cr , self . uid , id , ctx_end )
i , d , c = map ( z , [ aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
i , d , c = map ( z , [
aa_brw_init . balance , aa_brw_end . debit , aa_brw_end . credit ] )
b = z ( i + d - c )
res . update ( {
' balanceinit ' : self . exchange ( i ) ,
@ -539,8 +589,8 @@ class account_balance(report_sxw.rml_parse):
' credit ' : self . exchange ( c ) ,
' ytd ' : self . exchange ( d - c ) ,
} )
if form [ ' inf_type ' ] == ' IS ' and form [ ' columns ' ] == ' one ' :
if form [ ' inf_type ' ] == ' IS ' and form [ ' columns ' ] == ' one ' :
res . update ( {
' balance ' : self . exchange ( d - c ) ,
} )
@ -553,36 +603,42 @@ class account_balance(report_sxw.rml_parse):
# Check whether we must include this line in the report or not
#
to_include = False
if form [ ' columns ' ] in ( ' thirteen ' , ' qtr ' ) :
to_test = [ False ]
if form [ ' display_account ' ] == ' mov ' and aa_id [ 3 ] . parent_id :
# Include accounts with movements
for x in range ( pn - 1 ) :
to_test . append ( res . get ( ' dbr %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get ( ' cdr %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get (
' dbr %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get (
' cdr %s ' % x , 0.0 ) > = 0.005 and True or False )
if any ( to_test ) :
to_include = True
elif form [ ' display_account ' ] == ' bal ' and aa_id [ 3 ] . parent_id :
# Include accounts with balance
for x in range ( pn - 1 ) :
to_test . append ( res . get ( ' bal %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get (
' bal %s ' % x , 0.0 ) > = 0.005 and True or False )
if any ( to_test ) :
to_include = True
elif form [ ' display_account ' ] == ' bal_mov ' and aa_id [ 3 ] . parent_id :
# Include accounts with balance or movements
for x in range ( pn - 1 ) :
to_test . append ( res . get ( ' bal %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get ( ' dbr %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get ( ' cdr %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get (
' bal %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get (
' dbr %s ' % x , 0.0 ) > = 0.005 and True or False )
to_test . append ( res . get (
' cdr %s ' % x , 0.0 ) > = 0.005 and True or False )
if any ( to_test ) :
to_include = True
else :
# Include all accounts
to_include = True
else :
if form [ ' display_account ' ] == ' mov ' and aa_id [ 3 ] . parent_id :
@ -600,14 +656,13 @@ class account_balance(report_sxw.rml_parse):
else :
# Include all accounts
to_include = True
#~ ANALYTIC LEDGER
if to_include and form [ ' analytic_ledger ' ] and form [ ' columns ' ] == ' four ' and form [ ' inf_type ' ] == ' BS ' and res [ ' type ' ] in ( ' other ' , ' liquidity ' , ' receivable ' , ' payable ' ) :
res [ ' mayor ' ] = self . _get_analytic_ledger ( res , ctx = ctx_end )
if to_include and form [ ' analytic_ledger ' ] and form [ ' columns ' ] == ' four ' and form [ ' inf_type ' ] == ' BS ' and res [ ' type ' ] in ( ' other ' , ' liquidity ' , ' receivable ' , ' payable ' ) :
res [ ' mayor ' ] = self . _get_analytic_ledger ( res , ctx = ctx_end )
else :
res [ ' mayor ' ] = [ ]
if to_include :
result_acc . append ( res )
#
@ -618,28 +673,28 @@ class account_balance(report_sxw.rml_parse):
if form [ ' columns ' ] == ' qtr ' :
tot_check = True
#~ tot[res['id']] = True
tot_bal1 + = res . get ( ' bal1 ' , 0.0 )
tot_bal2 + = res . get ( ' bal2 ' , 0.0 )
tot_bal3 + = res . get ( ' bal3 ' , 0.0 )
tot_bal4 + = res . get ( ' bal4 ' , 0.0 )
tot_bal5 + = res . get ( ' bal5 ' , 0.0 )
tot_bal1 + = res . get ( ' bal1 ' , 0.0 )
tot_bal2 + = res . get ( ' bal2 ' , 0.0 )
tot_bal3 + = res . get ( ' bal3 ' , 0.0 )
tot_bal4 + = res . get ( ' bal4 ' , 0.0 )
tot_bal5 + = res . get ( ' bal5 ' , 0.0 )
elif form [ ' columns ' ] == ' thirteen ' :
tot_check = True
#~ tot[res['id']] = True
tot_bal1 + = res . get ( ' bal1 ' , 0.0 )
tot_bal2 + = res . get ( ' bal2 ' , 0.0 )
tot_bal3 + = res . get ( ' bal3 ' , 0.0 )
tot_bal4 + = res . get ( ' bal4 ' , 0.0 )
tot_bal5 + = res . get ( ' bal5 ' , 0.0 )
tot_bal6 + = res . get ( ' bal6 ' , 0.0 )
tot_bal7 + = res . get ( ' bal7 ' , 0.0 )
tot_bal8 + = res . get ( ' bal8 ' , 0.0 )
tot_bal9 + = res . get ( ' bal9 ' , 0.0 )
tot_bal10 + = res . get ( ' bal10 ' , 0.0 )
tot_bal11 + = res . get ( ' bal11 ' , 0.0 )
tot_bal12 + = res . get ( ' bal12 ' , 0.0 )
tot_bal13 + = res . get ( ' bal13 ' , 0.0 )
tot_bal1 + = res . get ( ' bal1 ' , 0.0 )
tot_bal2 + = res . get ( ' bal2 ' , 0.0 )
tot_bal3 + = res . get ( ' bal3 ' , 0.0 )
tot_bal4 + = res . get ( ' bal4 ' , 0.0 )
tot_bal5 + = res . get ( ' bal5 ' , 0.0 )
tot_bal6 + = res . get ( ' bal6 ' , 0.0 )
tot_bal7 + = res . get ( ' bal7 ' , 0.0 )
tot_bal8 + = res . get ( ' bal8 ' , 0.0 )
tot_bal9 + = res . get ( ' bal9 ' , 0.0 )
tot_bal10 + = res . get ( ' bal10 ' , 0.0 )
tot_bal11 + = res . get ( ' bal11 ' , 0.0 )
tot_bal12 + = res . get ( ' bal12 ' , 0.0 )
tot_bal13 + = res . get ( ' bal13 ' , 0.0 )
else :
tot_check = True
@ -653,84 +708,84 @@ class account_balance(report_sxw.rml_parse):
if tot_check :
str_label = form [ ' lab_str ' ]
res2 = {
' type ' : ' view ' ,
' name ' : ' TOTAL %s ' % ( str_label ) ,
' label ' : False ,
' total ' : True ,
' type ' : ' view ' ,
' name ' : ' TOTAL %s ' % ( str_label ) ,
' label ' : False ,
' total ' : True ,
}
if form [ ' columns ' ] == ' qtr ' :
res2 . update ( dict (
bal1 = tot_bal1 ,
bal2 = tot_bal2 ,
bal3 = tot_bal3 ,
bal4 = tot_bal4 ,
bal5 = tot_bal5 , ) )
bal1 = tot_bal1 ,
bal2 = tot_bal2 ,
bal3 = tot_bal3 ,
bal4 = tot_bal4 ,
bal5 = tot_bal5 , ) )
elif form [ ' columns ' ] == ' thirteen ' :
res2 . update ( dict (
bal1 = tot_bal1 ,
bal2 = tot_bal2 ,
bal3 = tot_bal3 ,
bal4 = tot_bal4 ,
bal5 = tot_bal5 ,
bal6 = tot_bal6 ,
bal7 = tot_bal7 ,
bal8 = tot_bal8 ,
bal9 = tot_bal9 ,
bal10 = tot_bal10 ,
bal11 = tot_bal11 ,
bal12 = tot_bal12 ,
bal13 = tot_bal13 , ) )
bal1 = tot_bal1 ,
bal2 = tot_bal2 ,
bal3 = tot_bal3 ,
bal4 = tot_bal4 ,
bal5 = tot_bal5 ,
bal6 = tot_bal6 ,
bal7 = tot_bal7 ,
bal8 = tot_bal8 ,
bal9 = tot_bal9 ,
bal10 = tot_bal10 ,
bal11 = tot_bal11 ,
bal12 = tot_bal12 ,
bal13 = tot_bal13 , ) )
else :
res2 . update ( {
' balanceinit ' : tot_bin ,
' debit ' : tot_deb ,
' credit ' : tot_crd ,
' ytd ' : tot_ytd ,
' balance ' : tot_eje ,
' balanceinit ' : tot_bin ,
' debit ' : tot_deb ,
' credit ' : tot_crd ,
' ytd ' : tot_ytd ,
' balance ' : tot_eje ,
} )
result_acc . append ( res2 )
return result_acc
report_sxw . report_sxw ( ' report.afr.1cols ' ,
' wizard.report ' ,
report_sxw . report_sxw ( ' report.afr.1cols ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full.rml ' ,
parser = account_balance ,
header = False )
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.2cols ' ,
' wizard.report ' ,
report_sxw . report_sxw ( ' report.afr.2cols ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full_2_cols.rml ' ,
parser = account_balance ,
header = False )
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.4cols ' ,
' wizard.report ' ,
report_sxw . report_sxw ( ' report.afr.4cols ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full_4_cols.rml ' ,
parser = account_balance ,
header = False )
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.analytic.ledger ' ,
' wizard.report ' ,
report_sxw . report_sxw ( ' report.afr.analytic.ledger ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full_4_cols_analytic_ledger.rml ' ,
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.5cols ' ,
' wizard.report ' ,
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.5cols ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full_5_cols.rml ' ,
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.qtrcols ' ,
' wizard.report ' ,
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.qtrcols ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full_qtr_cols.rml ' ,
parser = account_balance ,
header = False )
parser = account_balance ,
header = False )
report_sxw . report_sxw ( ' report.afr.13cols ' ,
' wizard.report ' ,
report_sxw . report_sxw ( ' report.afr.13cols ' ,
' wizard.report ' ,
' account_financial_report/report/balance_full_13_cols.rml ' ,
parser = account_balance ,
header = False )
parser = account_balance ,
header = False )