[FIX] account_voucher: computation of paid_amount_in_company_currency field
authorQuentin (OpenERP) <qdp-launchpad@openerp.com>
Thu, 22 Mar 2012 14:55:39 +0000 (15:55 +0100)
committerQuentin (OpenERP) <qdp-launchpad@openerp.com>
Thu, 22 Mar 2012 14:55:39 +0000 (15:55 +0100)
lp bug: https://launchpad.net/bugs/954155 fixed

bzr revid: qdp-launchpad@openerp.com-20120322145539-e4g01pi131vfobaw

addons/account_voucher/account_voucher.py

index 8cb22ad..8c39306 100644 (file)
@@ -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)