From 8156d6a2d8d3c9e91cd19dfa02d672994d462c03 Mon Sep 17 00:00:00 2001 From: "Pedram (PEBR)" <pebr@odoo.com> Date: Wed, 30 Aug 2023 10:25:43 +0200 Subject: [PATCH] [FIX] pos_stripe: get stripe payment provider based on company The problem was that if you have multiple stripe payment providers in different companies, it may cause issues in getting the stripe payment provider. That was because of using sudo in calling `_get_stripe_payment_provider`. The solution is to filter the result based on the company. opw-3473577 closes odoo/odoo#133578 Signed-off-by: Joseph Caburnay (jcb) <jcb@odoo.com> --- addons/pos_stripe/i18n/pos_stripe.pot | 4 ++-- addons/pos_stripe/models/pos_payment_method.py | 9 ++++++--- addons/pos_stripe/static/src/js/payment_stripe.js | 12 +++++++++--- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/addons/pos_stripe/i18n/pos_stripe.pot b/addons/pos_stripe/i18n/pos_stripe.pot index e1119e16c935..a79635af0e67 100644 --- a/addons/pos_stripe/i18n/pos_stripe.pot +++ b/addons/pos_stripe/i18n/pos_stripe.pot @@ -19,7 +19,7 @@ msgstr "" #. odoo-python #: code:addons/pos_stripe/models/pos_payment_method.py:0 #, python-format -msgid "Complete the Stripe onboarding." +msgid "Complete the Stripe onboarding for company %s." msgstr "" #. module: pos_stripe @@ -106,7 +106,7 @@ msgstr "" #. odoo-python #: code:addons/pos_stripe/models/pos_payment_method.py:0 #, python-format -msgid "Stripe payment provider is missing" +msgid "Stripe payment provider for company %s is missing" msgstr "" #. module: pos_stripe diff --git a/addons/pos_stripe/models/pos_payment_method.py b/addons/pos_stripe/models/pos_payment_method.py index 1f4f939b9c2f..bd9bab2dfb2a 100644 --- a/addons/pos_stripe/models/pos_payment_method.py +++ b/addons/pos_stripe/models/pos_payment_method.py @@ -32,10 +32,13 @@ class PosPaymentMethod(models.Model): payment_method.stripe_serial_number, existing_payment_method.display_name)) def _get_stripe_payment_provider(self): - stripe_payment_provider = self.env['payment.provider'].search([('code', '=', 'stripe')], limit=1) + stripe_payment_provider = self.env['payment.provider'].search([ + ('code', '=', 'stripe'), + ('company_id', '=', self.env.company.id) + ], limit=1) if not stripe_payment_provider: - raise UserError(_("Stripe payment provider is missing")) + raise UserError(_("Stripe payment provider for company %s is missing", self.env.company.name)) return stripe_payment_provider @@ -44,7 +47,7 @@ class PosPaymentMethod(models.Model): stripe_secret_key = self._get_stripe_payment_provider().stripe_secret_key if not stripe_secret_key: - raise ValidationError(_('Complete the Stripe onboarding.')) + raise ValidationError(_('Complete the Stripe onboarding for company %s.', self.env.company.name)) return stripe_secret_key diff --git a/addons/pos_stripe/static/src/js/payment_stripe.js b/addons/pos_stripe/static/src/js/payment_stripe.js index db7f532081e5..6fef8655bcfb 100644 --- a/addons/pos_stripe/static/src/js/payment_stripe.js +++ b/addons/pos_stripe/static/src/js/payment_stripe.js @@ -26,6 +26,7 @@ let PaymentStripe = PaymentInterface.extend({ let data = await rpc.query({ model: 'pos.payment.method', method: 'stripe_connection_token', + kwargs: { context: this.pos.env.session.user_context }, }, { silent: true, }); @@ -34,7 +35,8 @@ let PaymentStripe = PaymentInterface.extend({ } return data.secret; } catch (error) { - this._showError(error.message.message, 'Fetch Token'); + const message = error.message.code === 200 ? error.message.data.message : error.message.message; + this._showError(message, 'Fetch Token'); this.terminal = false; }; }, @@ -194,6 +196,7 @@ let PaymentStripe = PaymentInterface.extend({ model: 'pos.payment.method', method: 'stripe_capture_payment', args: [paymentIntentId], + kwargs: { context: this.pos.env.session.user_context }, }, { silent: true, }); @@ -202,7 +205,8 @@ let PaymentStripe = PaymentInterface.extend({ } return data; } catch (error) { - this._showError(error.message.message, 'Capture Payment'); + const message = error.message.code === 200 ? error.message.data.message : error.message.message; + this._showError(message, 'Capture Payment'); return false; }; }, @@ -213,6 +217,7 @@ let PaymentStripe = PaymentInterface.extend({ model: 'pos.payment.method', method: 'stripe_payment_intent', args: [[payment_method.id], amount], + kwargs: { context: this.pos.env.session.user_context }, }, { silent: true, }); @@ -221,7 +226,8 @@ let PaymentStripe = PaymentInterface.extend({ } return data.client_secret; } catch (error) { - this._showError(error.message.message, 'Fetch Secret'); + const message = error.message.code === 200 ? error.message.data.message : error.message.message; + this._showError(message, 'Fetch Secret'); return false; }; }, -- GitLab