diff --git a/account_financial_report/report/account_balance.py b/account_financial_report/report/account_balance.py deleted file mode 100644 index 6cd3077c..00000000 --- a/account_financial_report/report/account_balance.py +++ /dev/null @@ -1,334 +0,0 @@ -# -*- encoding: utf-8 -*- -########################################################################### -# Module Writen to OpenERP, Open Source Management Solution -# Copyright (C) OpenERP Venezuela (). -# All Rights Reserved -###############Credits###################################################### -# Coded by: Humberto Arocha humberto@openerp.com.ve -# Angelica Barrios angelicaisabelb@gmail.com -# Jordi Esteve -# Javier Duran -# 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 . -############################################################################## - -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_informe_text': self.get_informe_text, - 'get_month':self.get_month, - 'exchange_name':self.exchange_name, - }) - self.context = context - - - def get_fiscalyear_text(self, form): - """ - Returns the fiscal year text used on the report. - """ - 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_month(self, form): - ''' - return day, year and month - ''' - if form['filter'] in ['bydate', 'all']: - months=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] - mes = months[time.strptime(form['date_to'],"%Y-%m-%d")[1]-1] - ano = time.strptime(form['date_to'],"%Y-%m-%d")[0] - dia = time.strptime(form['date_to'],"%Y-%m-%d")[2] - return 'Período del '+self.formatLang(form['date_from'], date=True)+' al '+self.formatLang(form['date_to'], date=True) - elif form['filter'] in ['byperiod', 'all']: - aux=[] - period_obj = self.pool.get('account.period') - - for period in period_obj.browse(self.cr, self.uid, form['periods']): - aux.append(period.date_start) - aux.append(period.date_stop) - sorted(aux) - return 'Período del '+self.formatLang(aux[0], date=True)+' al '+self.formatLang(aux[-1], date=True) - - 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 exchange_name(self, form): - self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id']) - if not form['currency_id']: - self.to_currency_id = self.from_currency_id - else: - self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id'] - return self.pool.get('res.currency').browse(self.cr, self.uid, self.to_currency_id).name - - def exchange(self, from_amount): - if self.from_currency_id == self.to_currency_id: - return from_amount - curr_obj = self.pool.get('res.currency') - return curr_obj.compute(self.cr, self.uid, self.from_currency_id, self.to_currency_id, from_amount) - - def get_company_currency(self, company_id): - rc_obj = self.pool.get('res.company') - return rc_obj.browse(self.cr, self.uid, company_id).currency_id.id - - - def lines(self, form, 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) - """ - - self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id']) - if not form['currency_id']: - self.to_currency_id = self.from_currency_id - else: - self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id'] - - tot_check = False - tot_eje = 0.0 - - 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 - if form.get('fiscalyear'): - if type(form.get('fiscalyear')) in (list,tuple): - fiscalyear = form['fiscalyear'] and form['fiscalyear'][0] - elif type(form.get('fiscalyear')) in (int,): - fiscalyear = form['fiscalyear'] - fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear) - - # - # 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, [('filter','=','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['filter'] = form.get('filter','all') - ctx['fiscalyear'] = fiscalyear.id - ctx['periods'] = period_obj.search(self.cr, self.uid, [('fiscalyear_id','=',fiscalyear.id)]) - if form['filter'] in ['byperiod', 'all']: - ctx['periods'] = form['periods'] - if form['filter'] in ['bydate', 'all']: - 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, - 'balance' :val[c].balance, - '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) - - # - # Generate the report lines (checking each account) - # - tot = {} - for account in accounts: - account_id = account['id'] - - # - # 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': self.exchange(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'] == 'con_movimiento' 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'] == 'con_balance' 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_check = True - tot[res['id']] = True - tot_eje += res['balance'] - if tot_check: - str_label = form['lab_str'] - res2 = { - 'type' : 'view', - 'name': 'TOTAL %s'%(str_label), - 'balance': self.exchange(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', - 'account_financial_report/report/balance_full.rml', - parser=account_balance, - header=False) diff --git a/account_financial_report/report/account_balance_2_cols.py b/account_financial_report/report/account_balance_2_cols.py deleted file mode 100644 index 669dc4ae..00000000 --- a/account_financial_report/report/account_balance_2_cols.py +++ /dev/null @@ -1,360 +0,0 @@ -# -*- encoding: utf-8 -*- -########################################################################### -# Module Writen to OpenERP, Open Source Management Solution -# Copyright (C) OpenERP Venezuela (). -# All Rights Reserved -###############Credits###################################################### -# Coded by: Humberto Arocha humberto@openerp.com.ve -# Angelica Barrios angelicaisabelb@gmail.com -# Jordi Esteve -# Javier Duran -# 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 . -############################################################################## - -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_informe_text': self.get_informe_text, - 'get_month':self.get_month, - 'exchange_name':self.exchange_name, - }) - self.context = context - - - def get_fiscalyear_text(self, form): - """ - Returns the fiscal year text used on the report. - """ - 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', - 'bdl' : 'Diario Legal' - } - return inf_type[form['inf_type']] - - def get_month(self, form): - ''' - return day, year and month - ''' - if form['filter'] in ['bydate', 'all']: - months=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] - mes = months[time.strptime(form['date_to'],"%Y-%m-%d")[1]-1] - ano = time.strptime(form['date_to'],"%Y-%m-%d")[0] - dia = time.strptime(form['date_to'],"%Y-%m-%d")[2] - return 'Período del '+self.formatLang(form['date_from'], date=True)+' al '+self.formatLang(form['date_to'], date=True) - elif form['filter'] in ['byperiod', 'all']: - aux=[] - period_obj = self.pool.get('account.period') - - for period in period_obj.browse(self.cr, self.uid, form['periods']): - aux.append(period.date_start) - aux.append(period.date_stop) - sorted(aux) - return 'Período del '+self.formatLang(aux[0], date=True)+' al '+self.formatLang(aux[-1], date=True) - - 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 exchange_name(self, form): - self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id']) - if not form['currency_id']: - self.to_currency_id = self.from_currency_id - else: - self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id'] - return self.pool.get('res.currency').browse(self.cr, self.uid, self.to_currency_id).name - - def exchange(self, from_amount): - if self.from_currency_id == self.to_currency_id: - return from_amount - curr_obj = self.pool.get('res.currency') - return curr_obj.compute(self.cr, self.uid, self.from_currency_id, self.to_currency_id, from_amount) - - def get_company_currency(self, company_id): - rc_obj = self.pool.get('res.company') - return rc_obj.browse(self.cr, self.uid, company_id).currency_id.id - - - - def lines(self, form, 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) - """ - - - self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id']) - if not form['currency_id']: - self.to_currency_id = self.from_currency_id - else: - self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id'] - - tot_check = False - tot_bin = 0.0 - tot_deb = 0.0 - tot_crd = 0.0 - tot_eje = 0.0 - - 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') - - if form.get('fiscalyear'): - if type(form.get('fiscalyear')) in (list,tuple): - fiscalyear = form['fiscalyear'] and form['fiscalyear'][0] - elif type(form.get('fiscalyear')) in (int,): - fiscalyear = form['fiscalyear'] - fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear) - # - # 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['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 form['filter'] in ['byperiod', 'all']: - ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx['periods']),('special','=',False)]) - if form['filter'] in ['bydate', 'all']: - 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): - period_balanceinit[acc['id']] = acc.balance - - # - # Generate the report lines (checking each account) - # - tot = {} - for account in accounts: - account_id = account['id'] - - 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': self.exchange(period_balanceinit[account_id]), - 'debit': self.exchange(account['debit']), - 'credit': self.exchange(account['credit']), - 'balance': self.exchange(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['balance']) >= 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_check = True - tot[res['id']] = True - tot_bin += res['balanceinit'] - tot_deb += res['debit'] - tot_crd += res['credit'] - tot_eje += res['balance'] - - if 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.account.account.balance.gene.2', - 'wizard.report.account.balance.gene.2', - 'account_financial_report/report/balance_full_2_cols.rml', - parser=account_balance, - header=False) diff --git a/account_financial_report/report/account_balance_4_cols.py b/account_financial_report/report/account_balance_4_cols.py deleted file mode 100644 index bb6eacaa..00000000 --- a/account_financial_report/report/account_balance_4_cols.py +++ /dev/null @@ -1,377 +0,0 @@ -# -*- encoding: utf-8 -*- -########################################################################### -# Module Writen to OpenERP, Open Source Management Solution -# Copyright (C) OpenERP Venezuela (). -# All Rights Reserved -###############Credits###################################################### -# Coded by: Humberto Arocha humberto@openerp.com.ve -# Angelica Barrios angelicaisabelb@gmail.com -# Jordi Esteve -# Javier Duran -# 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 . -############################################################################## - -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_informe_text': self.get_informe_text, - 'get_month':self.get_month, - 'exchange_name':self.exchange_name, - }) - self.context = context - - - def get_fiscalyear_text(self, form): - """ - Returns the fiscal year text used on the report. - """ - 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': 'Libro Mayor Legal' - } - return inf_type[form['inf_type']] - - def get_month(self, form): - ''' - return day, year and month - ''' - if form['filter'] in ['bydate', 'all']: - months=["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"] - mes = months[time.strptime(form['date_to'],"%Y-%m-%d")[1]-1] - ano = time.strptime(form['date_to'],"%Y-%m-%d")[0] - dia = time.strptime(form['date_to'],"%Y-%m-%d")[2] - return 'Período del '+self.formatLang(form['date_from'], date=True)+' al '+self.formatLang(form['date_to'], date=True) - elif form['filter'] in ['byperiod', 'all']: - aux=[] - period_obj = self.pool.get('account.period') - - for period in period_obj.browse(self.cr, self.uid, form['periods']): - aux.append(period.date_start) - aux.append(period.date_stop) - sorted(aux) - return 'Período del '+self.formatLang(aux[0], date=True)+' al '+self.formatLang(aux[-1], date=True) - - 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 special_period(self, periods): - period_obj = self.pool.get('account.period') - period_brw = period_obj.browse(self.cr, self.uid, periods) - period_counter = [True for i in period_brw if not i.special] - if not period_counter: - return True - return False - - def exchange_name(self, form): - self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id']) - if not form['currency_id']: - self.to_currency_id = self.from_currency_id - else: - self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id'] - name = self.pool.get('res.currency').browse(self.cr, self.uid, self.to_currency_id).name - return self.pool.get('res.currency').browse(self.cr, self.uid, self.to_currency_id).name - - def exchange(self, from_amount): - if self.from_currency_id == self.to_currency_id: - return from_amount - curr_obj = self.pool.get('res.currency') - return curr_obj.compute(self.cr, self.uid, self.from_currency_id, self.to_currency_id, from_amount) - - def get_company_currency(self, company_id): - rc_obj = self.pool.get('res.company') - return rc_obj.browse(self.cr, self.uid, company_id).currency_id.id - - def lines(self, form, 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) - """ - self.from_currency_id = self.get_company_currency(form['company_id'] and type(form['company_id']) in (list,tuple) and form['company_id'][0] or form['company_id']) - if not form['currency_id']: - self.to_currency_id = self.from_currency_id - else: - self.to_currency_id = form['currency_id'] and type(form['currency_id']) in (list, tuple) and form['currency_id'][0] or form['currency_id'] - tot_check = False - tot_bin = 0.0 - tot_deb = 0.0 - tot_crd = 0.0 - tot_eje = 0.0 - - 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') - - if form.get('fiscalyear'): - if type(form.get('fiscalyear')) in (list,tuple): - fiscalyear = form['fiscalyear'] and form['fiscalyear'][0] - elif type(form.get('fiscalyear')) in (int,): - fiscalyear = form['fiscalyear'] - fiscalyear = fiscalyear_obj.browse(self.cr, self.uid, fiscalyear) - - # - # 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['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']: - special = self.special_period(form['periods']) - else: - special = False - - if form['filter'] in ['byperiod', 'all']: - if special: - ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx.get('periods',False))]) - else: - ctx['periods'] = period_obj.search(self.cr, self.uid, [('id','in',form['periods'] or ctx.get('periods',False)),('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 special: - 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'] - - 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': self.exchange(period_balanceinit[account_id]), - 'debit': self.exchange(account['debit']), - 'credit': self.exchange(account['credit']), - 'balance': self.exchange(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_check = True - tot[res['id']] = True - tot_bin += res['balanceinit'] - tot_deb += res['debit'] - tot_crd += res['credit'] - tot_eje += res['balance'] - - #if (form['tot_check'] and res['type']=='view' and res['level']==1 and (res['id'] not in tot)): - if 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.report.reporte', - 'wizard.report', - 'account_financial_report/report/balance_full_4_cols.rml', - parser=account_balance, - header=False)