|
|
@ -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,20 +67,23 @@ 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') |
|
|
@ -93,13 +97,14 @@ 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']): |
|
|
@ -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') |
|
|
@ -135,11 +143,13 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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): |
|
|
@ -154,21 +164,21 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
|
|
|
|
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, |
|
|
@ -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'], |
|
|
@ -217,47 +227,50 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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) |
|
|
|
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) |
|
|
|
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)]) |
|
|
|
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']: |
|
|
|
if form['filter'] in ['bydate', 'all', 'none']: |
|
|
|
ctx_end['date_from'] = form['date_from'] |
|
|
|
ctx_end['date_to'] = form['date_to'] |
|
|
|
|
|
|
@ -265,56 +278,67 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
|
|
|
|
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') |
|
|
|
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') |
|
|
|
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,13 +348,17 @@ 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) |
|
|
|
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) |
|
|
|
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) |
|
|
|
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)) |
|
|
|
credit_account_ids = list(set( |
|
|
|
credit_account_ids) - set(debit_account_ids)) |
|
|
|
|
|
|
|
# |
|
|
|
# Generate the report lines (checking each account) |
|
|
@ -339,29 +367,33 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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 |
|
|
@ -400,7 +432,6 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
result_acc = [] |
|
|
|
tot = {} |
|
|
|
|
|
|
|
|
|
|
|
for aa_id in account_ids: |
|
|
|
id = aa_id[0] |
|
|
|
|
|
|
@ -409,15 +440,15 @@ 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': |
|
|
@ -426,46 +457,54 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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), |
|
|
@ -479,46 +518,54 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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), |
|
|
@ -528,10 +575,13 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
|
|
|
|
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), |
|
|
@ -540,7 +590,7 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
'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), |
|
|
|
}) |
|
|
@ -559,24 +609,30 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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: |
|
|
@ -602,12 +658,11 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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,41 +708,41 @@ 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) |
|
|
@ -696,41 +751,41 @@ class account_balance(report_sxw.rml_parse): |
|
|
|
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', |
|
|
|
'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', |
|
|
|
'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', |
|
|
|
'account_financial_report/report/balance_full_4_cols_analytic_ledger.rml', |
|
|
|
parser=account_balance, |
|
|
|
header=False) |
|
|
|
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) |
|
|
|
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', |
|
|
|
'account_financial_report/report/balance_full_13_cols.rml', |
|
|
|
parser=account_balance, |
|
|
|
header=False) |
|
|
|
parser=account_balance, |
|
|
|
header=False) |