From 28832dcd82990637cdec9651c52bd848db0f8ec4 Mon Sep 17 00:00:00 2001 From: "Quentin (OpenERP)" Date: Thu, 22 Mar 2012 15:55:39 +0100 Subject: [PATCH] [FIX] account_voucher: computation of paid_amount_in_company_currency field lp bug: https://launchpad.net/bugs/954155 fixed bzr revid: qdp-launchpad@openerp.com-20120322145539-e4g01pi131vfobaw --- addons/account_voucher/account_voucher.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 8cb22ade87c..8c39306f15e 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -227,17 +227,18 @@ class account_voucher(osv.osv): def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None): if not ids: return {} res = {} - voucher_rate = company_currency_rate = 1.0 + rate = 1.0 for voucher in self.browse(cr, uid, ids, context=context): if voucher.currency_id: - ctx = context.copy() - ctx.update({'date': voucher.date}) - voucher_rate = self.browse(cr, uid, voucher.id, context=ctx).currency_id.rate if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id: - company_currency_rate = voucher.payment_rate + rate = 1 / voucher.payment_rate else: + ctx = context.copy() + ctx.update({'date': voucher.date}) + voucher_rate = self.browse(cr, uid, voucher.id, context=ctx).currency_id.rate company_currency_rate = voucher.company_id.currency_id.rate - res[voucher.id] = voucher.amount / voucher_rate * company_currency_rate + rate = voucher_rate * company_currency_rate + res[voucher.id] = voucher.amount / rate return res _name = 'account.voucher' @@ -979,9 +980,7 @@ class account_voucher(osv.osv): res = amount if voucher.payment_rate_currency_id.id == voucher.company_id.currency_id.id: # the rate specified on the voucher is for the company currency - rate_between_voucher_and_base = voucher.currency_id.rate or 1.0 - rate_between_base_and_company = voucher.payment_rate or 1.0 - res = currency_obj.round(cr, uid, voucher.company_id.currency_id, (amount / rate_between_voucher_and_base * rate_between_base_and_company)) + res = currency_obj.round(cr, uid, voucher.company_id.currency_id, (amount * voucher.payment_rate)) else: # the rate specified on the voucher is not relevant, we use all the rates in the system res = currency_obj.compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, amount, context=context)