[ADD] migration of account financial reports to version 6.0
commit
6d43323878
|
@ -0,0 +1,29 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
import report
|
||||
import wizard
|
|
@ -0,0 +1,44 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
{
|
||||
"name" : "Common financial reports" ,
|
||||
"version" : "1.0" ,
|
||||
"author" : "OpenERP Venezuela" ,
|
||||
"website" : "http://wiki.openerp.org.ve/" ,
|
||||
"depends" : ["base","account"] ,
|
||||
"category" : "Localisation/Accounting" ,
|
||||
"description": """
|
||||
""" ,
|
||||
"init_xml" : [] ,
|
||||
"demo_xml" : [] ,
|
||||
"update_xml" : [
|
||||
"wizard/wizard_report_report.xml" ,
|
||||
"wizard/account_report_wizard.xml" ,
|
||||
] ,
|
||||
"active": False ,
|
||||
"installable": True
|
||||
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,30 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
import account_balance
|
||||
import account_balance_4_cols
|
||||
import account_balance_2_cols
|
|
@ -0,0 +1,285 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Javier Duran <javieredm@gmail.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
import xml
|
||||
import copy
|
||||
from operator import itemgetter
|
||||
import time
|
||||
import datetime
|
||||
from report import report_sxw
|
||||
from tools import config
|
||||
|
||||
|
||||
class account_balance(report_sxw.rml_parse):
|
||||
|
||||
|
||||
def __init__(self, cr, uid, name, context):
|
||||
print 'INICIO: ',datetime.datetime.now()
|
||||
super(account_balance, self).__init__(cr, uid, name, context)
|
||||
self.sum_debit = 0.00
|
||||
self.sum_credit = 0.00
|
||||
self.sum_balance = 0.00
|
||||
self.sum_debit_fy = 0.00
|
||||
self.sum_credit_fy = 0.00
|
||||
self.sum_balance_fy = 0.00
|
||||
self.date_lst = []
|
||||
self.date_lst_string = ''
|
||||
self.localcontext.update({
|
||||
'time': time,
|
||||
'lines': self.lines,
|
||||
'get_fiscalyear_text': self.get_fiscalyear_text,
|
||||
'get_periods_and_date_text': self.get_periods_and_date_text,
|
||||
'get_inf_text': self.get_informe_text,
|
||||
})
|
||||
self.context = context
|
||||
|
||||
|
||||
def get_fiscalyear_text(self, form):
|
||||
"""
|
||||
Returns the fiscal year text used on the report.
|
||||
"""
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
fiscalyear = None
|
||||
if form.get('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))
|
||||
return "%s*" % (fiscalyear.name or fiscalyear.code)
|
||||
|
||||
def get_informe_text(self, form):
|
||||
"""
|
||||
Returns the header text used on the report.
|
||||
"""
|
||||
inf_type = {
|
||||
'bgen' : ' Balance General',
|
||||
'bcom' : ' Balance de Comprobacion',
|
||||
'edogp': 'Estado de Ganancias y Perdidas'
|
||||
}
|
||||
return inf_type[form['inf_type']]
|
||||
|
||||
def get_periods_and_date_text(self, form):
|
||||
"""
|
||||
Returns the text with the periods/dates used on the report.
|
||||
"""
|
||||
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)])
|
||||
if form['state'] 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)])
|
||||
|
||||
dates_str = None
|
||||
if form['state'] 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}
|
||||
|
||||
|
||||
def lines(self, form, ids={}, done=None, level=0):
|
||||
"""
|
||||
Returns all the data needed for the report lines
|
||||
(account info plus debit/credit/balance in the selected period
|
||||
and the full year)
|
||||
"""
|
||||
tot_eje = 0.0
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
if not ids:
|
||||
return []
|
||||
if not done:
|
||||
done = {}
|
||||
if form.has_key('account_list') and form['account_list']:
|
||||
account_ids = form['account_list']
|
||||
del form['account_list']
|
||||
res = {}
|
||||
result_acc = []
|
||||
accounts_levels = {}
|
||||
account_obj = self.pool.get('account.account')
|
||||
period_obj = self.pool.get('account.period')
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
|
||||
# Get the fiscal year
|
||||
fiscalyear = None
|
||||
if form.get('fiscalyear'):
|
||||
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, form['fiscalyear'])
|
||||
else:
|
||||
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear_obj.find(self.cr, self.uid))
|
||||
|
||||
#
|
||||
# Get the accounts
|
||||
#
|
||||
def _get_children_and_consol(cr, uid, ids, level, context={}):
|
||||
aa_obj = self.pool.get('account.account')
|
||||
ids2=[]
|
||||
temp=[]
|
||||
read_data= aa_obj.read(cr, uid, ids,['id','child_id','level','type'], context)
|
||||
for data in read_data:
|
||||
if data['child_id'] and data['level'] < level and data['type']!='consolidation':
|
||||
#ids2.append([data['id'],'Label', 'Total'])
|
||||
ids2.append([data['id'],True, False])
|
||||
temp=[]
|
||||
for x in data['child_id']:
|
||||
temp.append(x)
|
||||
ids2 += _get_children_and_consol(cr, uid, temp, level, context)
|
||||
ids2.append([data['id'],False,True])
|
||||
else:
|
||||
ids2.append([data['id'],True,True])
|
||||
return ids2
|
||||
|
||||
child_ids = _get_children_and_consol(self.cr, self.uid, account_ids, form['display_account_level'] and form['display_account_level'] or 100,self.context)
|
||||
if child_ids:
|
||||
account_ids = child_ids
|
||||
|
||||
#
|
||||
# Calculate the FY Balance.
|
||||
# (from full fiscal year without closing periods)
|
||||
#
|
||||
ctx = self.context.copy()
|
||||
if form.get('fiscalyear'):
|
||||
# Use only the current fiscal year
|
||||
ctx['fiscalyear'] = fiscalyear.id
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),'|',('special','=',False),('date_stop','<',fiscalyear.date_stop)])
|
||||
else:
|
||||
# Use all the open fiscal years
|
||||
open_fiscalyear_ids = fiscalyear_obj.search(self.cr, self.uid, [('state','=','draft')])
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','in',open_fiscalyear_ids),'|',('special','=',False),('date_stop','<',fiscalyear.date_stop)])
|
||||
|
||||
fy_balance = {}
|
||||
for acc in account_obj.read(self.cr, self.uid, [x[0] for x in account_ids], ['balance'], ctx):
|
||||
fy_balance[acc['id']] = acc['balance']
|
||||
|
||||
#
|
||||
# Calculate the FY Debit/Credit
|
||||
# (from full fiscal year without opening or closing periods)
|
||||
#
|
||||
ctx = self.context.copy()
|
||||
ctx['fiscalyear'] = fiscalyear.id
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
|
||||
|
||||
#
|
||||
# Calculate the period Debit/Credit
|
||||
# (from the selected period or all the non special periods in the fy)
|
||||
#
|
||||
ctx = self.context.copy()
|
||||
ctx['state'] = form.get('state','all')
|
||||
ctx['fiscalyear'] = fiscalyear.id
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id)])
|
||||
if form['state'] in ['byperiod', 'all']:
|
||||
ctx['periods'] = form['periods']
|
||||
if form['state'] in ['bydate', 'all']:
|
||||
ctx['date_from'] = form['date_from']
|
||||
ctx['date_to'] = form['date_to']
|
||||
|
||||
accounts=[]
|
||||
for aa_id in account_ids:
|
||||
new_acc = account_obj.read(self.cr, self.uid, aa_id[0], ['type','code','name','balance','parent_id','level'], ctx)
|
||||
new_acc.update({'label':aa_id[1],'total':aa_id[2]})
|
||||
accounts.append(new_acc)
|
||||
|
||||
#
|
||||
# Generate the report lines (checking each account)
|
||||
#
|
||||
tot = {}
|
||||
for account in accounts:
|
||||
account_id = account['id']
|
||||
|
||||
if account_id in done:
|
||||
pass
|
||||
|
||||
done[account_id] = 1
|
||||
|
||||
#
|
||||
# Calculate the account level
|
||||
#
|
||||
|
||||
accounts_levels[account_id] = account['level']
|
||||
|
||||
#
|
||||
# Check if we need to include this level
|
||||
#
|
||||
if not form['display_account_level'] or account['level'] <= form['display_account_level']:
|
||||
#
|
||||
# Copy the account values
|
||||
#
|
||||
res = {
|
||||
'id' : account_id,
|
||||
'type' : account['type'],
|
||||
'code': account['code'],
|
||||
'name': (account['total'] and not account['label']) and 'TOTAL %s'%(account['name'].upper()) or account['name'],
|
||||
'level': account['level'],
|
||||
'balance': account['balance'],
|
||||
'parent_id': account['parent_id'],
|
||||
'bal_type': '',
|
||||
'label': account['label'],
|
||||
'total': account['total'],
|
||||
}
|
||||
|
||||
#
|
||||
# Round the values to zero if needed (-0.000001 ~= 0)
|
||||
#
|
||||
|
||||
if abs(res['balance']) < 0.5 * 10**-int(2):
|
||||
res['balance'] = 0.0
|
||||
|
||||
#
|
||||
# Check whether we must include this line in the report or not
|
||||
#
|
||||
|
||||
if form['display_account'] == 'bal_mouvement' and account['parent_id']:
|
||||
# Include accounts with movements
|
||||
if abs(res['balance']) >= 0.5 * 10**-int(2):
|
||||
result_acc.append(res)
|
||||
elif form['display_account'] == 'bal_solde' and account['parent_id']:
|
||||
# Include accounts with balance
|
||||
if abs(res['balance']) >= 0.5 * 10**-int(2):
|
||||
result_acc.append(res)
|
||||
else:
|
||||
# Include all accounts
|
||||
result_acc.append(res)
|
||||
if form['tot_check'] and res['type'] == 'view' and res['level'] == 1 and (res['id'] not in tot):
|
||||
tot[res['id']] = True
|
||||
tot_eje += res['balance']
|
||||
print 'FIN: ',datetime.datetime.now()
|
||||
if form['tot_check']:
|
||||
str_label = form['lab_str']
|
||||
res2 = {
|
||||
'type' : 'view',
|
||||
'name': 'TOTAL %s'%(str_label),
|
||||
'balance': tot_eje,
|
||||
'label': False,
|
||||
'total': True,
|
||||
}
|
||||
result_acc.append(res2)
|
||||
return result_acc
|
||||
report_sxw.report_sxw('report.account.account.balance.gene',
|
||||
'wizard.report.account.balance.gene',
|
||||
'addons/l10n_co_account_financial_report/report/balance_full.rml',
|
||||
parser=account_balance,
|
||||
header=False)
|
|
@ -0,0 +1,257 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Javier Duran <javieredm@gmail.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
import xml
|
||||
import copy
|
||||
from operator import itemgetter
|
||||
import time
|
||||
import datetime
|
||||
from report import report_sxw
|
||||
from tools import config
|
||||
|
||||
|
||||
class account_balance(report_sxw.rml_parse):
|
||||
|
||||
|
||||
def __init__(self, cr, uid, name, context):
|
||||
print 'INICIO: ',datetime.datetime.now()
|
||||
super(account_balance, self).__init__(cr, uid, name, context)
|
||||
self.sum_debit = 0.00
|
||||
self.sum_credit = 0.00
|
||||
self.sum_balance = 0.00
|
||||
self.sum_debit_fy = 0.00
|
||||
self.sum_credit_fy = 0.00
|
||||
self.sum_balance_fy = 0.00
|
||||
self.date_lst = []
|
||||
self.date_lst_string = ''
|
||||
self.localcontext.update({
|
||||
'time': time,
|
||||
'lines': self.lines,
|
||||
'get_fiscalyear_text': self.get_fiscalyear_text,
|
||||
'get_periods_and_date_text': self.get_periods_and_date_text,
|
||||
'get_inf_text': self.get_informe_text,
|
||||
})
|
||||
self.context = context
|
||||
|
||||
|
||||
def get_fiscalyear_text(self, form):
|
||||
"""
|
||||
Returns the fiscal year text used on the report.
|
||||
"""
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
fiscalyear = None
|
||||
if form.get('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))
|
||||
return "%s*" % (fiscalyear.name or fiscalyear.code)
|
||||
|
||||
def get_informe_text(self, form):
|
||||
"""
|
||||
Returns the header text used on the report.
|
||||
"""
|
||||
inf_type = {
|
||||
'bgen' : ' Balance General',
|
||||
'bcom' : ' Balance de Comprobacion',
|
||||
'edogp': 'Estado de Ganancias y Perdidas'
|
||||
}
|
||||
return inf_type[form['inf_type']]
|
||||
|
||||
def get_periods_and_date_text(self, form):
|
||||
"""
|
||||
Returns the text with the periods/dates used on the report.
|
||||
"""
|
||||
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)])
|
||||
if form['state'] in ['byperiod', 'all']:
|
||||
period_ids = form['periods'][0][2]
|
||||
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['state'] 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}
|
||||
|
||||
|
||||
def lines(self, form, ids={}, done=None, level=0):
|
||||
"""
|
||||
Returns all the data needed for the report lines
|
||||
(account info plus debit/credit/balance in the selected period
|
||||
and the full year)
|
||||
"""
|
||||
tot_deb = 0.0
|
||||
tot_crd = 0.0
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
if not ids:
|
||||
return []
|
||||
if not done:
|
||||
done = {}
|
||||
if form.has_key('account_list') and form['account_list']:
|
||||
account_ids = form['account_list']
|
||||
del form['account_list']
|
||||
res = {}
|
||||
result_acc = []
|
||||
accounts_levels = {}
|
||||
account_obj = self.pool.get('account.account')
|
||||
period_obj = self.pool.get('account.period')
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
|
||||
# Get the fiscal year
|
||||
fiscalyear = None
|
||||
if form.get('fiscalyear'):
|
||||
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, form['fiscalyear'])
|
||||
else:
|
||||
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear_obj.find(self.cr, self.uid))
|
||||
|
||||
#
|
||||
# Get the accounts
|
||||
#
|
||||
def _get_children_and_consol(cr, uid, ids, level, context={}):
|
||||
aa_obj = self.pool.get('account.account')
|
||||
ids2=[]
|
||||
temp=[]
|
||||
read_data= aa_obj.read(cr, uid, ids,['id','child_id','level','type'], context)
|
||||
for data in read_data:
|
||||
if data['child_id'] and data['level'] < level and data['type']!='consolidation':
|
||||
ids2.append([data['id'],True, False])
|
||||
temp=[]
|
||||
for x in data['child_id']:
|
||||
temp.append(x)
|
||||
ids2 += _get_children_and_consol(cr, uid, temp, level, context)
|
||||
ids2.append([data['id'],False,True])
|
||||
else:
|
||||
ids2.append([data['id'],True,True])
|
||||
return ids2
|
||||
|
||||
child_ids = _get_children_and_consol(self.cr, self.uid, account_ids, form['display_account_level'] and form['display_account_level'] or 100,self.context)
|
||||
if child_ids:
|
||||
account_ids = child_ids
|
||||
|
||||
#
|
||||
# Calculate the period Debit/Credit
|
||||
# (from the selected period or all the non special periods in the fy)
|
||||
#
|
||||
|
||||
ctx = self.context.copy()
|
||||
ctx['state'] = form.get('state','all')
|
||||
ctx['fiscalyear'] = fiscalyear.id
|
||||
ctx['periods'] = form.get('periods')
|
||||
if form['state'] in ['byperiod', 'all']:
|
||||
date_start = min([period.date_start for period in period_obj.browse(self.cr, self.uid, ctx['periods'])])
|
||||
ctx['periods'] = ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_stop','<=',date_start)])
|
||||
if form['state'] in ['bydate', 'all']:
|
||||
ctx['date_from'] = form['date_from']
|
||||
ctx['date_to'] = form['date_to']
|
||||
|
||||
accounts=[]
|
||||
for aa_id in account_ids:
|
||||
new_acc = account_obj.read(self.cr, self.uid, aa_id[0], ['type','code','name','debit','credit','parent_id','level'], ctx)
|
||||
new_acc.update({'label':aa_id[1],'total':aa_id[2]})
|
||||
accounts.append(new_acc)
|
||||
|
||||
def missing_period():
|
||||
ctx['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['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',ctx['fiscalyear']),('date_stop','<',fiscalyear.date_start)])
|
||||
|
||||
|
||||
#
|
||||
# Generate the report lines (checking each account)
|
||||
#
|
||||
|
||||
tot = {}
|
||||
for account in accounts:
|
||||
account_id = account['id']
|
||||
|
||||
if account_id in done:
|
||||
pass
|
||||
|
||||
done[account_id] = 1
|
||||
|
||||
accounts_levels[account_id] = account['level']
|
||||
|
||||
#
|
||||
# Check if we need to include this level
|
||||
#
|
||||
|
||||
if not form['display_account_level'] or account['level'] <= form['display_account_level']:
|
||||
|
||||
#
|
||||
# Copy the account values
|
||||
#
|
||||
|
||||
res = {
|
||||
'id' : account_id,
|
||||
'type' : account['type'],
|
||||
'code': account['code'],
|
||||
'name': (account['total'] and not account['label']) and 'TOTAL %s'%(account['name'].upper()) or account['name'],
|
||||
'level': account['level'],
|
||||
'debit': account['debit'],
|
||||
'credit': account['credit'],
|
||||
'parent_id': account['parent_id'],
|
||||
'bal_type': '',
|
||||
'label': account['label'],
|
||||
'total': account['total'],
|
||||
}
|
||||
|
||||
#
|
||||
# Check whether we must include this line in the report or not
|
||||
#
|
||||
|
||||
if form['display_account'] == 'bal_mouvement' and account['parent_id']:
|
||||
# Include accounts with movements
|
||||
result_acc.append(res)
|
||||
result_acc.append(res)
|
||||
if form['tot_check'] and res['type'] == 'view' and res['level'] == 1 and (res['id'] not in tot):
|
||||
tot[res['id']] = True
|
||||
tot_deb += res['debit']
|
||||
tot_crd += res['credit']
|
||||
|
||||
if form['tot_check']:
|
||||
str_label = form['lab_str']
|
||||
res2 = {
|
||||
'type' : 'view',
|
||||
'name': 'TOTAL %s'%(str_label),
|
||||
'debit': tot_deb,
|
||||
'credit': tot_crd,
|
||||
'label': False,
|
||||
'total': True,
|
||||
}
|
||||
result_acc.append(res2)
|
||||
print 'FIN: ',datetime.datetime.now()
|
||||
return result_acc
|
||||
report_sxw.report_sxw('report.account.account.balance.gene.2',
|
||||
'wizard.report.account.balance.gene.2',
|
||||
'addons/l10n_co_account_financial_report/report/balance_full_2_cols.rml',
|
||||
parser=account_balance,
|
||||
header=False)
|
|
@ -0,0 +1,339 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Javier Duran <javieredm@gmail.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
import xml
|
||||
import copy
|
||||
from operator import itemgetter
|
||||
import time
|
||||
import datetime
|
||||
from report import report_sxw
|
||||
from tools import config
|
||||
|
||||
|
||||
class account_balance(report_sxw.rml_parse):
|
||||
|
||||
|
||||
def __init__(self, cr, uid, name, context):
|
||||
print 'INICIO: ',datetime.datetime.now()
|
||||
super(account_balance, self).__init__(cr, uid, name, context)
|
||||
self.sum_debit = 0.00
|
||||
self.sum_credit = 0.00
|
||||
self.sum_balance = 0.00
|
||||
self.sum_debit_fy = 0.00
|
||||
self.sum_credit_fy = 0.00
|
||||
self.sum_balance_fy = 0.00
|
||||
self.date_lst = []
|
||||
self.date_lst_string = ''
|
||||
self.localcontext.update({
|
||||
'time': time,
|
||||
'lines': self.lines,
|
||||
'get_fiscalyear_text': self.get_fiscalyear_text,
|
||||
'get_periods_and_date_text': self.get_periods_and_date_text,
|
||||
'get_inf_text': self.get_informe_text,
|
||||
})
|
||||
self.context = context
|
||||
|
||||
|
||||
def get_fiscalyear_text(self, form):
|
||||
"""
|
||||
Returns the fiscal year text used on the report.
|
||||
"""
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
fiscalyear = None
|
||||
if form.get('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))
|
||||
return "%s*" % (fiscalyear.name or fiscalyear.code)
|
||||
|
||||
def get_informe_text(self, form):
|
||||
"""
|
||||
Returns the header text used on the report.
|
||||
"""
|
||||
inf_type = {
|
||||
'bgen' : ' Balance General',
|
||||
'bcom' : ' Balance de Comprobacion',
|
||||
'edogp': 'Estado de Ganancias y Perdidas'
|
||||
}
|
||||
return inf_type[form['inf_type']]
|
||||
|
||||
def get_periods_and_date_text(self, form):
|
||||
"""
|
||||
Returns the text with the periods/dates used on the report.
|
||||
"""
|
||||
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)])
|
||||
if form['state'] 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)])
|
||||
|
||||
dates_str = None
|
||||
if form['state'] 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}
|
||||
|
||||
|
||||
def lines(self, form, ids={}, done=None, level=0):
|
||||
"""
|
||||
Returns all the data needed for the report lines
|
||||
(account info plus debit/credit/balance in the selected period
|
||||
and the full year)
|
||||
"""
|
||||
tot_bin = 0.0
|
||||
tot_deb = 0.0
|
||||
tot_crd = 0.0
|
||||
tot_eje = 0.0
|
||||
if not ids:
|
||||
ids = self.ids
|
||||
if not ids:
|
||||
return []
|
||||
if not done:
|
||||
done = {}
|
||||
print "Lista Form %s"%form
|
||||
print "Tipo de Obj %s"%type(form)
|
||||
|
||||
print "form:%s"%form
|
||||
if form.has_key('account_list') and form['account_list']:
|
||||
account_ids = form['account_list']
|
||||
del form['account_list']
|
||||
res = {}
|
||||
result_acc = []
|
||||
accounts_levels = {}
|
||||
account_obj = self.pool.get('account.account')
|
||||
period_obj = self.pool.get('account.period')
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
|
||||
fiscalyear = None
|
||||
if form.get('fiscalyear'):
|
||||
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, form['fiscalyear'])
|
||||
else:
|
||||
fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear_obj.find(self.cr, self.uid))
|
||||
|
||||
#
|
||||
# Get the accounts
|
||||
#
|
||||
|
||||
def _get_children_and_consol(cr, uid, ids, level, context={}):
|
||||
aa_obj = self.pool.get('account.account')
|
||||
ids2=[]
|
||||
temp=[]
|
||||
read_data= aa_obj.read(cr, uid, ids,['id','child_id','level','type'], context)
|
||||
for data in read_data:
|
||||
if data['child_id'] and data['level'] < level and data['type']!='consolidation':
|
||||
ids2.append([data['id'],True, False])
|
||||
temp=[]
|
||||
for x in data['child_id']:
|
||||
temp.append(x)
|
||||
ids2 += _get_children_and_consol(cr, uid, temp, level, context)
|
||||
ids2.append([data['id'],False,True])
|
||||
else:
|
||||
ids2.append([data['id'],True,True])
|
||||
return ids2
|
||||
|
||||
child_ids = _get_children_and_consol(self.cr, self.uid, account_ids, form['display_account_level'] and form['display_account_level'] or 100,self.context)
|
||||
if child_ids:
|
||||
account_ids = child_ids
|
||||
|
||||
account_obj = self.pool.get('account.account')
|
||||
period_obj = self.pool.get('account.period')
|
||||
fiscalyear_obj = self.pool.get('account.fiscalyear')
|
||||
|
||||
#############################################################################
|
||||
# Calculate the period Debit/Credit #
|
||||
# (from the selected period or all the non special periods in the fy) #
|
||||
#############################################################################
|
||||
|
||||
ctx = self.context.copy()
|
||||
ctx['state'] = form.get('state','all')
|
||||
ctx['fiscalyear'] = fiscalyear.id
|
||||
print "Fiscal year %s"%ctx['fiscalyear']
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
|
||||
print "Periodos del Context: %s"%ctx['periods']
|
||||
if form['state'] in ['byperiod', 'all']:
|
||||
print "PERIODOS ANTERIORES DEBIT / CREDIT: ",ctx['periods']
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods']),('special','=',False)])
|
||||
print "PERIODOS DESPUES DEBIT / CREDIT: ",ctx['periods']
|
||||
#~ ctx['periods'] = form['periods']
|
||||
if form['state'] in ['bydate', 'all']:
|
||||
ctx['date_from'] = form['date_from']
|
||||
ctx['date_to'] = form['date_to']
|
||||
|
||||
accounts=[]
|
||||
|
||||
print 'INICIANDO CALCULO DEBIT/CREDIT: ',datetime.datetime.now()
|
||||
val = account_obj.browse(self.cr, self.uid, [aa_id[0] for aa_id in account_ids], ctx)
|
||||
print "Valor de Account_ids en get_children: %s"%account_ids
|
||||
print "Valor de context %s"%ctx
|
||||
#~ val = account_obj.browse(self.cr, self.uid, account_ids, ctx)
|
||||
print 'INTERMEDIO CALCULO DEBIT/CREDIT: ',datetime.datetime.now()
|
||||
c = 0
|
||||
for aa_id in account_ids:
|
||||
new_acc = {
|
||||
'id' :val[c].id,
|
||||
'type' :val[c].type,
|
||||
'code' :val[c].code,
|
||||
'name' :val[c].name,
|
||||
'debit' :val[c].debit,
|
||||
'credit' :val[c].credit,
|
||||
'parent_id' :val[c].parent_id and val[c].parent_id.id,
|
||||
'level' :val[c].level,
|
||||
'label' :aa_id[1],
|
||||
'total' :aa_id[2],
|
||||
}
|
||||
c += 1
|
||||
print "Diccionario new_acc: %s"%new_acc
|
||||
accounts.append(new_acc)
|
||||
print 'FINALIZANDO CALCULO DEBIT/CREDIT: ',datetime.datetime.now()
|
||||
|
||||
def missing_period():
|
||||
ctx['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['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',ctx['fiscalyear']),('date_stop','<',fiscalyear.date_start)])
|
||||
|
||||
#############################################################################
|
||||
# Calculate the period initial Balance #
|
||||
# (fy balance minus the balance from the start of the selected period #
|
||||
# to the end of the year) #
|
||||
#############################################################################
|
||||
|
||||
ctx = self.context.copy()
|
||||
ctx['state'] = form.get('state','all')
|
||||
ctx['fiscalyear'] = fiscalyear.id
|
||||
|
||||
if form['state'] in ['byperiod', 'all']:
|
||||
ctx['periods'] = form['periods']
|
||||
print "PERIODOS ANTERIORES ctx['periods']: ",ctx['periods']
|
||||
date_start = min([period.date_start for period in period_obj.browse(self.cr, self.uid, ctx['periods'])])
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_stop','<=',date_start)])
|
||||
print "PERIODOS DESPUES ctx['periods']: ",ctx['periods']
|
||||
if not ctx['periods']:
|
||||
missing_period()
|
||||
elif form['state'] in ['bydate']:
|
||||
ctx['date_from'] = fiscalyear.date_start
|
||||
ctx['date_to'] = form['date_from']
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_stop','<=',ctx['date_to'])])
|
||||
elif form['state'] == 'none':
|
||||
ctx['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['periods'])])
|
||||
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('date_start','<=',date_start),('special','=',True)])
|
||||
|
||||
period_balanceinit = {}
|
||||
for acc in account_obj.browse(self.cr, self.uid, [x[0] for x in account_ids], ctx):
|
||||
period_balanceinit[acc['id']] = acc.balance
|
||||
|
||||
print 'FINALIZANDO CALCULO INITIAL BALANCE: ',datetime.datetime.now()
|
||||
|
||||
#
|
||||
# Generate the report lines (checking each account)
|
||||
#
|
||||
tot = {}
|
||||
for account in accounts:
|
||||
account_id = account['id']
|
||||
|
||||
if account_id in done:
|
||||
pass
|
||||
|
||||
done[account_id] = 1
|
||||
|
||||
accounts_levels[account_id] = account['level']
|
||||
|
||||
#
|
||||
# Check if we need to include this level
|
||||
#
|
||||
if not form['display_account_level'] or account['level'] <= form['display_account_level']:
|
||||
#
|
||||
# Copy the account values
|
||||
#
|
||||
res = {
|
||||
'id' : account_id,
|
||||
'type' : account['type'],
|
||||
'code': account['code'],
|
||||
'name': (account['total'] and not account['label']) and 'TOTAL %s'%(account['name'].upper()) or account['name'],
|
||||
'level': account['level'],
|
||||
'balanceinit': period_balanceinit[account_id],
|
||||
'debit': account['debit'],
|
||||
'credit': account['credit'],
|
||||
'balance': period_balanceinit[account_id]+account['debit']-account['credit'],
|
||||
'parent_id': account['parent_id'],
|
||||
'bal_type': '',
|
||||
'label': account['label'],
|
||||
'total': account['total'],
|
||||
}
|
||||
#
|
||||
# Round the values to zero if needed (-0.000001 ~= 0)
|
||||
#
|
||||
|
||||
if abs(res['balance']) < 0.5 * 10**-4:
|
||||
res['balance'] = 0.0
|
||||
|
||||
#
|
||||
# Check whether we must include this line in the report or not
|
||||
#
|
||||
|
||||
if form['display_account'] == 'bal_mouvement' and account['parent_id']:
|
||||
# Include accounts with movements
|
||||
if abs(res['balance']) >= 0.5 * 10**-int(2):
|
||||
result_acc.append(res)
|
||||
elif form['display_account'] == 'bal_solde' and account['parent_id']:
|
||||
# Include accounts with balance
|
||||
if abs(res['balance']) >= 0.5 * 10**-4:
|
||||
result_acc.append(res)
|
||||
else:
|
||||
# Include all accounts
|
||||
result_acc.append(res)
|
||||
if form['tot_check'] and res['type'] == 'view' and res['level'] == 1 and (res['id'] not in tot):
|
||||
tot[res['id']] = True
|
||||
tot_bin += res['balanceinit']
|
||||
tot_deb += res['debit']
|
||||
tot_crd += res['credit']
|
||||
tot_eje += res['balance']
|
||||
|
||||
if form['tot_check']:
|
||||
str_label = form['lab_str']
|
||||
res2 = {
|
||||
'type' : 'view',
|
||||
'name': 'TOTAL %s'%(str_label),
|
||||
'balanceinit': tot_bin,
|
||||
'debit': tot_deb,
|
||||
'credit': tot_crd,
|
||||
'balance': tot_eje,
|
||||
'label': False,
|
||||
'total': True,
|
||||
}
|
||||
result_acc.append(res2)
|
||||
print 'FIN: ',datetime.datetime.now()
|
||||
print "result_acc %s"%result_acc
|
||||
return result_acc
|
||||
report_sxw.report_sxw('report.wizard.report.reporte',
|
||||
'wizard.report',
|
||||
'l10n_co_account_financial_report/report/balance_full_4_cols.rml',
|
||||
parser=account_balance,
|
||||
header=False)
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
<data >
|
||||
<report
|
||||
id="account_balance_full"
|
||||
string="General account balance"
|
||||
model="account.account"
|
||||
name="account.account.balance.gene"
|
||||
rml="l10n_co_account_financial_report/report/balance_full.rml"
|
||||
header="False"
|
||||
auto="False"
|
||||
menu="False"/>
|
||||
<report
|
||||
id="account_balance_full_4_cols"
|
||||
string="General account balance Four Columns"
|
||||
model="account.account"
|
||||
name="account.account.balance.gene.4"
|
||||
rml="l10n_co_account_financial_report/report/balance_full_4_cols.rml"
|
||||
header="False"
|
||||
auto="False"
|
||||
menu="False"/>
|
||||
<report
|
||||
id="account_balance_full_2_cols"
|
||||
string="General account balance Two Columns"
|
||||
model="account.account"
|
||||
name="account.account.balance.gene.2"
|
||||
rml="l10n_co_account_financial_report/report/balance_full_2_cols.rml"
|
||||
header="False"
|
||||
auto="False"
|
||||
menu="False"/>
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
<?xml version="1.0"?>
|
||||
<document filename="test.pdf">
|
||||
<template pageSize="(21.59cm,27.94cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||
<pageTemplate id="first">
|
||||
<frame id="first" x1="1cm" y1="2cm" width="19.0cm" height="25cm"/>
|
||||
<pageGraphics>
|
||||
<setFont name="Helvetica-Bold" size="9"/>
|
||||
|
||||
<!--COL 1-->
|
||||
<drawString x="1.0cm" y="27.0cm">[[ company.name ]]</drawString>
|
||||
<drawString x="14.5cm" y="27.0cm">[[ get_inf_text(data['form']) ]] - [[ company.currency_id.name ]]</drawString>
|
||||
|
||||
<!--COL 2-->
|
||||
<setFont name="Helvetica" size="8"/>
|
||||
<drawString x="1.0cm" y="1cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||
<drawString x="18.5cm" y="1cm">Page <pageNumber/></drawString>
|
||||
|
||||
<lineMode width="0.7"/>
|
||||
<lines>1cm 26.9cm 20.0cm 26.9cm</lines>
|
||||
<setFont name="Helvetica" size="8"/>
|
||||
|
||||
</pageGraphics>
|
||||
|
||||
</pageTemplate>
|
||||
</template>
|
||||
<stylesheet>
|
||||
<blockTableStyle id="BODY">
|
||||
<blockValign value="TOP"/>
|
||||
<blockAlignment value="RIGHT"/>
|
||||
<blockTopPadding length="1.0"/>
|
||||
<blockBottomPadding length="1.0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,1" stop="-1,-1" thickness='0.25'/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="BODY_STRIKE">
|
||||
<blockValign value="TOP"/>
|
||||
<blockAlignment value="RIGHT"/>
|
||||
<blockTopPadding length="1.0"/>
|
||||
<blockBottomPadding length="1.0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,1" stop="-1,-1" thickness='0.5'/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="TOP_TABLE">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,-1" stop="0,-1" thickness='0.25'/>
|
||||
</blockTableStyle>
|
||||
|
||||
<initialize>
|
||||
<paraStyle name="all" alignment="justify"/>
|
||||
</initialize>
|
||||
<paraStyle
|
||||
name="TITLE_LEFT_ALIGN"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="8.0"
|
||||
leading="10"
|
||||
alignment="RIGHT"
|
||||
spaceBefore="0.0"
|
||||
spaceAfter="0.0"/>
|
||||
<paraStyle
|
||||
name="TOP_TITLE"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="9"
|
||||
leftIndent="0.0"
|
||||
alignment="LEFT"/>
|
||||
<paraStyle name="TITLES"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="8.0"
|
||||
leading="10"
|
||||
alignment="LEFT"
|
||||
spaceBefore="0.0"
|
||||
spaceAfter="0.0"/>
|
||||
</stylesheet>
|
||||
<images/>
|
||||
<story>
|
||||
<para>[[setLang(user.context_lang)]]</para>
|
||||
<blockTable colWidths="19cm" style="TOP_TABLE" repeatRows="1">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="TOP_TITLE">Fiscal year: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||
<para style="TOP_TITLE">Periods range: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||
<para style="TOP_TITLE">Date: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
||||
<blockTable colWidths="2.5cm,13.5cm,3.0cm" style="BODY" repeatRows="1">
|
||||
<tr noRowsplits="1">
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ setTag('para','para',{'alignment':"RIGHT"}) ]]</font>
|
||||
<font>Code</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLES">Account</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN"></para>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">[[ repeatIn(lines(data['form']), 'a') ]]
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<i>[[a['label']==True and a['code'] or '' ]]</i>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLES">
|
||||
<font>[[ ((a['total'] and not a['label']) and setTag('para','para',{'alignment':"RIGHT"}) or (a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}))) or removeParentNode('font') ]]</font>
|
||||
<font>[[ a['name'] ]]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['balance']) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</story>
|
||||
</document>
|
|
@ -0,0 +1,132 @@
|
|||
<?xml version="1.0"?>
|
||||
<document filename="test.pdf">
|
||||
<template pageSize="(21.59cm,27.94cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||
<pageTemplate id="first">
|
||||
<frame id="first" x1="1cm" y1="2cm" width="19.0cm" height="25cm"/>
|
||||
<pageGraphics>
|
||||
<setFont name="Helvetica-Bold" size="9"/>
|
||||
|
||||
<!--COL 1-->
|
||||
<drawString x="1.0cm" y="27.0cm">[[ company.name ]]</drawString>
|
||||
<drawString x="14.5cm" y="27.0cm">[[ get_inf_text(data['form']) ]] - [[ company.currency_id.name ]]</drawString>
|
||||
|
||||
<!--COL 2-->
|
||||
<setFont name="Helvetica" size="8"/>
|
||||
<drawString x="1.0cm" y="1cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||
<drawString x="18.5cm" y="1cm">Page <pageNumber/></drawString>
|
||||
|
||||
<lineMode width="0.7"/>
|
||||
<lines>1cm 26.9cm 20.0cm 26.9cm</lines>
|
||||
<setFont name="Helvetica" size="8"/>
|
||||
|
||||
</pageGraphics>
|
||||
|
||||
</pageTemplate>
|
||||
</template>
|
||||
<stylesheet>
|
||||
<blockTableStyle id="BODY">
|
||||
<blockValign value="TOP"/>
|
||||
<blockAlignment value="RIGHT"/>
|
||||
<blockTopPadding length="1.0"/>
|
||||
<blockBottomPadding length="1.0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,1" stop="-1,-1" thickness='0.25'/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="BODY_STRIKE">
|
||||
<blockValign value="TOP"/>
|
||||
<blockAlignment value="RIGHT"/>
|
||||
<blockTopPadding length="1.0"/>
|
||||
<blockBottomPadding length="1.0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,1" stop="-1,-1" thickness='0.5'/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="TOP_TABLE">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,-1" stop="0,-1" thickness='0.25'/>
|
||||
</blockTableStyle>
|
||||
|
||||
<initialize>
|
||||
<paraStyle name="all" alignment="justify"/>
|
||||
</initialize>
|
||||
<paraStyle
|
||||
name="TITLE_LEFT_ALIGN"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="8.0"
|
||||
leading="10"
|
||||
alignment="RIGHT"
|
||||
spaceBefore="0.0"
|
||||
spaceAfter="0.0"/>
|
||||
<paraStyle
|
||||
name="TOP_TITLE"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="9"
|
||||
leftIndent="0.0"
|
||||
alignment="LEFT"/>
|
||||
<paraStyle name="TITLES"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="8.0"
|
||||
leading="10"
|
||||
alignment="LEFT"
|
||||
spaceBefore="0.0"
|
||||
spaceAfter="0.0"/>
|
||||
</stylesheet>
|
||||
<images/>
|
||||
<story>
|
||||
<para>[[setLang(user.context_lang)]]</para>
|
||||
<blockTable colWidths="19cm" style="TOP_TABLE" repeatRows="1">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="TOP_TITLE">Fiscal year: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||
<para style="TOP_TITLE">Periods range: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||
<para style="TOP_TITLE">Date: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
||||
<blockTable colWidths="2.5cm,11.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1">
|
||||
<tr noRowsplits="1">
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>Code</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLES">Account</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">Debit</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">Credit</para>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">[[ repeatIn(lines(data['form']), 'a') ]]
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<i>[[a['label']==True and a['code'] or '' ]]</i>
|
||||
</para>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLES">
|
||||
<font>[[ ((a['total'] and not a['label']) and setTag('para','para',{'alignment':"RIGHT"}) or (a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}))) or removeParentNode('font') ]]</font>
|
||||
<font>[[ a['name'] ]]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['debit'], digits=2, grouping=True) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['credit'], digits=2, grouping=True) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</blockTable>
|
||||
</story>
|
||||
</document>
|
|
@ -0,0 +1,148 @@
|
|||
<?xml version="1.0"?>
|
||||
<document filename="test.pdf">
|
||||
<template pageSize="(21.59cm,27.94cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||
<pageTemplate id="first">
|
||||
<frame id="first" x1="1cm" y1="2cm" width="19.0cm" height="25cm"/>
|
||||
<pageGraphics>
|
||||
<setFont name="Helvetica-Bold" size="9"/>
|
||||
|
||||
<!--COL 1-->
|
||||
<drawString x="1.0cm" y="27.0cm">[[ company.name ]]</drawString>
|
||||
<drawString x="14.5cm" y="27.0cm">[[ get_inf_text(data['form']) ]] - [[ company.currency_id.name ]]</drawString>
|
||||
|
||||
<!--COL 2-->
|
||||
<setFont name="Helvetica" size="8"/>
|
||||
<drawString x="1.0cm" y="1cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||
<drawString x="18.5cm" y="1cm">Page <pageNumber/></drawString>
|
||||
|
||||
<lineMode width="0.7"/>
|
||||
<lines>1cm 26.9cm 20.0cm 26.9cm</lines>
|
||||
<setFont name="Helvetica" size="8"/>
|
||||
|
||||
</pageGraphics>
|
||||
|
||||
</pageTemplate>
|
||||
</template>
|
||||
<stylesheet>
|
||||
<blockTableStyle id="BODY">
|
||||
<blockValign value="TOP"/>
|
||||
<blockAlignment value="RIGHT"/>
|
||||
<blockTopPadding length="1.0"/>
|
||||
<blockBottomPadding length="1.0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,1" stop="-1,-1" thickness='0.25'/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="BODY_STRIKE">
|
||||
<blockValign value="TOP"/>
|
||||
<blockAlignment value="RIGHT"/>
|
||||
<blockTopPadding length="1.0"/>
|
||||
<blockBottomPadding length="1.0"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,1" stop="-1,-1" thickness='0.5'/>
|
||||
</blockTableStyle>
|
||||
<blockTableStyle id="TOP_TABLE">
|
||||
<blockAlignment value="LEFT"/>
|
||||
<blockValign value="TOP"/>
|
||||
<lineStyle kind="LINEBELOW" colorName="#FFFFFF" start="0,-1" stop="0,-1" thickness='0.25'/>
|
||||
</blockTableStyle>
|
||||
|
||||
<initialize>
|
||||
<paraStyle name="all" alignment="justify"/>
|
||||
</initialize>
|
||||
<paraStyle
|
||||
name="TITLE_LEFT_ALIGN"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="8.0"
|
||||
leading="10"
|
||||
alignment="RIGHT"
|
||||
spaceBefore="0.0"
|
||||
spaceAfter="0.0"/>
|
||||
<paraStyle
|
||||
name="TOP_TITLE"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="9"
|
||||
leftIndent="0.0"
|
||||
alignment="LEFT"/>
|
||||
<paraStyle name="TITLES"
|
||||
fontName="Helvetica-Bold"
|
||||
fontSize="8.0"
|
||||
leading="10"
|
||||
alignment="LEFT"
|
||||
spaceBefore="0.0"
|
||||
spaceAfter="0.0"/>
|
||||
</stylesheet>
|
||||
<images/>
|
||||
<story>
|
||||
<para>[[setLang(user.context_lang)]]</para>
|
||||
<blockTable colWidths="19cm" style="TOP_TABLE" repeatRows="1">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="TOP_TITLE">Fiscal year: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||
<para style="TOP_TITLE">Periods range: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||
<para style="TOP_TITLE">Date: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
||||
<blockTable colWidths="2.5cm,6.5cm,2.5cm,2.5cm,2.5cm,2.5cm" style="BODY" repeatRows="1">
|
||||
<tr noRowsplits="1">
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>Code</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLES">Account</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">Initial</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">Debit</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">Credit</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">Balance</para>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">[[ repeatIn(lines(data['form']), 'a') ]]
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<i>[[a['label']==True and a['code'] or '' ]]</i>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLES">
|
||||
<font>[[ ((a['total'] and not a['label']) and setTag('para','para',{'alignment':"RIGHT"}) or (a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}))) or removeParentNode('font') ]]</font>
|
||||
<font>[[ a['name'] ]]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['balanceinit'], digits=2, grouping=True) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['debit'], digits=2, grouping=True) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['credit'], digits=2, grouping=True) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="TITLE_LEFT_ALIGN">
|
||||
<font>[[ a['type']<>'view' and setTag('para','para',{'fontName':"Courier"}) or removeParentNode('font') ]]</font>
|
||||
<font>[[ (a['total']==True) and formatLang(a['balance'], digits=2, grouping=True) or '']]</font>
|
||||
</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
</story>
|
||||
</document>
|
|
@ -0,0 +1,32 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
import wizard_account_balance_4_report
|
||||
import wizard_account_balance_2_report
|
||||
import wizard_account_balance_report
|
||||
|
||||
|
|
@ -0,0 +1,214 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="wizard_report_view" model="ir.ui.view">
|
||||
<field name="name">Wizard Report Balance Four Columns</field>
|
||||
<field name="model">wizard.report</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="General Account Balance [ Initial | Debit | Credit | Balance ]">
|
||||
<group width='800' height='600'>
|
||||
<field name="company_id"/>
|
||||
|
||||
<newline/>
|
||||
<group colspan="4">
|
||||
<separator string="Accounts to include" colspan="4"/>
|
||||
<field name="account_list" nolabel="1" colspan="4" domain="[('company_id','=',company_id)]"/>
|
||||
<!--
|
||||
<field name="account_list" nolabel="1" colspan="4"/>
|
||||
-->
|
||||
<field name="display_account" required="True"/>
|
||||
<field name="display_account_level" required="True" />
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Period" colspan="4"/>
|
||||
<field name="fiscalyear"/>
|
||||
<newline/>
|
||||
<field name="state" required="True"/>
|
||||
<newline/>
|
||||
|
||||
<!--
|
||||
<group colspan="4">
|
||||
<group colspan="4">
|
||||
<separator string="Date Filter" colspan="4"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Filter on Periods" colspan="4"/>
|
||||
<field name="periods" colspan="4" nolabel="1" domain="[('fiscalyear_id','=',fiscalyear)]"/>
|
||||
</group>
|
||||
</group>
|
||||
-->
|
||||
|
||||
<group attrs="{'invisible':[('state','=','none')]}" colspan="4">
|
||||
<group attrs="{'invisible':[('state','=','byperiod')]}" colspan="4">
|
||||
<separator string="Date Filter" colspan="4"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('state','=','bydate')]}" colspan="4">
|
||||
<separator string="Filter on Periods" colspan="4"/>
|
||||
<field name="periods" colspan="4" nolabel="1" domain="[('fiscalyear_id','=',fiscalyear)]"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Total" colspan="4"/>
|
||||
<field name="tot_check"/>
|
||||
<field name="lab_str"/>
|
||||
<field name="inf_type"/>
|
||||
<button name="print_report" string="Print" type="object"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_wizard_report" model="ir.actions.act_window">
|
||||
<field name="name">Reporte Balance Con Wizard</field>
|
||||
<field name="res_model">wizard.report</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="wizard_report_view"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem
|
||||
id="menu_wizard_report"
|
||||
name="Reporte Balance 4 Columnas"
|
||||
parent="account.final_accounting_reports"
|
||||
sequence="99"
|
||||
action="action_wizard_report"/>
|
||||
|
||||
|
||||
<record id="wizard_report_view2" model="ir.ui.view">
|
||||
<field name="name">Wizard Report Balance Two Columns</field>
|
||||
<field name="model">wizard.report.account.balance.gene.2</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="General Account Balance [ Initial | Debit | Credit | Balance ]">
|
||||
<group width='800' height='600'>
|
||||
<field name="company_id"/>
|
||||
<newline/>
|
||||
<group colspan="4">
|
||||
<separator string="Accounts to include" colspan="4"/>
|
||||
<field name="account_list" nolabel="1" colspan="4" domain="[('company_id','=',company_id)]"/>
|
||||
<field name="display_account" required="True"/>
|
||||
<field name="display_account_level" required="True" />
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Period" colspan="4"/>
|
||||
<field name="fiscalyear"/>
|
||||
<newline/>
|
||||
<field name="state" required="True"/>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('state','=','none')]}" colspan="4">
|
||||
<group attrs="{'invisible':[('state','=','byperiod')]}" colspan="4">
|
||||
<separator string="Date Filter" colspan="4"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('state','=','bydate')]}" colspan="4">
|
||||
<separator string="Filter on Periods" colspan="4"/>
|
||||
<field name="periods" colspan="4" nolabel="1" domain="[('fiscalyear_id','=',fiscalyear)]"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Total" colspan="4"/>
|
||||
<field name="tot_check"/>
|
||||
<field name="lab_str"/>
|
||||
<field name="inf_type"/>
|
||||
<button name="print_report" string="Print" type="object"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_wizard_report2" model="ir.actions.act_window">
|
||||
<field name="name">Reporte Balance Dos Columnas Con Wizard</field>
|
||||
<field name="res_model">wizard.report.account.balance.gene.2</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="wizard_report_view2"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="menu_wizard_report2"
|
||||
name="Reporte Balance 2 Columnas"
|
||||
parent="account.final_accounting_reports"
|
||||
sequence="99"
|
||||
action="action_wizard_report2"/>
|
||||
|
||||
<record id="wizard_report_view3" model="ir.ui.view">
|
||||
<field name="name">Wizard Report Balance</field>
|
||||
<field name="model">wizard.report.account.balance.gene</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="General Account Balance [ Initial | Debit | Credit | Balance ]">
|
||||
<group width='800' height='600'>
|
||||
<field name="company_id"/>
|
||||
<newline/>
|
||||
<group colspan="4">
|
||||
<separator string="Accounts to include" colspan="4"/>
|
||||
<field name="account_list" nolabel="1" colspan="4" domain="[('company_id','=',company_id)]"/>
|
||||
<field name="display_account" required="True"/>
|
||||
<field name="display_account_level" required="True" />
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Period" colspan="4"/>
|
||||
<field name="fiscalyear"/>
|
||||
<newline/>
|
||||
<field name="state" required="True"/>
|
||||
<newline/>
|
||||
<group attrs="{'invisible':[('state','=','none')]}" colspan="4">
|
||||
<group attrs="{'invisible':[('state','=','byperiod')]}" colspan="4">
|
||||
<separator string="Date Filter" colspan="4"/>
|
||||
<field name="date_from"/>
|
||||
<field name="date_to"/>
|
||||
</group>
|
||||
<group attrs="{'invisible':[('state','=','bydate')]}" colspan="4">
|
||||
<separator string="Filter on Periods" colspan="4"/>
|
||||
<field name="periods" colspan="4" nolabel="1" domain="[('fiscalyear_id','=',fiscalyear)]"/>
|
||||
</group>
|
||||
</group>
|
||||
</group>
|
||||
<group colspan="4">
|
||||
<separator string="Total" colspan="4"/>
|
||||
<field name="tot_check"/>
|
||||
<field name="lab_str"/>
|
||||
<field name="inf_type"/>
|
||||
<button name="print_report" string="Print" type="object"/>
|
||||
</group>
|
||||
</group>
|
||||
</form>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_wizard_report3" model="ir.actions.act_window">
|
||||
<field name="name">Reporte Balance Dos Columnas Con Wizard</field>
|
||||
<field name="res_model">wizard.report.account.balance.gene</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="wizard_report_view3"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem
|
||||
id="menu_wizard_report3"
|
||||
name="Reporte Balance "
|
||||
parent="account.final_accounting_reports"
|
||||
sequence="99"
|
||||
action="action_wizard_report3"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,118 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://www.vauxoo.com>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Javier Duran <javieredm@gmail.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: HELADOS GILDA, C.A. http://www.heladosgilda.com.ve
|
||||
# Audited by: Humberto Arocha hbto@vauxoo.com
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
from osv import osv,fields
|
||||
import pooler
|
||||
import time
|
||||
class wizard_account_balance_gene_2(osv.osv_memory):
|
||||
_name = "wizard.report.account.balance.gene.2"
|
||||
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company','Company',required=True),
|
||||
'account_list': fields.many2many ('account.account','rel_wizard_account','account_list','account_id','Root accounts',required=True),
|
||||
'state': fields.selection([('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],'Date/Period Filter'),
|
||||
'fiscalyear': fields.many2one('account.fiscalyear','Fiscal year',help='Keep empty to use all open fiscal years to compute the balance',required=True),
|
||||
'periods': fields.many2many('account.period','rel_wizard_period','wizard_id','period_id','Periods',help='All periods in the fiscal year if empty'),
|
||||
'display_account': fields.selection([('bal_all','All'),('bal_solde', 'With balance'),('bal_mouvement','With movements')],'Display accounts'),
|
||||
'display_account_level': fields.integer('Up to level',help='Display accounts up to this level (0 to show all)'),
|
||||
'date_from': fields.date('Start date',required=True),
|
||||
'date_to': fields.date('End date',required=True),
|
||||
'tot_check': fields.boolean('Show Total'),
|
||||
'lab_str': fields.char('Description', size= 128),
|
||||
'inf_type': fields.selection([('bgen','Balance General'),('bcom','Balance Comprobacion'),('edogp','Estado Ganancias y Perdidas')],'Tipo Informe',required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'date_from': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_to': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'state': lambda *a:'byperiod',
|
||||
'display_account_level': lambda *a: 0,
|
||||
'inf_type': lambda *a:'bcom',
|
||||
'company_id': lambda *a: 1,
|
||||
'fiscalyear': lambda *a: 1,
|
||||
'display_account': lambda *a:'bal_mouvement',
|
||||
|
||||
}
|
||||
|
||||
def _get_defaults(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context)
|
||||
if user.company_id:
|
||||
company_id = user.company_id.id
|
||||
else:
|
||||
company_id = pooler.get_pool(cr.dbname).get('res.company').search(cr, uid, [('parent_id', '=', False)])[0]
|
||||
data['form']['company_id'] = company_id
|
||||
fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear')
|
||||
data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid)
|
||||
data['form']['context'] = context
|
||||
return data['form']
|
||||
|
||||
|
||||
def _check_state(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if data['form']['state'] == 'bydate':
|
||||
self._check_date(cr, uid, data, context)
|
||||
return data['form']
|
||||
|
||||
|
||||
def _check_date(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
sql = """SELECT f.id, f.date_start, f.date_stop
|
||||
FROM account_fiscalyear f
|
||||
WHERE '%s' between f.date_start and f.date_stop """%(data['form']['date_from'])
|
||||
cr.execute(sql)
|
||||
res = cr.dictfetchall()
|
||||
if res:
|
||||
if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_to'] < res[0]['date_start']):
|
||||
raise wizard.except_wizard(_('UserError'),_('Date to must be set between %s and %s') % (res[0]['date_start'], res[0]['date_stop']))
|
||||
else:
|
||||
return 'report'
|
||||
else:
|
||||
raise wizard.except_wizard(_('UserError'),_('Date not in a defined fiscal year'))
|
||||
|
||||
def print_report(self, cr, uid, ids,data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
data = {}
|
||||
print "Context %s"%context
|
||||
print "Data %s"%data
|
||||
print "Lista IDS:%s"%ids
|
||||
data['ids'] = context.get('active_ids', [])
|
||||
data['model'] = context.get('active_model', 'ir.ui.menu')
|
||||
data['form'] = self.read(cr, uid, ids[0])
|
||||
print "Context Mod%s"%context
|
||||
print "Data Mod%s"%data
|
||||
print "Lista IDS Mod:%s"%ids
|
||||
return {'type': 'ir.actions.report.xml', 'report_name': 'account.account.balance.gene.2', 'datas': data}
|
||||
|
||||
wizard_account_balance_gene_2()
|
||||
|
||||
|
|
@ -0,0 +1,89 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
from osv import osv,fields
|
||||
import pooler
|
||||
import time
|
||||
class wizard_report(osv.osv_memory):
|
||||
_name = "wizard.report"
|
||||
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company','Company',required=True),
|
||||
'account_list': fields.many2many ('account.account','rel_wizard_account','account_list','account_id','Root accounts',required=True),
|
||||
'state': fields.selection([('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],'Date/Period Filter'),
|
||||
'fiscalyear': fields.many2one('account.fiscalyear','Fiscal year',help='Keep empty to use all open fiscal years to compute the balance',required=True),
|
||||
'periods': fields.many2many('account.period','rel_wizard_period','wizard_id','period_id','Periods',help='All periods in the fiscal year if empty'),
|
||||
'display_account': fields.selection([('bal_all','All'),('bal_solde', 'With balance'),('bal_mouvement','With movements')],'Display accounts'),
|
||||
'display_account_level': fields.integer('Up to level',help='Display accounts up to this level (0 to show all)'),
|
||||
'date_from': fields.date('Start date',required=True),
|
||||
'date_to': fields.date('End date',required=True),
|
||||
'tot_check': fields.boolean('Show Total'),
|
||||
'lab_str': fields.char('Description', size= 128),
|
||||
'inf_type': fields.selection([('bgen','Balance General'),('bcom','Balance Comprobacion'),('edogp','Estado Ganancias y Perdidas')],'Tipo Informe',required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'date_from': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_to': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'state': lambda *a:'byperiod',
|
||||
'display_account_level': lambda *a: 0,
|
||||
'inf_type': lambda *a:'bcom',
|
||||
'company_id': lambda *a: 1,
|
||||
'fiscalyear': lambda *a: 1,
|
||||
'display_account': lambda *a:'bal_mouvement',
|
||||
|
||||
}
|
||||
|
||||
def _get_defaults(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context)
|
||||
if user.company_id:
|
||||
company_id = user.company_id.id
|
||||
else:
|
||||
company_id = pooler.get_pool(cr.dbname).get('res.company').search(cr, uid, [('parent_id', '=', False)])[0]
|
||||
data['form']['company_id'] = company_id
|
||||
fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear')
|
||||
data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid)
|
||||
data['form']['context'] = context
|
||||
return data['form']
|
||||
|
||||
|
||||
def _check_state(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if data['form']['state'] == 'bydate':
|
||||
self._check_date(cr, uid, data, context)
|
||||
return data['form']
|
||||
|
||||
|
||||
def _check_date(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
sql = """SELECT f.id, f.date_start, f.date_stop
|
||||
FROM account_fiscalyear f
|
||||
WHERE '%s' between f.date_start and f.date_stop """%(data['form']['date_from'])
|
||||
cr.execute(sql)
|
||||
res = cr.dictfetchall()
|
||||
if res:
|
||||
if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_to'] < res[0]['date_start']):
|
||||
raise wizard.except_wizard(_('UserError'),_('Date to must be set between %s and %s') % (res[0]['date_start'], res[0]['date_stop']))
|
||||
else:
|
||||
return 'report'
|
||||
else:
|
||||
raise wizard.except_wizard(_('UserError'),_('Date not in a defined fiscal year'))
|
||||
|
||||
def print_report(self, cr, uid, ids,data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
data = {}
|
||||
print "Context %s"%context
|
||||
print "Data %s"%data
|
||||
print "Lista IDS:%s"%ids
|
||||
data['ids'] = context.get('active_ids', [])
|
||||
data['model'] = context.get('active_model', 'ir.ui.menu')
|
||||
data['form'] = self.read(cr, uid, ids[0])
|
||||
print "Context Mod%s"%context
|
||||
print "Data Mod%s"%data
|
||||
print "Lista IDS Mod:%s"%ids
|
||||
return {'type': 'ir.actions.report.xml', 'report_name': 'wizard.report.reporte', 'datas': data}
|
||||
|
||||
wizard_report()
|
|
@ -0,0 +1,118 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
###########################################################################
|
||||
# Module Writen to OpenERP, Open Source Management Solution
|
||||
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||
# All Rights Reserved
|
||||
###############Credits######################################################
|
||||
# Coded by: Humberto Arocha humberto@openerp.com.ve
|
||||
# Angelica Barrios angelicaisabelb@gmail.com
|
||||
# Jordi Esteve <jesteve@zikzakmedia.com>
|
||||
# Javier Duran <javieredm@gmail.com>
|
||||
# Planified by: Humberto Arocha
|
||||
# Finance by: LUBCAN COL S.A.S http://www.lubcancol.com
|
||||
# Audited by: Humberto Arocha humberto@openerp.com.ve
|
||||
#############################################################################
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU 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 General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
##############################################################################
|
||||
|
||||
|
||||
from osv import osv,fields
|
||||
import pooler
|
||||
import time
|
||||
class wizard_account_balance_gene(osv.osv_memory):
|
||||
_name = "wizard.report.account.balance.gene"
|
||||
|
||||
_columns = {
|
||||
'company_id': fields.many2one('res.company','Company',required=True),
|
||||
'account_list': fields.many2many ('account.account','rel_wizard_account','account_list','account_id','Root accounts',required=True),
|
||||
'state': fields.selection([('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],'Date/Period Filter'),
|
||||
'fiscalyear': fields.many2one('account.fiscalyear','Fiscal year',help='Keep empty to use all open fiscal years to compute the balance',required=True),
|
||||
'periods': fields.many2many('account.period','rel_wizard_period','wizard_id','period_id','Periods',help='All periods in the fiscal year if empty'),
|
||||
'display_account': fields.selection([('bal_all','All'),('bal_solde', 'With balance'),('bal_mouvement','With movements')],'Display accounts'),
|
||||
'display_account_level': fields.integer('Up to level',help='Display accounts up to this level (0 to show all)'),
|
||||
'date_from': fields.date('Start date',required=True),
|
||||
'date_to': fields.date('End date',required=True),
|
||||
'tot_check': fields.boolean('Show Total'),
|
||||
'lab_str': fields.char('Description', size= 128),
|
||||
'inf_type': fields.selection([('bgen','Balance General'),('bcom','Balance Comprobacion'),('edogp','Estado Ganancias y Perdidas')],'Tipo Informe',required=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'date_from': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'date_to': lambda *a: time.strftime('%Y-%m-%d'),
|
||||
'state': lambda *a:'byperiod',
|
||||
'display_account_level': lambda *a: 0,
|
||||
'inf_type': lambda *a:'bcom',
|
||||
'company_id': lambda *a: 1,
|
||||
'fiscalyear': lambda *a: 1,
|
||||
'display_account': lambda *a:'bal_mouvement',
|
||||
|
||||
}
|
||||
|
||||
def _get_defaults(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid, context=context)
|
||||
if user.company_id:
|
||||
company_id = user.company_id.id
|
||||
else:
|
||||
company_id = pooler.get_pool(cr.dbname).get('res.company').search(cr, uid, [('parent_id', '=', False)])[0]
|
||||
data['form']['company_id'] = company_id
|
||||
fiscalyear_obj = pooler.get_pool(cr.dbname).get('account.fiscalyear')
|
||||
data['form']['fiscalyear'] = fiscalyear_obj.find(cr, uid)
|
||||
data['form']['context'] = context
|
||||
return data['form']
|
||||
|
||||
|
||||
def _check_state(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if data['form']['state'] == 'bydate':
|
||||
self._check_date(cr, uid, data, context)
|
||||
return data['form']
|
||||
|
||||
|
||||
def _check_date(self, cr, uid, data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
sql = """SELECT f.id, f.date_start, f.date_stop
|
||||
FROM account_fiscalyear f
|
||||
WHERE '%s' between f.date_start and f.date_stop """%(data['form']['date_from'])
|
||||
cr.execute(sql)
|
||||
res = cr.dictfetchall()
|
||||
if res:
|
||||
if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_to'] < res[0]['date_start']):
|
||||
raise wizard.except_wizard(_('UserError'),_('Date to must be set between %s and %s') % (res[0]['date_start'], res[0]['date_stop']))
|
||||
else:
|
||||
return 'report'
|
||||
else:
|
||||
raise wizard.except_wizard(_('UserError'),_('Date not in a defined fiscal year'))
|
||||
|
||||
def print_report(self, cr, uid, ids,data, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
data = {}
|
||||
print "Context %s"%context
|
||||
print "Data %s"%data
|
||||
print "Lista IDS:%s"%ids
|
||||
data['ids'] = context.get('active_ids', [])
|
||||
data['model'] = context.get('active_model', 'ir.ui.menu')
|
||||
data['form'] = self.read(cr, uid, ids[0])
|
||||
print "Context Mod%s"%context
|
||||
print "Data Mod%s"%data
|
||||
print "Lista IDS Mod:%s"%ids
|
||||
return {'type': 'ir.actions.report.xml', 'report_name': 'account.account.balance.gene', 'datas': data}
|
||||
|
||||
wizard_account_balance_gene()
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<report
|
||||
auto="False"
|
||||
id="wizard_report_reporte_4_col"
|
||||
menu="True"
|
||||
model="wizard.report"
|
||||
name="wizard.report.reporte"
|
||||
rml="l10n_co_account_financial_report/report/balance_full_4_cols.rml"
|
||||
string="Balance de Comprobacion Wizard 4 Columnas"
|
||||
header="False"
|
||||
/>
|
||||
<report
|
||||
auto="False"
|
||||
id="wizard_report_reporte_2_col"
|
||||
menu="True"
|
||||
model="wizard.report.account.balance.gene.2"
|
||||
name="account.account.balance.gene.2"
|
||||
rml="l10n_co_account_financial_report/report/balance_full_2_cols.rml"
|
||||
string="Balance de Comprobacion Wizard 2 Columnas"
|
||||
header="False"
|
||||
/>
|
||||
<report
|
||||
auto="False"
|
||||
id="wizard_report_reporte"
|
||||
menu="True"
|
||||
model="wizard.report.account.balance.gene"
|
||||
name="account.account.balance.gene"
|
||||
rml="l10n_co_account_financial_report/report/balance_full.rml"
|
||||
string="Balance de Comprobacion Wizard"
|
||||
header="False"
|
||||
/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue