INVOICE: use date for currency rate

bzr revid: ced-9130e666782075780281565b106300b7dff82dab
This commit is contained in:
ced 2007-01-02 08:19:17 +00:00
parent e8daf36a43
commit 2b6033cc8c
1 changed files with 9 additions and 5 deletions

View File

@ -38,10 +38,14 @@ import mx.DateTime
from mx.DateTime import RelativeDateTime, now, DateTime, localtime
class res_currency(osv.osv):
def _current_rate(self, cr, uid, ids, name, arg, context):
def _current_rate(self, cr, uid, ids, name, arg, context={}):
res={}
if 'date' in context:
date=context['date']
else:
date=time.strftime('%Y-%m-%d')
for id in ids:
cr.execute("SELECT currency_id, rate FROM res_currency_rate WHERE currency_id = %d AND name <= '%s' ORDER BY name desc LIMIT 1" % (id, time.strftime('%Y-%m-%d')))
cr.execute("SELECT currency_id, rate FROM res_currency_rate WHERE currency_id = %d AND name <= '%s' ORDER BY name desc LIMIT 1" % (id, date))
if cr.rowcount:
id, rate=cr.fetchall()[0]
res[id]=rate
@ -67,11 +71,11 @@ class res_currency(osv.osv):
def round(self, cr, uid, currency, amount):
return round(amount / currency.rounding) * currency.rounding
def compute(self, cr, uid, from_currency_id, to_currency_id, from_amount, round=True):
def compute(self, cr, uid, from_currency_id, to_currency_id, from_amount, round=True, context={}):
if to_currency_id==from_currency_id:
return from_amount
from_currency=self.browse(cr, uid, [from_currency_id])[0]
to_currency = self.browse(cr, uid, [to_currency_id])[0]
from_currency=self.browse(cr, uid, [from_currency_id], context=context)[0]
to_currency = self.browse(cr, uid, [to_currency_id], context=context)[0]
if from_currency['rate'] == 0 or to_currency['rate'] == 0:
raise osv.except_osv('Error', 'No rate found for the currency')
if round: