From 42e90fcf15fe6262f8a2bc739559d909d66d43b6 Mon Sep 17 00:00:00 2001 From: "Antoine Vandevenne (anv)" Date: Thu, 5 Jan 2023 12:32:10 +0000 Subject: [PATCH] [FIX] payment, *: re-use the partner of the document *: account_payment, sale, website_payment, website_payment opw-3097856 closes odoo/odoo#109695 X-original-commit: a452221c51f5659c88cb479ded192a2ad395e7d6 Signed-off-by: Antoine Vandevenne (anv) --- addons/account_payment/controllers/payment.py | 5 ++++- addons/sale/controllers/portal.py | 3 ++- addons/website_payment/controllers/portal.py | 2 ++ addons/website_sale/controllers/main.py | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/addons/account_payment/controllers/payment.py b/addons/account_payment/controllers/payment.py index 1747587ffe1..a0f95f4f8ff 100644 --- a/addons/account_payment/controllers/payment.py +++ b/addons/account_payment/controllers/payment.py @@ -24,13 +24,16 @@ class PaymentPortal(payment_portal.PaymentPortal): """ # Check the invoice id and the access token try: - self._document_check_access('account.move', invoice_id, access_token) + invoice_sudo = self._document_check_access('account.move', invoice_id, access_token) except MissingError as error: raise error except AccessError: raise ValidationError(_("The access token is invalid.")) kwargs['reference_prefix'] = None # Allow the reference to be computed based on the invoice + logged_in = not request.env.user._is_public() + partner = request.env.user.partner_id if logged_in else invoice_sudo.partner_id + kwargs['partner_id'] = partner.id kwargs.pop('custom_create_values', None) # Don't allow passing arbitrary create values tx_sudo = self._create_transaction( custom_create_values={'invoice_ids': [Command.set([invoice_id])]}, **kwargs, diff --git a/addons/sale/controllers/portal.py b/addons/sale/controllers/portal.py index 4ea857da49a..724a18b2622 100644 --- a/addons/sale/controllers/portal.py +++ b/addons/sale/controllers/portal.py @@ -301,7 +301,7 @@ class PaymentPortal(payment_portal.PaymentPortal): """ # Check the order id and the access token try: - self._document_check_access('sale.order', order_id, access_token) + order_sudo = self._document_check_access('sale.order', order_id, access_token) except MissingError as error: raise error except AccessError: @@ -309,6 +309,7 @@ class PaymentPortal(payment_portal.PaymentPortal): kwargs.update({ 'reference_prefix': None, # Allow the reference to be computed based on the order + 'partner_id': order_sudo.partner_id.id, 'sale_order_id': order_id, # Include the SO to allow Subscriptions tokenizing the tx }) kwargs.pop('custom_create_values', None) # Don't allow passing arbitrary create values diff --git a/addons/website_payment/controllers/portal.py b/addons/website_payment/controllers/portal.py index 0f0616fce17..d9c0b4829d3 100644 --- a/addons/website_payment/controllers/portal.py +++ b/addons/website_payment/controllers/portal.py @@ -61,6 +61,8 @@ class PaymentPortal(payment_portal.PaymentPortal): raise ValidationError(_('Country is required.')) partner_id = request.website.user_id.partner_id.id del kwargs['partner_details'] + else: + partner_id = request.env.user.partner_id.id kwargs.pop('custom_create_values', None) # Don't allow passing arbitrary create values tx_sudo = self._create_transaction( diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 3b091590312..04f840eca29 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -1734,6 +1734,7 @@ class PaymentPortal(payment_portal.PaymentPortal): kwargs.update({ 'reference_prefix': None, # Allow the reference to be computed based on the order + 'partner_id': order_sudo.partner_id.id, 'sale_order_id': order_id, # Include the SO to allow Subscriptions to tokenize the tx }) kwargs.pop('custom_create_values', None) # Don't allow passing arbitrary create values