From 0708710ecff8fbb20ef418c239e95b832755dede Mon Sep 17 00:00:00 2001 From: sheetalPatil Date: Mon, 9 Jul 2018 19:13:24 +0530 Subject: [PATCH] [ADD]:Added Upstream patch for payment_stripe --- addons/payment_stripe/__init__.py | 1 + addons/payment_stripe/__manifest__.py | 1 + addons/payment_stripe/models/payment.py | 17 ++++++++------- addons/payment_stripe/tests/test_stripe.py | 25 ++++------------------ 4 files changed, 15 insertions(+), 29 deletions(-) diff --git a/addons/payment_stripe/__init__.py b/addons/payment_stripe/__init__.py index 81ea421d..96f1329b 100644 --- a/addons/payment_stripe/__init__.py +++ b/addons/payment_stripe/__init__.py @@ -3,3 +3,4 @@ from . import models from . import controllers +from flectra.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers diff --git a/addons/payment_stripe/__manifest__.py b/addons/payment_stripe/__manifest__.py index d225c903..0cc40aba 100644 --- a/addons/payment_stripe/__manifest__.py +++ b/addons/payment_stripe/__manifest__.py @@ -15,4 +15,5 @@ ], 'images': ['static/description/icon.png'], 'installable': True, + 'post_init_hook': 'create_missing_journal_for_acquirers', } diff --git a/addons/payment_stripe/models/payment.py b/addons/payment_stripe/models/payment.py index 52f125a1..c8d01515 100644 --- a/addons/payment_stripe/models/payment.py +++ b/addons/payment_stripe/models/payment.py @@ -8,6 +8,7 @@ from flectra import api, fields, models, _ from flectra.addons.payment.models.payment_acquirer import ValidationError from flectra.exceptions import UserError from flectra.tools.safe_eval import safe_eval +from flectra.tools.float_utils import float_round _logger = logging.getLogger(__name__) @@ -41,12 +42,12 @@ class PaymentAcquirerStripe(models.Model): stripe_tx_values = dict(tx_values) temp_stripe_tx_values = { 'company': self.company_id.name, - 'amount': tx_values.get('amount'), - 'currency': tx_values.get('currency') and tx_values.get('currency').name or '', - 'currency_id': tx_values.get('currency') and tx_values.get('currency').id or '', - 'address_line1': tx_values.get('partner_address'), + 'amount': tx_values['amount'], # Mandatory + 'currency': tx_values['currency'].name, # Mandatory anyway + 'currency_id': tx_values['currency'].id, # same here + 'address_line1': tx_values.get('partner_address'), # Any info of the partner is not mandatory 'address_city': tx_values.get('partner_city'), - 'address_country': tx_values.get('partner_country') and tx_values['partner_country'].name or '', + 'address_country': tx_values.get('partner_country') and tx_values.get('partner_country').name or '', 'email': tx_values.get('partner_email'), 'address_zip': tx_values.get('partner_zip'), 'name': tx_values.get('partner_name'), @@ -106,7 +107,7 @@ class PaymentTransactionStripe(models.Model): def _create_stripe_charge(self, acquirer_ref=None, tokenid=None, email=None): api_url_charge = 'https://%s/charges' % (self.acquirer_id._get_stripe_api_url()) charge_params = { - 'amount': int(self.amount if self.currency_id.name in INT_CURRENCIES else self.amount*100), + 'amount': int(self.amount if self.currency_id.name in INT_CURRENCIES else float_round(self.amount * 100, 2)), 'currency': self.currency_id.name, 'metadata[reference]': self.reference, 'description': self.reference, @@ -126,7 +127,7 @@ class PaymentTransactionStripe(models.Model): @api.multi def stripe_s2s_do_transaction(self, **kwargs): self.ensure_one() - result = self._create_stripe_charge(acquirer_ref=self.payment_token_id.acquirer_ref) + result = self._create_stripe_charge(acquirer_ref=self.payment_token_id.acquirer_ref, email=self.partner_email) return self._stripe_s2s_validate_tree(result) @@ -135,7 +136,7 @@ class PaymentTransactionStripe(models.Model): refund_params = { 'charge': self.acquirer_reference, - 'amount': int(self.amount*100), # by default, stripe refund the full amount (we don't really need to specify the value) + 'amount': int(float_round(self.amount * 100, 2)), # by default, stripe refund the full amount (we don't really need to specify the value) 'metadata[reference]': self.reference, } diff --git a/addons/payment_stripe/tests/test_stripe.py b/addons/payment_stripe/tests/test_stripe.py index 2cf2579c..b26429a3 100644 --- a/addons/payment_stripe/tests/test_stripe.py +++ b/addons/payment_stripe/tests/test_stripe.py @@ -62,31 +62,14 @@ class StripeTest(StripeCommon): # ---------------------------------------- # Test: button direct rendering # ---------------------------------------- - form_values = { - 'amount': 320.0, - 'currency': 'EUR', - 'address_line1': 'Huge Street 2/543', - 'address_city': 'Sin City', - 'address_country': 'Belgium', - 'email': 'norbert.buyer@example.com', - 'address_zip': '1000', - 'name': 'Norbert Buyer', - 'phone': '0032 12 34 56 78' - } # render the button - res = self.stripe.render('SO404', 320.0, self.currency_euro.id, values=self.buyer_values) - post_url = "https://checkout.stripe.com/checkout.js" - email = "norbert.buyer@example.com" + res = self.stripe.render('SO404', 320.0, self.currency_euro.id, values=self.buyer_values).decode('utf-8') + popup_script_src = 'script src="https://checkout.stripe.com/checkout.js"' # check form result - if "https://checkout.stripe.com/checkout.js" in res[0]: - self.assertEqual(post_url, 'https://checkout.stripe.com/checkout.js', 'Stripe: wrong form POST url') + self.assertIn(popup_script_src, res, "Stripe: popup script not found in template render") # Generated and received - if email in res[0]: - self.assertEqual( - email, form_values.get('email'), - 'Stripe: wrong value for input %s: received %s instead of %s' % (email, email, form_values.get('email')) - ) + self.assertIn(self.buyer_values.get('partner_email'), res, 'Stripe: email input not found in rendered template') @unittest.skip("Stripe test disabled: We do not want to overload Stripe with runbot's requests") def test_30_stripe_form_management(self):