[ADD] Added currency_id field, so that

now it is possible to get accounting 
reports in another currency other than
the company currency.

[IMP] Given that the new field was added
When no currency is selected the company currency 
is the default, is a different currency 
all the values will be expressed into that
new currency.

This behavior is now only available for
the four (4) columns report,

Will it be necessary to take into account which
date rate, the actual or another date for that
exchange.
6.0
Humberto Arocha 2012-06-21 01:40:14 -05:30
parent aa375e1810
commit 21a61c6b38
4 changed files with 35 additions and 6 deletions

View File

@ -55,6 +55,7 @@ class account_balance(report_sxw.rml_parse):
'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
@ -130,12 +131,36 @@ class account_balance(report_sxw.rml_parse):
return True
return False
def exchange_name(self, form):
self.from_currency_id = self.get_company_currency(form['company_id'] and form['company_id'][0])
if not form['currency_id']:
self.to_currency_id = self.from_currency_id
else:
self.to_currency_id = form['currency_id'] and form['currency_id'][0]
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, 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)
"""
self.from_currency_id = self.get_company_currency(form['company_id'] and form['company_id'][0])
if not form['currency_id']:
self.to_currency_id = self.from_currency_id
else:
self.to_currency_id = form['currency_id'] and form['currency_id'][0]
tot_bin = 0.0
tot_deb = 0.0
tot_crd = 0.0
@ -300,10 +325,10 @@ class account_balance(report_sxw.rml_parse):
'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'],
'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'],

View File

@ -26,7 +26,7 @@
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expresado en %s)'%( company.currency_id.name)) or '']]</para></td>
<td><para style="TITLE_CENTER">[[data['form'] and (' (Expresado en %s)'%( exchange_name(data['form']))) or '']]</para></td>
</tr>
<tr>
<td><para style="TOP_TITLE"></para></td>

View File

@ -8,8 +8,11 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="General Account Balance [ Initial | Debit | Credit | Balance ]">
<group width='800' height='600'>
<group>
<field name="company_id"/>
<group>
<field name="currency_id"/>
</group>
<newline/>
<group colspan="4">

View File

@ -48,6 +48,7 @@ class wizard_report(osv.osv_memory):
'lab_str': fields.char('Description', size= 128),
'inf_type': fields.selection([('bgen','Balance General'),('bcom','Balance Comprobacion'),('edogp','Estado Ganancias y Perdidas'),('bml','Libro Mayor Legal')],'Tipo Informe',required=True),
#~ 'type_report': fields.selection([('un_col','Una Columna'),('dos_col','Dos Columnas'),('cuatro_col','Cuatro Columnas')],'Tipo Informe',required=True),
'currency_id': fields.many2one('res.currency', 'Secondary Currency', help="Forces all values for this report to be expressed in this secondary currency."),
}
_defaults = {