← Back to team overview

openerp-india team mailing list archive

[Bug 980967] [NEW] [6.1] [account_voucher] exchange rate calculation is not working if company currency isn't rate 1

 

Public bug reported:

In the account_voucher module, the currency rate is not well calculated.
The method that write the account move line is not correct. It starts at
line 227 in account_voucher.py:

    def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None):
        if not ids: return {}
        res = {}
        rate = 1.0
        for voucher in self.browse(cr, uid, ids, context=context):
            if voucher.currency_id:
                if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id:
                    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
                    rate = voucher_rate * company_currency_rate
            res[voucher.id] =  voucher.amount / rate
        return res

This should be (diff output):

         for voucher in self.browse(cr, uid, ids, context=context):
             if voucher.currency_id:
                 if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id:
-                    rate =  1 / voucher.payment_rate
+                    rate =  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
-                    rate = voucher_rate * company_currency_rate
-            res[voucher.id] =  voucher.amount / rate
+                    rate = company_currency_rate / voucher_rate
+            res[voucher.id] =  voucher.amount * rate
         return res


I am posting a merge proposal with this change in a couple of minutes.

There is also a wrong currency_amount value calculation even if you
apply the previous patch. This wrong calculation apply to only some
lines of the move. I will get back on this bug about this later.

** Affects: openobject-addons
     Importance: Undecided
         Status: New

** Summary changed:

- [6.1] [account_voucher} exchange rate calculation is not working if company currency isn't rate 1 
+ [6.1] [account_voucher] exchange rate calculation is not working if company currency isn't rate 1

-- 
You received this bug notification because you are a member of OpenERP
Indian Team, which is subscribed to OpenERP Addons.
https://bugs.launchpad.net/bugs/980967

Title:
  [6.1] [account_voucher] exchange rate calculation is not working if
  company currency isn't rate 1

Status in OpenERP Addons (modules):
  New

Bug description:
  In the account_voucher module, the currency rate is not well
  calculated. The method that write the account move line is not
  correct. It starts at line 227 in account_voucher.py:

      def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None):
          if not ids: return {}
          res = {}
          rate = 1.0
          for voucher in self.browse(cr, uid, ids, context=context):
              if voucher.currency_id:
                  if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id:
                      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
                      rate = voucher_rate * company_currency_rate
              res[voucher.id] =  voucher.amount / rate
          return res

  This should be (diff output):

           for voucher in self.browse(cr, uid, ids, context=context):
               if voucher.currency_id:
                   if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id:
  -                    rate =  1 / voucher.payment_rate
  +                    rate =  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
  -                    rate = voucher_rate * company_currency_rate
  -            res[voucher.id] =  voucher.amount / rate
  +                    rate = company_currency_rate / voucher_rate
  +            res[voucher.id] =  voucher.amount * rate
           return res

  
  I am posting a merge proposal with this change in a couple of minutes.

  There is also a wrong currency_amount value calculation even if you
  apply the previous patch. This wrong calculation apply to only some
  lines of the move. I will get back on this bug about this later.

To manage notifications about this bug go to:
https://bugs.launchpad.net/openobject-addons/+bug/980967/+subscriptions


Follow ups

References