[FIX] payment_paypal: wrong handling fees computation formula
authorDenis Ledoux <dle@openerp.com>
Wed, 28 May 2014 12:02:56 +0000 (14:02 +0200)
committerDenis Ledoux <dle@openerp.com>
Wed, 28 May 2014 12:02:56 +0000 (14:02 +0200)
addons/payment_paypal/models/paypal.py
addons/payment_paypal/tests/test_paypal.py

index a5e31e9..ffa5de1 100644 (file)
@@ -90,9 +90,12 @@ class AcquirerPaypal(osv.Model):
             return 0.0
         country = self.pool['res.country'].browse(cr, uid, country_id, context=context)
         if country and acquirer.company_id.country_id.id == country.id:
-            fees = amount * (1 + acquirer.fees_dom_var / 100.0) + acquirer.fees_dom_fixed - amount
+            percentage = acquirer.fees_dom_var
+            fixed = acquirer.fees_dom_fixed
         else:
-            fees = amount * (1 + acquirer.fees_int_var / 100.0) + acquirer.fees_int_fixed - amount
+            percentage = acquirer.fees_int_var
+            fixed = acquirer.fees_int_fixed
+        fees = (percentage / 100.0 * amount + fixed ) / (1 - percentage / 100.0)
         return fees
 
     def paypal_form_generate_values(self, cr, uid, id, partner_values, tx_values, context=None):
index 01f40dd..5638c5c 100644 (file)
@@ -148,7 +148,7 @@ class PaypalForm(PaypalCommon):
         for form_input in tree.input:
             if form_input.get('name') in ['handling']:
                 handling_found = True
-                self.assertEqual(form_input.get('value'), '1.56', 'paypal: wrong computed fees')
+                self.assertEqual(form_input.get('value'), '1.57', 'paypal: wrong computed fees')
         self.assertTrue(handling_found, 'paypal: fees_active did not add handling input in rendered form')
 
     @mute_logger('openerp.addons.payment_paypal.models.paypal', 'ValidationError')