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