[ADD] Mayor Analitico, Hacer Merge de este modulo con los
reportes de cuatro, dos y una columna6.0
parent
999268355a
commit
fc28bafbdd
|
@ -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,35 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
# 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" : "Reportes Financieros",
|
||||||
|
"version" : "0.3",
|
||||||
|
"author" : "Vauxoo & Industrias Diana C.A.",
|
||||||
|
"website" : "http://wiki.openerp.org.ve/",
|
||||||
|
"depends" : ["base","account"],
|
||||||
|
"category" : "Localisation/Accounting",
|
||||||
|
"description": """
|
||||||
|
Modulo para Generar reportes financieros
|
||||||
|
""",
|
||||||
|
"init_xml" : [],
|
||||||
|
"demo_xml" : [],
|
||||||
|
"update_xml" : [
|
||||||
|
"wizard_report_report.xml",
|
||||||
|
"wizard/account_report_wizard.xml",
|
||||||
|
#~ "wizard/account_mayor_analitico.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,21 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
###########################################################################
|
||||||
|
# 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_4_cols
|
||||||
|
import account_balance_2_cols
|
||||||
|
import account_balance
|
||||||
|
import account_mayor_analitico
|
||||||
|
import account_analisis_cuentas
|
|
@ -0,0 +1,383 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
###########################################################################
|
||||||
|
# Module Writen to OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||||
|
# All Rights Reserved
|
||||||
|
###############Credits######################################################
|
||||||
|
# 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_analisis_cuentas(report_sxw.rml_parse):
|
||||||
|
|
||||||
|
def __init__(self, cr, uid, name, context):
|
||||||
|
super(account_analisis_cuentas, 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,
|
||||||
|
'set_fecha': self.set_fecha,
|
||||||
|
})
|
||||||
|
self.context = context
|
||||||
|
|
||||||
|
def set_fecha(self, fecha):
|
||||||
|
f = fecha.split('-')
|
||||||
|
date = datetime.date(int(f[0]),int(f[1]),int(f[2]))
|
||||||
|
return str(date.strftime("%d/%m/%Y"))
|
||||||
|
|
||||||
|
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',
|
||||||
|
'bac': ' Analisis de Cuentas',
|
||||||
|
'bml': ' Mayor Analitico'
|
||||||
|
}
|
||||||
|
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['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)])
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
def es_especial(self, periods):
|
||||||
|
period_obj = self.pool.get('account.period')
|
||||||
|
period_brws = period_obj.browse(self.cr, self.uid, periods)
|
||||||
|
tod=0
|
||||||
|
for p_b in period_brws:
|
||||||
|
if p_b.special:
|
||||||
|
tod = tod + 1
|
||||||
|
if tod == len(periods):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def calcular_debito_credito(self, account, form):
|
||||||
|
res = {}
|
||||||
|
if form['filter'] in ('bydate','none'):
|
||||||
|
#Para filtrar por 'fechas' o 'sin filtro', este porque se envia el año fiscal por fecha.
|
||||||
|
where = """ and aml.date between '%s' and '%s'"""%(form['date_from'],form['date_to'])
|
||||||
|
elif form['filter'] == 'byperiod':
|
||||||
|
#Para filtrar por periodos
|
||||||
|
periodos = str(form['periods']).replace("[","(").replace("]",")")
|
||||||
|
where = """ and aml.period_id in %s"""%(periodos)
|
||||||
|
else:
|
||||||
|
#Para filtrar por periodos y fechas
|
||||||
|
periodos = str(form['periods']).replace("[","(").replace("]",")")
|
||||||
|
where = """ and aml.period_id in %s and aml.date between '%s' and '%s'"""%(periodos,form['date_from'],form['date_to'])
|
||||||
|
if form.get('state'):
|
||||||
|
estado = " and am.state = '%s'"%form['state']
|
||||||
|
where = where + estado
|
||||||
|
|
||||||
|
analytic_list = str(form['analytic_list']).replace("[","(").replace("]",")")
|
||||||
|
where = where + " and aaa.id in " + analytic_list
|
||||||
|
|
||||||
|
account_list = str(account).replace("[","(").replace("]",")")
|
||||||
|
where = where + " and aa.id in " + account_list
|
||||||
|
|
||||||
|
sql_saldos = """select aml.account_id as id,
|
||||||
|
COALESCE(SUM(aml.debit), 0) as debit,
|
||||||
|
COALESCE(SUM(aml.credit), 0) as credit
|
||||||
|
from account_move_line aml
|
||||||
|
inner join account_analytic_account aaa on aml.analytic_account_id = aaa.id
|
||||||
|
inner join account_journal aj on aj.id = aml.journal_id
|
||||||
|
inner join account_account aa on aa.id = aml.account_id
|
||||||
|
inner join account_period ap on ap.id = aml.period_id
|
||||||
|
inner join account_move am on am.id = aml.move_id
|
||||||
|
where aml.state <> 'draft'""" + where + \
|
||||||
|
""" group by aml.account_id"""
|
||||||
|
|
||||||
|
self.cr.execute(sql_saldos)
|
||||||
|
resultat = self.cr.dictfetchall()
|
||||||
|
|
||||||
|
for det in resultat:
|
||||||
|
res[det['id']] = {
|
||||||
|
'debit': det['debit'],
|
||||||
|
'credit': det['credit'],
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
|
||||||
|
def _get_analisis_cuenta_analitica(self, account, form):
|
||||||
|
res = []
|
||||||
|
if form['filter'] in ('bydate','none'):
|
||||||
|
#Para filtrar por 'fechas' o 'sin filtro', este porque se envia el año fiscal por fecha.
|
||||||
|
where = """ and aml.date between '%s' and '%s'"""%(form['date_from'],form['date_to'])
|
||||||
|
elif form['filter'] == 'byperiod':
|
||||||
|
#Para filtrar por periodos
|
||||||
|
periodos = str(form['periods']).replace("[","(").replace("]",")")
|
||||||
|
where = """ and aml.period_id in %s"""%(periodos)
|
||||||
|
else:
|
||||||
|
#Para filtrar por periodos y fechas
|
||||||
|
periodos = str(form['periods']).replace("[","(").replace("]",")")
|
||||||
|
where = """ and aml.period_id in %s and aml.date between '%s' and '%s'"""%(periodos,form['date_from'],form['date_to'])
|
||||||
|
if form.get('state'):
|
||||||
|
estado = " and am.state = '%s'"%form['state']
|
||||||
|
where = where + estado
|
||||||
|
|
||||||
|
where = where + " and aa.id = '%s'"%(account['id'])
|
||||||
|
analytic_list = str(form['analytic_list']).replace("[","(").replace("]",")")
|
||||||
|
where = where + " and aaa.id in " + analytic_list
|
||||||
|
|
||||||
|
sql_detalle = """select aml.id as id, aj.name as diario,
|
||||||
|
aa.name as descripcion,
|
||||||
|
(select name from res_partner where aml.partner_id = id) as partner,
|
||||||
|
aa.code as cuenta, aml.name || ' -- Ref: ' || aml.ref as ref,
|
||||||
|
case when aml.debit is null then 0.00 else aml.debit end as debit,
|
||||||
|
case when aml.credit is null then 0.00 else aml.credit end as credit,
|
||||||
|
aml.date as fecha, ap.name as periodo,
|
||||||
|
aaa.code as analitica
|
||||||
|
from account_move_line aml
|
||||||
|
inner join account_analytic_account aaa on aml.analytic_account_id = aaa.id
|
||||||
|
inner join account_journal aj on aj.id = aml.journal_id
|
||||||
|
inner join account_account aa on aa.id = aml.account_id
|
||||||
|
inner join account_period ap on ap.id = aml.period_id
|
||||||
|
inner join account_move am on am.id = aml.move_id
|
||||||
|
where aml.state <> 'draft'""" + where + \
|
||||||
|
""" order by analitica, fecha"""
|
||||||
|
|
||||||
|
self.cr.execute(sql_detalle)
|
||||||
|
resultat = self.cr.dictfetchall()
|
||||||
|
balance = account['balanceinit']
|
||||||
|
|
||||||
|
for det in resultat:
|
||||||
|
balance += det['debit'] - det['credit']
|
||||||
|
res.append({
|
||||||
|
'id': det['id'],
|
||||||
|
'date': det['fecha'],
|
||||||
|
'journal':det['diario'],
|
||||||
|
'ref': det['ref'],
|
||||||
|
'debit': det['debit'],
|
||||||
|
'credit': det['credit'],
|
||||||
|
'analytic': det['analitica'],
|
||||||
|
'period': det['periodo'],
|
||||||
|
'balance': balance,
|
||||||
|
})
|
||||||
|
return res
|
||||||
|
|
||||||
|
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 = {}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
if ctx['filter'] not in ['bydate','none']:
|
||||||
|
especial = self.es_especial(form['periods'])
|
||||||
|
else:
|
||||||
|
especial = False
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
if especial:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods'])])
|
||||||
|
else:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods']), ('special','=',False)])
|
||||||
|
|
||||||
|
if form['filter'] in ['bydate','all','none']:
|
||||||
|
ctx['date_from'] = form['date_from']
|
||||||
|
ctx['date_to'] = form['date_to']
|
||||||
|
|
||||||
|
accounts=[]
|
||||||
|
|
||||||
|
val = account_obj.browse(self.cr, self.uid, [aa_id[0] for aa_id in account_ids], ctx)
|
||||||
|
|
||||||
|
"""DESDE AQUI VOY A COMENZAR A CAMBIAR"""
|
||||||
|
#Extraer cuentas que no son tipo vista
|
||||||
|
cuenta_ids = {}
|
||||||
|
for cue in val:
|
||||||
|
if cue.type != 'view':
|
||||||
|
cuenta_ids[cue.id] = cue
|
||||||
|
account_ids = self.calcular_debito_credito(cuenta_ids.keys(), form)
|
||||||
|
|
||||||
|
if account_ids != {}:
|
||||||
|
for acc in account_ids.keys():
|
||||||
|
new_acc = {
|
||||||
|
'id' :acc,
|
||||||
|
'type' :cuenta_ids[acc].type,
|
||||||
|
'code' :str(cuenta_ids[acc].code),
|
||||||
|
'name' :cuenta_ids[acc].name.upper(),
|
||||||
|
'parent_id' :cuenta_ids[acc].parent_id and cuenta_ids[acc].parent_id.id,
|
||||||
|
'level' :cuenta_ids[acc].level,
|
||||||
|
'label' :True,
|
||||||
|
'total' :True,
|
||||||
|
'debit' :account_ids[acc]['debit'],
|
||||||
|
'credit' :account_ids[acc]['credit'],
|
||||||
|
}
|
||||||
|
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)])
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# 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()
|
||||||
|
if form.get('state'):
|
||||||
|
ctx['state'] = form['state']
|
||||||
|
|
||||||
|
if form.get('analytic_list'):
|
||||||
|
ctx['analytic_list'] = form['analytic_list']
|
||||||
|
|
||||||
|
ctx['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
|
||||||
|
if form['filter'] in ['byperiod']:
|
||||||
|
ctx['periods'] = form['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)])
|
||||||
|
if not ctx['periods']:
|
||||||
|
missing_period()
|
||||||
|
elif form['filter'] in ['bydate', 'all']:
|
||||||
|
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['filter'] == 'none':
|
||||||
|
ctx['date_from'] = form['date_from']
|
||||||
|
ctx['date_to'] = form['date_to']
|
||||||
|
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)])
|
||||||
|
|
||||||
|
for acc in accounts:
|
||||||
|
if especial:
|
||||||
|
acc['balanceinit'] = 0.0
|
||||||
|
acc['balance'] = acc['debit'] - acc['credit']
|
||||||
|
else:
|
||||||
|
account_ids_ant = self.calcular_debito_credito([acc['id']], ctx)
|
||||||
|
if account_ids_ant != {}:
|
||||||
|
acc['balanceinit'] = account_ids_ant[acc['id']]['debit'] - account_ids_ant[acc['id']]['credit']
|
||||||
|
acc['balance'] = acc['balanceinit'] + acc['debit'] - acc['credit']
|
||||||
|
else:
|
||||||
|
acc['balanceinit'] = 0.0
|
||||||
|
acc['balance'] = acc['debit'] - acc['credit']
|
||||||
|
|
||||||
|
for acc_anl in accounts:
|
||||||
|
acc_anl['analisis'] = self._get_analisis_cuenta_analitica(acc_anl,form)
|
||||||
|
accounts.sort(key=lambda x: x['code'])
|
||||||
|
|
||||||
|
return accounts
|
||||||
|
|
||||||
|
report_sxw.report_sxw('report.wizard.reporte.comprobacion.analisis.cuentas', 'wizard.reporte.comprobacion', 'l10n_ve_account_financial_report/report/analisis_cuentas.rml', parser=account_analisis_cuentas, header=False)
|
|
@ -0,0 +1,329 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
###########################################################################
|
||||||
|
# Module Writen to OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||||
|
# All Rights Reserved
|
||||||
|
###############Credits######################################################
|
||||||
|
# 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):
|
||||||
|
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['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)])
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
def es_especial(self, periods):
|
||||||
|
period_obj = self.pool.get('account.period')
|
||||||
|
period_brws = period_obj.browse(self.cr, self.uid, periods)
|
||||||
|
tod=0
|
||||||
|
for p_b in period_brws:
|
||||||
|
if p_b.special:
|
||||||
|
tod = tod + 1
|
||||||
|
if tod == len(periods):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
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 = {}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
#~ ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
|
||||||
|
if ctx['filter'] not in ['bydate','none']:
|
||||||
|
especial = self.es_especial(form['periods'])
|
||||||
|
else:
|
||||||
|
especial = False
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
if especial:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods'])])
|
||||||
|
else:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods']),('special','=',False)])
|
||||||
|
|
||||||
|
if form['filter'] in ['bydate','all','none']:
|
||||||
|
ctx['date_from'] = form['date_from']
|
||||||
|
ctx['date_to'] = form['date_to']
|
||||||
|
|
||||||
|
accounts=[]
|
||||||
|
|
||||||
|
val = account_obj.browse(self.cr, self.uid, [aa_id[0] for aa_id in account_ids], ctx)
|
||||||
|
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
|
||||||
|
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)])
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# 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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
ctx['periods'] = form['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)])
|
||||||
|
if not ctx['periods']:
|
||||||
|
missing_period()
|
||||||
|
elif form['filter'] 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['filter'] == '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):
|
||||||
|
if especial:
|
||||||
|
period_balanceinit[acc['id']] = 0.0
|
||||||
|
else:
|
||||||
|
period_balanceinit[acc['id']] = acc.balance
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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'] == 'con_movimiento' and account['parent_id']:
|
||||||
|
# Include accounts with movements
|
||||||
|
if abs(res['debit']) >= 0.5 * 10**-int(2) or abs(res['credit']) >= 0.5 * 10**-int(2):
|
||||||
|
result_acc.append(res)
|
||||||
|
elif form['display_account'] == 'con_balance' 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)
|
||||||
|
|
||||||
|
return result_acc
|
||||||
|
|
||||||
|
report_sxw.report_sxw('report.wizard.reporte.comprobacion.un.col',
|
||||||
|
'account.account',
|
||||||
|
'l10n_ve_account_financial_report/report/balance_full.rml',
|
||||||
|
parser=account_balance,
|
||||||
|
header=False)
|
|
@ -0,0 +1,269 @@
|
||||||
|
# -*- 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['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)])
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
|
||||||
|
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 = {}
|
||||||
|
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'][0][2]
|
||||||
|
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 period Debit/Credit
|
||||||
|
# (from the selected period or all the non special periods in the fy)
|
||||||
|
#
|
||||||
|
ctx = self.context.copy()
|
||||||
|
print "CTX = %s\nY\nFORM = %s"%(ctx,form)
|
||||||
|
ctx['filter'] = form.get('filter','all')
|
||||||
|
#~ ctx['filter'] = form['context'].get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
print "PERIODS ",form['periods']
|
||||||
|
#~ ctx['periods'] = form['periods'][0][2]
|
||||||
|
ctx['periods'] = form['periods']
|
||||||
|
if form['filter'] 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
|
||||||
|
# continue
|
||||||
|
|
||||||
|
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'] == 'con_movimiento' and account['parent_id']:
|
||||||
|
# Include accounts with movements
|
||||||
|
if abs(res['credit']-res['debit']) >= 0.5 * 10**-int(2) \
|
||||||
|
or abs(res['credit']) >= 0.5 * 10**-int(2) \
|
||||||
|
or abs(res['debit']) >= 0.5 * 10**-int(2):
|
||||||
|
result_acc.append(res)
|
||||||
|
elif form['display_account'] == 'con_balance' and account['parent_id']:
|
||||||
|
# Include accounts with balance
|
||||||
|
if abs(res['credit']-res['debit']) >= 0.5 * 10**-int(2):
|
||||||
|
result_acc.append(res)
|
||||||
|
else:
|
||||||
|
# Include all account
|
||||||
|
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.wizard.reporte.comprobacion.dos.col',
|
||||||
|
'account.account',
|
||||||
|
'l10n_ve_account_financial_report/report/balance_full_2_cols.rml',
|
||||||
|
parser=account_balance,
|
||||||
|
header=False)
|
|
@ -0,0 +1,334 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
###########################################################################
|
||||||
|
# Module Writen to OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||||
|
# All Rights Reserved
|
||||||
|
###############Credits######################################################
|
||||||
|
# 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):
|
||||||
|
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['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)])
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
def es_especial(self, periods):
|
||||||
|
period_obj = self.pool.get('account.period')
|
||||||
|
period_brws = period_obj.browse(self.cr, self.uid, periods)
|
||||||
|
tod=0
|
||||||
|
for p_b in period_brws:
|
||||||
|
if p_b.special:
|
||||||
|
tod = tod + 1
|
||||||
|
if tod == len(periods):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
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 = {}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
#~ ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
|
||||||
|
if ctx['filter'] not in ['bydate','none']:
|
||||||
|
especial = self.es_especial(form['periods'])
|
||||||
|
else:
|
||||||
|
especial = False
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
if especial:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods'])])
|
||||||
|
else:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods']),('special','=',False)])
|
||||||
|
|
||||||
|
if form['filter'] in ['bydate','all','none']:
|
||||||
|
ctx['date_from'] = form['date_from']
|
||||||
|
ctx['date_to'] = form['date_to']
|
||||||
|
|
||||||
|
if form.get('state'):
|
||||||
|
ctx['state'] = form['state']
|
||||||
|
|
||||||
|
accounts=[]
|
||||||
|
|
||||||
|
val = account_obj.browse(self.cr, self.uid, [aa_id[0] for aa_id in account_ids], ctx)
|
||||||
|
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
|
||||||
|
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)])
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# 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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
ctx['periods'] = form['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)])
|
||||||
|
if not ctx['periods']:
|
||||||
|
missing_period()
|
||||||
|
elif form['filter'] 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['filter'] == '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):
|
||||||
|
if especial:
|
||||||
|
period_balanceinit[acc['id']] = 0.0
|
||||||
|
else:
|
||||||
|
period_balanceinit[acc['id']] = acc.balance
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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'] == 'con_movimiento' and account['parent_id']:
|
||||||
|
# Include accounts with movements
|
||||||
|
if abs(res['debit']) >= 0.5 * 10**-int(2) or abs(res['credit']) >= 0.5 * 10**-int(2):
|
||||||
|
result_acc.append(res)
|
||||||
|
elif form['display_account'] == 'con_balance' 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)
|
||||||
|
|
||||||
|
return result_acc
|
||||||
|
|
||||||
|
report_sxw.report_sxw('report.wizard.reporte.comprobacion.cuatro.col',
|
||||||
|
'wizard.reporte.comprobacion',
|
||||||
|
'l10n_ve_account_financial_report/report/balance_full_4_cols_h.rml',
|
||||||
|
parser=account_balance,
|
||||||
|
header=False)
|
|
@ -0,0 +1,398 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
###########################################################################
|
||||||
|
# Module Writen to OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) OpenERP Venezuela (<http://openerp.com.ve>).
|
||||||
|
# All Rights Reserved
|
||||||
|
###############Credits######################################################
|
||||||
|
# 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_mayor_analitico(report_sxw.rml_parse):
|
||||||
|
|
||||||
|
def __init__(self, cr, uid, name, context):
|
||||||
|
super(account_mayor_analitico, 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,
|
||||||
|
'set_fecha': self.set_fecha,
|
||||||
|
})
|
||||||
|
self.context = context
|
||||||
|
|
||||||
|
def set_fecha(self, fecha):
|
||||||
|
f = fecha.split('-')
|
||||||
|
date = datetime.date(int(f[0]),int(f[1]),int(f[2]))
|
||||||
|
return str(date.strftime("%d/%m/%Y"))
|
||||||
|
|
||||||
|
def _get_mayor_detalle(self, account, form):
|
||||||
|
res = []
|
||||||
|
|
||||||
|
if account['type'] != 'view':
|
||||||
|
if form['filter'] in ('bydate','none'):
|
||||||
|
#Para filtrar por 'fechas' o 'sin filtro', este porque se envia el año fiscal por fecha.
|
||||||
|
where = """where aml.date between '%s' and '%s' and aa.id = %s and aml.state <> 'draft'"""%(form['date_from'],form['date_to'],account['id'])
|
||||||
|
elif form['filter'] == 'byperiod':
|
||||||
|
#Para filtrar por periodos
|
||||||
|
periodos = str(form['periods']).replace("[","(").replace("]",")")
|
||||||
|
where = """where aml.period_id in %s and aa.id = %s and aml.state <> 'draft'"""%(periodos,account['id'])
|
||||||
|
else:
|
||||||
|
#Para filtrar por periodos y fechas
|
||||||
|
periodos = str(form['periods']).replace("[","(").replace("]",")")
|
||||||
|
where = """where aml.period_id in %s and aml.date between '%s' and '%s' and aa.id = %s and aml.state <> 'draft'"""%(periodos,form['date_from'],form['date_to'],account['id'])
|
||||||
|
if form.get('state'):
|
||||||
|
estado = " and am.state = '%s'"%form['state']
|
||||||
|
where = where + estado
|
||||||
|
sql_detalle = """select aml.id as id, aj.name as diario, aa.name as descripcion,
|
||||||
|
(select name from res_partner where aml.partner_id = id) as partner,
|
||||||
|
aa.code as cuenta, aml.name as name,
|
||||||
|
aml.ref as ref,
|
||||||
|
case when aml.debit is null then 0.00 else aml.debit end as debit,
|
||||||
|
case when aml.credit is null then 0.00 else aml.credit end as credit,
|
||||||
|
(select code from account_analytic_account where aml.analytic_account_id = id) as analitica,
|
||||||
|
aml.date as fecha, ap.name as periodo,
|
||||||
|
am.name as asiento
|
||||||
|
from account_move_line aml
|
||||||
|
inner join account_journal aj on aj.id = aml.journal_id
|
||||||
|
inner join account_account aa on aa.id = aml.account_id
|
||||||
|
inner join account_period ap on ap.id = aml.period_id
|
||||||
|
inner join account_move am on am.id = aml.move_id """ + where +\
|
||||||
|
""" order by fecha"""
|
||||||
|
|
||||||
|
self.cr.execute(sql_detalle)
|
||||||
|
resultat = self.cr.dictfetchall()
|
||||||
|
balance = account['balanceinit']
|
||||||
|
#~ print balance
|
||||||
|
for det in resultat:
|
||||||
|
print "det", det
|
||||||
|
balance += det['debit'] - det['credit']
|
||||||
|
res.append({
|
||||||
|
'id': det['id'],
|
||||||
|
'date': det['fecha'],
|
||||||
|
'journal':det['diario'],
|
||||||
|
'partner':det['partner'],
|
||||||
|
'name':det['name'],
|
||||||
|
'entry':det['asiento'],
|
||||||
|
'ref': det['ref'],
|
||||||
|
'debit': det['debit'],
|
||||||
|
'credit': det['credit'],
|
||||||
|
'analytic': det['analitica'],
|
||||||
|
'period': det['periodo'],
|
||||||
|
'balance': balance,
|
||||||
|
})
|
||||||
|
return res
|
||||||
|
|
||||||
|
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',
|
||||||
|
'bml': ' Mayor Analitico'
|
||||||
|
}
|
||||||
|
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['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)])
|
||||||
|
|
||||||
|
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}
|
||||||
|
|
||||||
|
def es_especial(self, periods):
|
||||||
|
period_obj = self.pool.get('account.period')
|
||||||
|
period_brws = period_obj.browse(self.cr, self.uid, periods)
|
||||||
|
tod=0
|
||||||
|
for p_b in period_brws:
|
||||||
|
if p_b.special:
|
||||||
|
tod = tod + 1
|
||||||
|
if tod == len(periods):
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
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 = {}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
#~ ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id),('special','=',False)])
|
||||||
|
if ctx['filter'] not in ['bydate','none']:
|
||||||
|
especial = self.es_especial(form['periods'])
|
||||||
|
else:
|
||||||
|
especial = False
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
if especial:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods'])])
|
||||||
|
else:
|
||||||
|
ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods']),('special','=',False)])
|
||||||
|
|
||||||
|
if form['filter'] in ['bydate','all','none']:
|
||||||
|
ctx['date_from'] = form['date_from']
|
||||||
|
ctx['date_to'] = form['date_to']
|
||||||
|
|
||||||
|
if form.get('state'):
|
||||||
|
ctx['state'] = form['state']
|
||||||
|
|
||||||
|
accounts=[]
|
||||||
|
|
||||||
|
val = account_obj.browse(self.cr, self.uid, [aa_id[0] for aa_id in account_ids], ctx)
|
||||||
|
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
|
||||||
|
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)])
|
||||||
|
|
||||||
|
#############################################################################
|
||||||
|
# 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['filter'] = form.get('filter','all')
|
||||||
|
ctx['fiscalyear'] = fiscalyear.id
|
||||||
|
|
||||||
|
if form['filter'] in ['byperiod', 'all']:
|
||||||
|
ctx['periods'] = form['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)])
|
||||||
|
if not ctx['periods']:
|
||||||
|
missing_period()
|
||||||
|
elif form['filter'] 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['filter'] == '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):
|
||||||
|
if especial:
|
||||||
|
period_balanceinit[acc['id']] = 0.0
|
||||||
|
else:
|
||||||
|
period_balanceinit[acc['id']] = acc.balance
|
||||||
|
|
||||||
|
#
|
||||||
|
# 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'] == 'con_movimiento' and account['parent_id']:
|
||||||
|
# Include accounts with movements
|
||||||
|
if abs(res['debit']) >= 0.5 * 10**-int(2) or abs(res['credit']) >= 0.5 * 10**-int(2):
|
||||||
|
if res['type'] != 'view' and res['code']!='0':
|
||||||
|
res['mayor'] = self._get_mayor_detalle(res,form)
|
||||||
|
result_acc.append(res)
|
||||||
|
elif form['display_account'] == 'con_balance' and account['parent_id']:
|
||||||
|
# Include accounts with balance
|
||||||
|
if abs(res['balance']) >= 0.5 * 10**-4:
|
||||||
|
if res['type'] != 'view' and res['code']!='0':
|
||||||
|
res['mayor'] = self._get_mayor_detalle(res,form)
|
||||||
|
result_acc.append(res)
|
||||||
|
else:
|
||||||
|
# Include all accounts
|
||||||
|
if res['type'] != 'view' and res['code']!='0':
|
||||||
|
res['mayor'] = self._get_mayor_detalle(res,form)
|
||||||
|
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)
|
||||||
|
|
||||||
|
return result_acc
|
||||||
|
|
||||||
|
report_sxw.report_sxw('report.wizard.reporte.comprobacion.mayor.analitico', 'wizard.reporte.comprobacion', 'l10n_ve_account_financial_report/report/mayor_analitico.rml', parser=account_mayor_analitico, header=False)
|
|
@ -0,0 +1,228 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<document filename="test.pdf">
|
||||||
|
<template pageSize="(27.94cm,27.94cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||||
|
<pageTemplate id="first">
|
||||||
|
<frame id="first" x1="1.5cm" y1="1.5cm" width="24.0cm" height="25cm"/>
|
||||||
|
<pageGraphics>
|
||||||
|
<setFont name="Helvetica-Bold" size="9"/>
|
||||||
|
|
||||||
|
<!--COL 1-->
|
||||||
|
<drawString x="1.5cm" y="27.0cm">[[ company.name ]] RIF: [[ company.partner_id.vat[2] ]]-[[ company.partner_id.vat[3:-1] ]]-[[ company.partner_id.vat[-1] ]]</drawString>
|
||||||
|
<drawString x="20.7cm" 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="1.0cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||||
|
<drawString x="25.5cm" y="1.0cm">Page <pageNumber/></drawString>
|
||||||
|
|
||||||
|
<lineMode width="0.7"/>
|
||||||
|
<lines>1.3cm 26.9cm 26.5cm 26.9cm</lines>
|
||||||
|
<setFont name="Helvetica" size="8"/>
|
||||||
|
|
||||||
|
</pageGraphics>
|
||||||
|
|
||||||
|
</pageTemplate>
|
||||||
|
</template>
|
||||||
|
<stylesheet>
|
||||||
|
<blockTableStyle id="BODY_LINE">
|
||||||
|
<blockValign value="TOP"/>
|
||||||
|
<blockAlignment value="RIGHT"/>
|
||||||
|
<blockTopPadding length="1.0"/>
|
||||||
|
<blockBottomPadding length="1.0"/>
|
||||||
|
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,1" stop="-1,-1" thickness='0.25'/>
|
||||||
|
</blockTableStyle>
|
||||||
|
<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="RIGHT"/>
|
||||||
|
<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="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TOP_TITLE"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="9.0"
|
||||||
|
leftIndent="0.0"
|
||||||
|
alignment="LEFT"/>
|
||||||
|
<paraStyle name="TITLES"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="LEFT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
|
||||||
|
<paraStyle
|
||||||
|
name="TITLE_LEFT_ALIGN_NEW"
|
||||||
|
fontName="Courier"
|
||||||
|
fontSize="7.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle name="TITLES_NEW"
|
||||||
|
fontName="Courier"
|
||||||
|
fontSize="7.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="LEFT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
</stylesheet>
|
||||||
|
<images/>
|
||||||
|
<story>
|
||||||
|
<para>[[setLang(user.context_lang)]]</para>
|
||||||
|
<blockTable colWidths="23cm" style="TOP_TABLE" repeatRows="1">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TOP_TITLE">Año Fiscal: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Periodos: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Fecha Intervalo: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
<spacer length="0.5cm"/>
|
||||||
|
<section>
|
||||||
|
<para style="TITLE_LEFT_ALIGN"> [[ repeatIn(lines(data['form']), 'a') ]] </para>
|
||||||
|
<blockTable colWidths="3.0cm,7.0cm,4.0cm,4.0cm,4.0cm,4.0cm" style="BODY" repeatRows="1">
|
||||||
|
<tr noRowsplits="1">
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>Cuenta</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">Descripcion</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Inicial</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Debe</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Haber</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Final</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<i>[[a['label']==True and a['code'] or '' ]]</i>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">
|
||||||
|
<font>[[ a['type']=='view' and a['name'].upper() or a['name'].title() ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['balanceinit'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['debit'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['credit'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['balance'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
<section>
|
||||||
|
<blockTable colWidths="4.0cm,7.0cm,3.0cm,4.0cm,4.0cm,4.0cm" style="BODY_LINE" repeatRows="1">
|
||||||
|
[[ (a['type'] <> 'view') or removeParentNode('blockTable') ]]
|
||||||
|
<tr noRowsplits="1">
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>Fecha - Periodo</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">Referencia</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Cuenta Analitica</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Debe</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Haber</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Balance</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">[[ repeatIn(a['analisis'], 'm') ]]
|
||||||
|
<font>[[ set_fecha(m['date']) ]] - [[ m['period'] ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES_NEW">
|
||||||
|
<font>[[ m['ref'] ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ m['analytic'] ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ formatLang(m['debit'], digits=2) or '0,00' ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ formatLang(m['credit'], digits=2) or '0,00' ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ formatLang(m['balance'], digits=2) or '0,00' ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</story>
|
||||||
|
</document>
|
|
@ -0,0 +1,132 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<document filename="test.pdf">
|
||||||
|
<template pageSize="(27.94cm,27.94cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||||
|
<pageTemplate id="first">
|
||||||
|
<frame id="first" x1="1.5cm" y1="1.5cm" width="24.0cm" height="25cm"/>
|
||||||
|
<pageGraphics>
|
||||||
|
<setFont name="Helvetica-Bold" size="9"/>
|
||||||
|
|
||||||
|
<!--COL 1-->
|
||||||
|
<drawString x="1.5cm" y="27.0cm">[[ company.name ]] RIF: [[ company.partner_id.vat[2] ]]-[[ company.partner_id.vat[3:-1] ]]-[[ company.partner_id.vat[-1] ]]</drawString>
|
||||||
|
<drawString x="20.7cm" 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="1.0cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||||
|
<drawString x="25.5cm" y="1.0cm">Page <pageNumber/></drawString>
|
||||||
|
|
||||||
|
<lineMode width="0.7"/>
|
||||||
|
<lines>1.3cm 26.9cm 26.5cm 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"/>
|
||||||
|
-->
|
||||||
|
<blockAlignment value="RIGHT"/>
|
||||||
|
<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="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TITLE_CENTER_ALIGN"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="CENTER"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TOP_TITLE"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="9.0"
|
||||||
|
leftIndent="0.0"
|
||||||
|
alignment="LEFT"/>
|
||||||
|
<paraStyle name="TITLES"
|
||||||
|
fontName="Courier-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="23cm" style="TOP_TABLE" repeatRows="1">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TOP_TITLE">Año Fiscal: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Periodos: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Fecha Intervalo: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
|
||||||
|
<blockTable colWidths="4.0cm,10.0cm,6.0cm" style="BODY" repeatRows="1">
|
||||||
|
<tr noRowsplits="1">
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>Cuenta</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">Descripcion</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Actual</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['type']=='view' and a['name'].upper() or a['name'].title() ]]</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,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="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TOP_TITLE"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="9.0"
|
||||||
|
leftIndent="0.0"
|
||||||
|
alignment="LEFT"/>
|
||||||
|
<paraStyle name="TITLES"
|
||||||
|
fontName="Courier-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">Año Fiscal: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Periodos: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Fecha Intervalo: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
|
||||||
|
<blockTable colWidths="3.0cm,8.0cm,4.0cm,4.0cm" 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,151 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<document filename="test.pdf">
|
||||||
|
<template pageSize="(27.94cm,27.94cm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||||
|
<pageTemplate id="first">
|
||||||
|
<frame id="first" x1="1.5cm" y1="1.5cm" width="24.0cm" height="25cm"/>
|
||||||
|
<pageGraphics>
|
||||||
|
<setFont name="Helvetica-Bold" size="9"/>
|
||||||
|
|
||||||
|
<!--COL 1-->
|
||||||
|
<drawString x="1.5cm" y="27.0cm">[[ company.name ]] RIF: [[ company.partner_id.vat[2] ]]-[[ company.partner_id.vat[3:-1] ]]-[[ company.partner_id.vat[-1] ]]</drawString>
|
||||||
|
<drawString x="20.7cm" 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="1.0cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||||
|
<drawString x="25.5cm" y="1.0cm">Page <pageNumber/></drawString>
|
||||||
|
|
||||||
|
<lineMode width="0.7"/>
|
||||||
|
<lines>1.3cm 26.9cm 26.5cm 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"/>
|
||||||
|
-->
|
||||||
|
<blockAlignment value="RIGHT"/>
|
||||||
|
<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="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TOP_TITLE"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="9.0"
|
||||||
|
leftIndent="0.0"
|
||||||
|
alignment="LEFT"/>
|
||||||
|
<paraStyle name="TITLES"
|
||||||
|
fontName="Courier-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="23cm" style="TOP_TABLE" repeatRows="1">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TOP_TITLE">Año Fiscal: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Periodos: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Fecha Intervalo: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
|
||||||
|
<blockTable colWidths="3.0cm,7.0cm,4.0cm,4.0cm,4.0cm,4.0cm" style="BODY" repeatRows="1">
|
||||||
|
<tr noRowsplits="1">
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>Cuenta</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">Descripcion</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Anterior</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Debe</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Haber</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Actual</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['type']=='view' and a['name'].upper() or a['name'].title() ]]</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,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="Courier-Bold"
|
||||||
|
fontSize="7.5"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TOP_TITLE"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leftIndent="0.0"
|
||||||
|
alignment="LEFT"/>
|
||||||
|
<paraStyle name="TITLES"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="7.5"
|
||||||
|
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,245 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<document filename="test.pdf">
|
||||||
|
<template pageSize="(279.4mm,215.9mm)" title="Test" author="Martin Simon" allowSplitting="20" showBoundary="0">
|
||||||
|
<pageTemplate id="first">
|
||||||
|
<frame id="first" x1="10mm" y1="10mm" width="259.4mm" height="195.9mm"/>
|
||||||
|
<pageGraphics>
|
||||||
|
<setFont name="Helvetica-Bold" size="9"/>
|
||||||
|
|
||||||
|
<!--COL 1-->
|
||||||
|
<drawString x="1.5cm" y="21.0cm">[[ company.name ]] RIF: [[ company.partner_id.vat[2] ]]-[[ company.partner_id.vat[3:-1] ]]-[[ company.partner_id.vat[-1] ]]</drawString>
|
||||||
|
<drawString x="20.7cm" y="21.0cm">[[ get_inf_text(data['form']) ]] - [[ company.currency_id.name ]]</drawString>
|
||||||
|
|
||||||
|
<!--COL 2-->
|
||||||
|
<setFont name="Helvetica" size="8"/>
|
||||||
|
<drawString x="1.0cm" y="1.0cm"> [[ formatLang(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),date_time = True) ]]</drawString>
|
||||||
|
<drawString x="27.0cm" y="1.0cm">Page <pageNumber/></drawString>
|
||||||
|
|
||||||
|
<lineMode width="0.7"/>
|
||||||
|
<!-- <lines>1.3cm 26.9cm 26.5cm 26.9cm</lines> -->
|
||||||
|
<setFont name="Helvetica" size="8"/>
|
||||||
|
|
||||||
|
</pageGraphics>
|
||||||
|
|
||||||
|
</pageTemplate>
|
||||||
|
</template>
|
||||||
|
<stylesheet>
|
||||||
|
<blockTableStyle id="BODY_LINE">
|
||||||
|
<blockValign value="TOP"/>
|
||||||
|
<blockAlignment value="RIGHT"/>
|
||||||
|
<blockTopPadding length="1.0"/>
|
||||||
|
<blockBottomPadding length="1.0"/>
|
||||||
|
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,1" stop="-1,-1" thickness='0.25'/>
|
||||||
|
</blockTableStyle>
|
||||||
|
<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"/>
|
||||||
|
-->
|
||||||
|
<blockAlignment value="RIGHT"/>
|
||||||
|
<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="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle
|
||||||
|
name="TOP_TITLE"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="9.0"
|
||||||
|
leftIndent="0.0"
|
||||||
|
alignment="LEFT"/>
|
||||||
|
<paraStyle name="TITLES"
|
||||||
|
fontName="Courier-Bold"
|
||||||
|
fontSize="8.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="LEFT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
|
||||||
|
<paraStyle
|
||||||
|
name="TITLE_LEFT_ALIGN_NEW"
|
||||||
|
fontName="Courier"
|
||||||
|
fontSize="7.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="RIGHT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
<paraStyle name="TITLES_NEW"
|
||||||
|
fontName="Courier"
|
||||||
|
fontSize="7.0"
|
||||||
|
leading="10"
|
||||||
|
alignment="LEFT"
|
||||||
|
spaceBefore="0.0"
|
||||||
|
spaceAfter="0.0"/>
|
||||||
|
</stylesheet>
|
||||||
|
<images/>
|
||||||
|
<story>
|
||||||
|
<para>[[setLang(user.context_lang)]]</para>
|
||||||
|
<blockTable colWidths="23cm" style="TOP_TABLE" repeatRows="1">
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TOP_TITLE">Año Fiscal: [[ get_fiscalyear_text(data['form']) or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Periodos: [[ get_periods_and_date_text(data['form'])['periods'] or removeParentNode('para') ]]</para>
|
||||||
|
<para style="TOP_TITLE">Fecha Intervalo: [[ get_periods_and_date_text(data['form'])['date'] or removeParentNode('para') ]]</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<para style="TITLE_LEFT_ALIGN"> [[ repeatIn(lines(data['form']), 'a') ]] </para>
|
||||||
|
<blockTable colWidths="3.0cm,10.0cm,3.0cm,3.0cm,3.0cm,3.0cm" style="BODY" repeatRows="1">
|
||||||
|
<tr noRowsplits="1">
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>Cuenta</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">Descripcion</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Inicial</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Debe</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Haber</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Saldo Final</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<i>[[a['label']==True and a['code'] or '' ]]</i>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">
|
||||||
|
<font>[[ a['type']=='view' and a['name'].upper() or a['name'].title() ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['balanceinit'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['debit'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['credit'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>[[ (a['total']==True) and formatLang(a['balance'], digits=2, grouping=True) or '']]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
<section>
|
||||||
|
<blockTable colWidths="4.0cm,7.0cm,3.0cm,3.0cm,3.0cm,3.0cm,3.0cm" style="BODY_LINE" repeatRows="1">
|
||||||
|
[[ (a['type'] <> 'view') or removeParentNode('blockTable') ]]
|
||||||
|
<tr noRowsplits="1">
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">
|
||||||
|
<font>Fecha Periodo</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES">Referencia</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Asiento Diario</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Empresa</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Debe</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Haber</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN">Balance</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">[[ repeatIn(a['mayor'], 'm') ]]
|
||||||
|
<font>[[ set_fecha(m['date']) ]]</font>
|
||||||
|
</para>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ m['period'] ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLES_NEW">
|
||||||
|
<font>[[ m['name'] ]] [[ m['ref'] and (' - Ref %s'%m['ref']) or '' ]] </font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ m['entry'] ]]</font>
|
||||||
|
</para>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ m['journal'] ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ m['partner'] ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ formatLang(m['debit'], digits=2) or '0,00' ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ formatLang(m['credit'], digits=2) or '0,00' ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<para style="TITLE_LEFT_ALIGN_NEW">
|
||||||
|
<font>[[ formatLang(m['balance'], digits=2) or '0,00' ]]</font>
|
||||||
|
</para>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</blockTable>
|
||||||
|
</section>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
</story>
|
||||||
|
</document>
|
|
@ -0,0 +1,20 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
#############################################################################
|
||||||
|
# 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_libro_mayor_report
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,144 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Balance de Comprobacion
|
||||||
|
-->
|
||||||
|
<record id="wizard_reporte_comprobacion_view" model="ir.ui.view">
|
||||||
|
<field name="name">Wizard Report Balance</field>
|
||||||
|
<field name="model">wizard.reporte.comprobacion</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">
|
||||||
|
<field name="inf_type"/>
|
||||||
|
<field name="asentado"/>
|
||||||
|
</group>
|
||||||
|
<group colspan="4">
|
||||||
|
<separator string="Cuentas Contables a incluir" colspan="4"/>
|
||||||
|
<field name="account_list" nolabel="1" colspan="4" domain="[('company_id','=',company_id)]"/>
|
||||||
|
<newline/>
|
||||||
|
<field name="analytic_list" nolabel="1" colspan="4" domain="[('company_id','=',company_id),('type','!=','view')]" attrs="{'invisible':[('inf_type','<>','bac')]}"/>
|
||||||
|
<field name="display_account" required="True" attrs="{'invisible':[('inf_type','in',('bac','bml'))]}"/>
|
||||||
|
<field name="display_account_level" attrs="{'invisible':[('inf_type','in',('bac','bml'))],'required':[('inf_type','not in',('bac','bml'))]}"/>
|
||||||
|
</group>
|
||||||
|
<group colspan="4">
|
||||||
|
<separator string="Filtros" colspan="4"/>
|
||||||
|
<field name="fiscalyear" on_change="onchange_filter(fiscalyear,filter)"/>
|
||||||
|
<field name="filter" required="True"/>
|
||||||
|
<newline/>
|
||||||
|
<group attrs="{'invisible':[('filter','=','none')]}" colspan="4">
|
||||||
|
<group attrs="{'invisible':[('filter','=','byperiod')]}" colspan="4">
|
||||||
|
<separator string="Filtro por Fecha" colspan="4"/>
|
||||||
|
<field name="date_from" attrs="{'required':[('filter','in',('bydate','all'))]}"/>
|
||||||
|
<field name="date_to" attrs="{'required':[('filter','in',('bydate','all'))]}"/>
|
||||||
|
</group>
|
||||||
|
<group attrs="{'invisible':[('filter','=','bydate')]}" colspan="4">
|
||||||
|
<separator string="Filtro por Periodo" colspan="4"/>
|
||||||
|
<field name="periods" colspan="4" nolabel="1" domain="[('fiscalyear_id','=',fiscalyear)]"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group colspan="4" attrs="{'invisible':[('inf_type','in',('bml','bac'))]}">
|
||||||
|
<separator string="Total" colspan="4"/>
|
||||||
|
<field name="tot_check"/>
|
||||||
|
<field name="lab_str" attrs="{'required':[('tot_check','=','True'),('inf_type','not in',('bml','bac'))]}"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<button name="print_report" string="Print" type="object"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_wizard_reporte_comprobacion" model="ir.actions.act_window">
|
||||||
|
<field name="name">Reporte Balance Con Wizard</field>
|
||||||
|
<field name="res_model">wizard.reporte.comprobacion</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="view_id" ref="wizard_reporte_comprobacion_view"/>
|
||||||
|
<field name="target">new</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_wizard_reporte_comprobacion"
|
||||||
|
name="Mayor Analitico de Cuentas"
|
||||||
|
parent="account.final_accounting_reports"
|
||||||
|
sequence="99"
|
||||||
|
action="action_wizard_reporte_comprobacion"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Libro Mayor Analitico
|
||||||
|
|
||||||
|
|
||||||
|
<record id="wizard_reporte_mayor_analitico" model="ir.ui.view">
|
||||||
|
<field name="name">Wizard Reporte Mayor Analitico</field>
|
||||||
|
<field name="model">wizard.mayor.analitico</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Reporte Libro Mayor Analitico">
|
||||||
|
<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" on_change="onchange_filter(fiscalyear,filter)"/>
|
||||||
|
<newline/>
|
||||||
|
<field name="filter" required="True"/>
|
||||||
|
<newline/>
|
||||||
|
<group attrs="{'invisible':[('filter','=','none')]}" colspan="4">
|
||||||
|
<group attrs="{'invisible':[('filter','=','byperiod')]}" colspan="4">
|
||||||
|
<separator string="Date Filter" colspan="4"/>
|
||||||
|
<field name="date_from" attrs="{'required':[('filter','in',('bydate','all'))]}"/>
|
||||||
|
<field name="date_to" attrs="{'required':[('filter','in',('bydate','all'))]}"/>
|
||||||
|
</group>
|
||||||
|
<group attrs="{'invisible':[('filter','=','bydate')]}" colspan="4">
|
||||||
|
<separator string="Filter on Periods" colspan="4"/>
|
||||||
|
<field name="periods" colspan="4" nolabel="1" domain="[('fiscalyear_id','=',fiscalyear)]"
|
||||||
|
attrs="{'required':[('filter','in',('byperiod','all'))]}"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
<group colspan="4">
|
||||||
|
<separator string="Total" colspan="4"/>
|
||||||
|
<field name="tot_check"/>
|
||||||
|
<field name="lab_str"/>
|
||||||
|
<field name="inf_type"/>
|
||||||
|
</group>
|
||||||
|
<group>
|
||||||
|
<button name="print_report" string="Print" type="object"/>
|
||||||
|
</group>
|
||||||
|
</group>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="action_wizard_reporte_mayor_analitico" model="ir.actions.act_window">
|
||||||
|
<field name="name">Wizard Mayor Analitico</field>
|
||||||
|
<field name="res_model">wizard.mayor.analitico</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_mode">form</field>
|
||||||
|
<field name="view_id" ref="wizard_reporte_mayor_analitico"/>
|
||||||
|
<field name="target">new</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem
|
||||||
|
id="menu_wizard_reporte_mayor_analitico"
|
||||||
|
name="Libro Mayor Analitico"
|
||||||
|
parent="account.final_accounting_reports"
|
||||||
|
sequence="100"
|
||||||
|
action="action_wizard_reporte_mayor_analitico"/>
|
||||||
|
-->
|
||||||
|
</data>
|
||||||
|
</openerp>
|
|
@ -0,0 +1,153 @@
|
||||||
|
# -*- 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/>.
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
import wizard
|
||||||
|
import pooler
|
||||||
|
import time
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
options_form = '''<?xml version="1.0"?>
|
||||||
|
<form string="General Account Balance [ Debit | Credit ]">
|
||||||
|
<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"/>
|
||||||
|
|
||||||
|
</group>
|
||||||
|
</form>'''
|
||||||
|
|
||||||
|
options_fields = {
|
||||||
|
'company_id': {'string': 'Company', 'type': 'many2one', 'relation': 'res.company', 'required': True},
|
||||||
|
'account_list': {'string': 'Root accounts', 'type':'many2many', 'relation':'account.account', 'required':True ,'domain':[]},
|
||||||
|
'state':{
|
||||||
|
'string':"Date/Period Filter",
|
||||||
|
'type':'selection',
|
||||||
|
'selection':[('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],
|
||||||
|
'default': lambda *a:'none'
|
||||||
|
},
|
||||||
|
'fiscalyear': {
|
||||||
|
'string':'Fiscal year',
|
||||||
|
'type':'many2one',
|
||||||
|
'relation':'account.fiscalyear',
|
||||||
|
'help':'Keep empty to use all open fiscal years to compute the balance'
|
||||||
|
},
|
||||||
|
'periods': {'string': 'Periods', 'type': 'many2many', 'relation': 'account.period', 'help': 'All periods in the fiscal year if empty'},
|
||||||
|
'display_account':{'string':"Display accounts ", 'type':'selection', 'selection':[('bal_all','All'),('bal_solde', 'With balance'),('bal_mouvement','With movements')]},
|
||||||
|
'display_account_level':{'string':"Up to level", 'type':'integer', 'default': lambda *a: 0, 'help': 'Display accounts up to this level (0 to show all)'},
|
||||||
|
'date_from': {'string':"Start date", 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-01-01')},
|
||||||
|
'date_to': {'string':"End date", 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-%m-%d')},
|
||||||
|
'tot_check': {'string':'Show Total', 'type':'boolean'},
|
||||||
|
'lab_str': {'string': 'Description', 'type': 'char', 'size': 128},
|
||||||
|
'inf_type':{
|
||||||
|
'string':"Tipo Informe",
|
||||||
|
'type':'selection',
|
||||||
|
'selection':[('bgen','Balance General'),('bcom','Balance Comprobacion'),('edogp','Estado Ganancias y Perdidas')],
|
||||||
|
'default': lambda *a:'bgen',
|
||||||
|
'required':True
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class wizard_report(wizard.interface):
|
||||||
|
|
||||||
|
def _get_defaults(self, cr, uid, data, 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):
|
||||||
|
if data['form']['state'] == 'bydate':
|
||||||
|
self._check_date(cr, uid, data, context)
|
||||||
|
return data['form']
|
||||||
|
|
||||||
|
|
||||||
|
def _check_date(self, cr, uid, data, 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'))
|
||||||
|
|
||||||
|
|
||||||
|
states = {
|
||||||
|
|
||||||
|
'init': {
|
||||||
|
'actions': [_get_defaults],
|
||||||
|
'result': {'type':'form', 'arch': options_form, 'fields': options_fields, 'state':[('end','Cancel','gtk-cancel'),('report','Print','gtk-print')]}
|
||||||
|
},
|
||||||
|
'report': {
|
||||||
|
'actions': [_check_state],
|
||||||
|
'result': {'type':'print', 'report':'account.account.balance.gene.2', 'state':'end'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wizard_report('account.balance.gene.2.report')
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
from osv import osv,fields
|
||||||
|
from tools.translate import _
|
||||||
|
import pooler
|
||||||
|
import time
|
||||||
|
|
||||||
|
class wizard_reporte_comprobacion(osv.osv_memory):
|
||||||
|
_name = "wizard.reporte.comprobacion"
|
||||||
|
|
||||||
|
_columns = {
|
||||||
|
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||||
|
'account_list': fields.many2many ('account.account', 'rel_wizard_account', 'account_list', 'account_id', 'Cuentas Contables', required=True),
|
||||||
|
'filter': 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([('all','All'), ('con_balance', 'With balance'),('con_movimiento', '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'),
|
||||||
|
'date_to': fields.date('End date'),
|
||||||
|
'tot_check': fields.boolean('Show Total'),
|
||||||
|
'lab_str': fields.char('Description', size= 128),
|
||||||
|
'inf_type': fields.selection([('bml', 'Mayor Analitico')], 'Tipo Informe', required=True),
|
||||||
|
'asentado': fields.selection([('posted', 'Todos los asientos asentados'), ('todo', 'Todos los asientos')], 'Movimientos destino', required=True),
|
||||||
|
'analytic_list': fields.many2many('account.analytic.account', 'rel_wizard_account_analytic', 'analytic_list', 'account_analytic_id', 'Cuentas Analiticas'),
|
||||||
|
}
|
||||||
|
|
||||||
|
_defaults = {
|
||||||
|
'date_from': lambda *a: time.strftime('%Y-%m-%d'),
|
||||||
|
'date_to': lambda *a: time.strftime('%Y-%m-%d'),
|
||||||
|
'filter': lambda *a:'byperiod',
|
||||||
|
'display_account_level': lambda *a: 0,
|
||||||
|
'inf_type': lambda *a:'bml',
|
||||||
|
'company_id': lambda *a: 1,
|
||||||
|
'fiscalyear': lambda self, cr, uid, c: self.pool.get('account.fiscalyear').find(cr, uid),
|
||||||
|
'display_account': lambda *a:'con_movimiento',
|
||||||
|
'asentado': lambda *a:'todo',
|
||||||
|
}
|
||||||
|
|
||||||
|
def onchange_filter(self,cr,uid,ids,fiscalyear,filters,context=None):
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
res = {}
|
||||||
|
if filters in ("bydate","all"):
|
||||||
|
fisy = self.pool.get("account.fiscalyear")
|
||||||
|
fis_actual = fisy.browse(cr,uid,fiscalyear,context=context)
|
||||||
|
res = {'value':{'date_from': fis_actual.date_start, 'date_to': fis_actual.date_stop}}
|
||||||
|
return res
|
||||||
|
|
||||||
|
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']['filter'] == '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 = {}
|
||||||
|
|
||||||
|
if data['form']['date_from'] > data['form']['date_to']:
|
||||||
|
raise osv.except_osv(_('Error !'),('La fecha final debe ser mayor a la inicial'))
|
||||||
|
|
||||||
|
sql = """SELECT f.id, f.date_start, f.date_stop
|
||||||
|
FROM account_fiscalyear f
|
||||||
|
WHERE '%s' = f.id """%(data['form']['fiscalyear'])
|
||||||
|
cr.execute(sql)
|
||||||
|
res = cr.dictfetchall()
|
||||||
|
|
||||||
|
if res:
|
||||||
|
if (data['form']['date_to'] > res[0]['date_stop'] or data['form']['date_from'] < res[0]['date_start']):
|
||||||
|
raise osv.except_osv(_('UserError'),'Las fechas deben estar entre %s y %s' % (res[0]['date_start'], res[0]['date_stop']))
|
||||||
|
else:
|
||||||
|
return 'report'
|
||||||
|
else:
|
||||||
|
raise osv.except_osv(_('UserError'),'No existe periodo fiscal')
|
||||||
|
|
||||||
|
def esta_en_lista(self, cuenta_id, lista_cuentas):
|
||||||
|
for i in lista_cuentas:
|
||||||
|
if cuenta_id == i:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def limpiar_hijos(self, cr, uid, ids, data):
|
||||||
|
accounts = []
|
||||||
|
accounts = data
|
||||||
|
aa_obj = self.pool.get("account.account")
|
||||||
|
new_account_list = []
|
||||||
|
for aa_brw in aa_obj.browse(cr,uid,accounts):
|
||||||
|
eliminar = False
|
||||||
|
parent_id_cur = aa_brw.parent_id
|
||||||
|
while parent_id_cur:
|
||||||
|
if self.esta_en_lista(parent_id_cur.id, accounts):
|
||||||
|
parent_id_cur = False
|
||||||
|
eliminar = True
|
||||||
|
else:
|
||||||
|
parent_id_cur = parent_id_cur.parent_id
|
||||||
|
if not eliminar:
|
||||||
|
new_account_list.append(aa_brw.id)
|
||||||
|
return new_account_list
|
||||||
|
|
||||||
|
def todos_periodos(self, cr, uid, fiscalyear):
|
||||||
|
date = self.pool.get('account.fiscalyear').read(cr, uid, fiscalyear, ['date_start','date_stop'])
|
||||||
|
return date['date_start'],date['date_stop']
|
||||||
|
|
||||||
|
def get_cuentas_analiticas(self, cr, uid, lista_analitica):
|
||||||
|
if lista_analitica != []:
|
||||||
|
return lista_analitica
|
||||||
|
else:
|
||||||
|
return self.pool.get('account.analytic.account').search(cr, uid, [('type','<>','view')])
|
||||||
|
|
||||||
|
def print_report(self, cr, uid, ids, data, context=None):
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
data['ids'] = context.get('active_ids', [])
|
||||||
|
data['model'] = context.get('active_model', 'ir.ui.menu')
|
||||||
|
data['form'] = self.read(cr, uid, ids[0])
|
||||||
|
|
||||||
|
if data['form']['filter'] == 'byperiod':
|
||||||
|
if data['form']['periods'] == []:
|
||||||
|
raise osv.except_osv(_('Error !'),('Debe agregar al menos un periodo'))
|
||||||
|
del data['form']['date_from']
|
||||||
|
del data['form']['date_to']
|
||||||
|
elif data['form']['filter'] == 'bydate':
|
||||||
|
self._check_date(cr, uid, data)
|
||||||
|
del data['form']['periods']
|
||||||
|
elif data['form']['filter'] == 'none':
|
||||||
|
del data['form']['periods']
|
||||||
|
data['form']['date_from'],data['form']['date_to'] = self.todos_periodos(cr,uid,data['form']['fiscalyear'])
|
||||||
|
else:
|
||||||
|
if data['form']['periods'] == []:
|
||||||
|
raise osv.except_osv(_('Error !'),('Debe agregar al menos un periodo'))
|
||||||
|
self._check_date(cr, uid, data)
|
||||||
|
lis2 = str(data['form']['periods']).replace("[","(").replace("]",")")
|
||||||
|
sqlmm = """select min(p.date_start) as inicio, max(p.date_stop) as fin
|
||||||
|
from account_period p
|
||||||
|
where p.id in %s"""%lis2
|
||||||
|
cr.execute(sqlmm)
|
||||||
|
minmax = cr.dictfetchall()
|
||||||
|
if minmax:
|
||||||
|
if (data['form']['date_to'] < minmax[0]['inicio']) or (data['form']['date_from'] > minmax[0]['fin']):
|
||||||
|
raise osv.except_osv(_('Error !'),('La intersepcion entre el periodo y fecha es vacio'))
|
||||||
|
|
||||||
|
if data.has_key('form') and data['form']:
|
||||||
|
form = data['form']
|
||||||
|
if form.has_key('account_list') and form['account_list']:
|
||||||
|
form['account_list'] = self.limpiar_hijos(cr, uid, ids, form['account_list'])
|
||||||
|
|
||||||
|
if str(data['form']['asentado']).strip() == 'posted':
|
||||||
|
data['form']['state'] = 'posted'
|
||||||
|
del data['form']['asentado']
|
||||||
|
|
||||||
|
if data['form']['inf_type'] == 'bml':
|
||||||
|
data['form']['tot_check'] = False
|
||||||
|
data['form']['display_account_level'] = 0
|
||||||
|
data['form']['display_account'] = 'con_movimiento'
|
||||||
|
return {'type': 'ir.actions.report.xml', 'report_name': 'wizard.reporte.comprobacion.mayor.analitico', 'datas': data}
|
||||||
|
elif data['form']['inf_type'] == 'bac':
|
||||||
|
data['form']['tot_check'] = False
|
||||||
|
data['form']['display_account_level'] = 0
|
||||||
|
data['form']['display_account'] = 'con_movimiento'
|
||||||
|
data['form']['analytic_list'] = self.get_cuentas_analiticas(cr, uid,data['form']['analytic_list'])
|
||||||
|
return {'type': 'ir.actions.report.xml', 'report_name': 'wizard.reporte.comprobacion.analisis.cuentas', 'datas': data}
|
||||||
|
elif data['form']['inf_type'] == 'bgen':
|
||||||
|
return {'type': 'ir.actions.report.xml', 'report_name': 'wizard.reporte.comprobacion.un.col', 'datas': data}
|
||||||
|
else:
|
||||||
|
return {'type': 'ir.actions.report.xml', 'report_name': 'wizard.reporte.comprobacion.cuatro.col', 'datas': data}
|
||||||
|
|
||||||
|
wizard_reporte_comprobacion()
|
|
@ -0,0 +1,153 @@
|
||||||
|
# -*- 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 wizard
|
||||||
|
import pooler
|
||||||
|
import time
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
options_form = '''<?xml version="1.0"?>
|
||||||
|
<form string="General Account Balance [ Debit - Credit ] (One Column)">
|
||||||
|
<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"/>
|
||||||
|
|
||||||
|
</group>
|
||||||
|
</form>'''
|
||||||
|
|
||||||
|
options_fields = {
|
||||||
|
'company_id': {'string': 'Company', 'type': 'many2one', 'relation': 'res.company', 'required': True},
|
||||||
|
'account_list': {'string': 'Root accounts', 'type':'many2many', 'relation':'account.account', 'required':True ,'domain':[]},
|
||||||
|
'state':{
|
||||||
|
'string':"Date/Period Filter",
|
||||||
|
'type':'selection',
|
||||||
|
'selection':[('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],
|
||||||
|
'default': lambda *a:'none'
|
||||||
|
},
|
||||||
|
'fiscalyear': {
|
||||||
|
'string':'Fiscal year',
|
||||||
|
'type':'many2one',
|
||||||
|
'relation':'account.fiscalyear',
|
||||||
|
'help':'Keep empty to use all open fiscal years to compute the balance'
|
||||||
|
},
|
||||||
|
'periods': {'string': 'Periods', 'type': 'many2many', 'relation': 'account.period', 'help': 'All periods in the fiscal year if empty'},
|
||||||
|
'display_account':{'string':"Display accounts ", 'type':'selection', 'selection':[('bal_all','All'),('bal_solde', 'With balance'),('bal_mouvement','With movements')]},
|
||||||
|
'display_account_level':{'string':"Up to level", 'type':'integer', 'default': lambda *a: 0, 'help': 'Display accounts up to this level (0 to show all)'},
|
||||||
|
'date_from': {'string':"Start date", 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-01-01')},
|
||||||
|
'date_to': {'string':"End date", 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-%m-%d')},
|
||||||
|
'tot_check': {'string':'Show Total', 'type':'boolean'},
|
||||||
|
'lab_str': {'string': 'Description', 'type': 'char', 'size': 128},
|
||||||
|
'inf_type':{
|
||||||
|
'string':"Tipo Informe",
|
||||||
|
'type':'selection',
|
||||||
|
'selection':[('bgen','Balance General'),('bcom','Balance Comprobacion'),('edogp','Estado Ganancias y Perdidas')],
|
||||||
|
'default': lambda *a:'bgen',
|
||||||
|
'required':True
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class wizard_report(wizard.interface):
|
||||||
|
|
||||||
|
def _get_defaults(self, cr, uid, data, 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):
|
||||||
|
if data['form']['state'] == 'bydate':
|
||||||
|
self._check_date(cr, uid, data, context)
|
||||||
|
return data['form']
|
||||||
|
|
||||||
|
|
||||||
|
def _check_date(self, cr, uid, data, 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'))
|
||||||
|
|
||||||
|
|
||||||
|
states = {
|
||||||
|
|
||||||
|
'init': {
|
||||||
|
'actions': [_get_defaults],
|
||||||
|
'result': {'type':'form', 'arch': options_form, 'fields': options_fields, 'state':[('end','Cancel','gtk-cancel'),('report','Print','gtk-print')]}
|
||||||
|
},
|
||||||
|
'report': {
|
||||||
|
'actions': [_check_state],
|
||||||
|
'result': {'type':'print', 'report':'account.account.balance.gene', 'state':'end'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wizard_report('account.balance.gene.report')
|
||||||
|
|
|
@ -0,0 +1,128 @@
|
||||||
|
# -*- encoding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
import pooler
|
||||||
|
import time
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
options_form = '''<?xml version="1.0"?>
|
||||||
|
<form string="Full Account Balance">
|
||||||
|
<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>
|
||||||
|
</form>'''
|
||||||
|
|
||||||
|
options_fields = {
|
||||||
|
'company_id': {'string': 'Company', 'type': 'many2one', 'relation': 'res.company', 'required': True},
|
||||||
|
'account_list': {'string': 'Root accounts', 'type':'many2many', 'relation':'account.account', 'required':True ,'domain':[]},
|
||||||
|
'state':{
|
||||||
|
'string':"Date/Period Filter",
|
||||||
|
'type':'selection',
|
||||||
|
'selection':[('bydate','By Date'),('byperiod','By Period'),('all','By Date and Period'),('none','No Filter')],
|
||||||
|
'default': lambda *a:'none'
|
||||||
|
},
|
||||||
|
'fiscalyear': {
|
||||||
|
'string':'Fiscal year',
|
||||||
|
'type':'many2one',
|
||||||
|
'relation':'account.fiscalyear',
|
||||||
|
'help':'Keep empty to use all open fiscal years to compute the balance'
|
||||||
|
},
|
||||||
|
'periods': {'string': 'Periods', 'type': 'many2many', 'relation': 'account.period', 'help': 'All periods in the fiscal year if empty'},
|
||||||
|
'display_account':{'string':"Display accounts ", 'type':'selection', 'selection':[('bal_all','All'),('bal_solde', 'With balance'),('bal_mouvement','With movements')]},
|
||||||
|
'display_account_level':{'string':"Up to level", 'type':'integer', 'default': lambda *a: 0, 'help': 'Display accounts up to this level (0 to show all)'},
|
||||||
|
'date_from': {'string':"Start date", 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-01-01')},
|
||||||
|
'date_to': {'string':"End date", 'type':'date', 'required':True, 'default': lambda *a: time.strftime('%Y-%m-%d')},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class wizard_report(wizard.interface):
|
||||||
|
|
||||||
|
def _get_defaults(self, cr, uid, data, 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)
|
||||||
|
if (data['model'] == 'account.account'):
|
||||||
|
data['form']['account_list'] = data['ids']
|
||||||
|
data['form']['context'] = context
|
||||||
|
return data['form']
|
||||||
|
|
||||||
|
|
||||||
|
def _check_state(self, cr, uid, data, context):
|
||||||
|
if data['form']['state'] == 'bydate':
|
||||||
|
self._check_date(cr, uid, data, context)
|
||||||
|
return data['form']
|
||||||
|
|
||||||
|
|
||||||
|
def _check_date(self, cr, uid, data, 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'))
|
||||||
|
|
||||||
|
|
||||||
|
states = {
|
||||||
|
|
||||||
|
'init': {
|
||||||
|
'actions': [_get_defaults],
|
||||||
|
'result': {'type':'form', 'arch': options_form, 'fields': options_fields, 'state':[('end','Cancel','gtk-cancel'),('report','Print','gtk-print')]}
|
||||||
|
},
|
||||||
|
'report': {
|
||||||
|
'actions': [_check_state],
|
||||||
|
'result': {'type':'print', 'report':'account.balance.full', 'state':'end'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wizard_report('account.balance.full.report')
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<openerp>
|
||||||
|
<data>
|
||||||
|
<report
|
||||||
|
auto="False"
|
||||||
|
id="wizard_reporte_comprobacion_cuatro_col"
|
||||||
|
menu="True"
|
||||||
|
model="wizard.reporte.comprobacion"
|
||||||
|
name="wizard.reporte.comprobacion.cuatro.col"
|
||||||
|
rml="l10n_ve_account_financial_report/report/balance_full_4_cols_h.rml"
|
||||||
|
string="Balance de Comprobacion Cuatro Columnas"
|
||||||
|
header="False"
|
||||||
|
/>
|
||||||
|
<report
|
||||||
|
auto="False"
|
||||||
|
id="wizard_reporte_comprobacion_dos_col"
|
||||||
|
menu="True"
|
||||||
|
model="wizard.reporte.comprobacion"
|
||||||
|
name="wizard.reporte.comprobacion.dos.col"
|
||||||
|
rml="l10n_ve_account_financial_report/report/balance_full_2_cols.rml"
|
||||||
|
string="Balance de Comprobacion Dos Columnas"
|
||||||
|
header="False"
|
||||||
|
/>
|
||||||
|
<report
|
||||||
|
auto="False"
|
||||||
|
id="wizard_reporte_comprobacion_un_col"
|
||||||
|
menu="True"
|
||||||
|
model="wizard.reporte.comprobacion"
|
||||||
|
name="wizard.reporte.comprobacion.un.col"
|
||||||
|
rml="l10n_ve_account_financial_report/report/balance_full.rml"
|
||||||
|
string="Balance de Comprobacion Una Columna"
|
||||||
|
header="False"
|
||||||
|
/>
|
||||||
|
|
||||||
|
# Reporte mayor analitico
|
||||||
|
<report
|
||||||
|
auto="False"
|
||||||
|
id="wizard_mayor_analitico_reporte"
|
||||||
|
menu="False"
|
||||||
|
model="wizard.reporte.comprobacion"
|
||||||
|
name="wizard.reporte.comprobacion.mayor.analitico"
|
||||||
|
rml="l10n_ve_account_financial_report/report/mayor_analitico.rml"
|
||||||
|
string="Mayor Analitico"
|
||||||
|
header="False"
|
||||||
|
/>
|
||||||
|
|
||||||
|
# Reporte analisis de cuentas
|
||||||
|
<report
|
||||||
|
auto="False"
|
||||||
|
id="wizard_analisis_cuentas_reporte"
|
||||||
|
menu="False"
|
||||||
|
model="wizard.reporte.comprobacion"
|
||||||
|
name="wizard.reporte.comprobacion.analisis.cuentas"
|
||||||
|
rml="l10n_ve_account_financial_report/report/analisis_cuentas.rml"
|
||||||
|
string="Analisis de Cuentas"
|
||||||
|
header="False"
|
||||||
|
/>
|
||||||
|
</data>
|
||||||
|
</openerp>
|
Loading…
Reference in New Issue