From 8164ac4e22fed484040c76721ebbea140f75b614 Mon Sep 17 00:00:00 2001 From: Horacio Tellez Date: Wed, 12 Apr 2023 15:22:22 +0000 Subject: [PATCH] [FIX] sale: use billing address whenever possible In the case of transaction linked to sales orders it is more appropiated to use the invoice partner related to the sale order than its main partner. After this fix the invoice partner of sale orders will be used for transactions linked to it. opw - 3212748 closes odoo/odoo#119962 X-original-commit: 6eaf11d1ac0d9fc3cd9d458e6ee1f27159216d40 Signed-off-by: Antoine Vandevenne (anv) Signed-off-by: Horacio Tellez Perez (hote) --- addons/sale/controllers/portal.py | 4 ++-- addons/sale/tests/test_payment_flow.py | 12 ++++++------ addons/website_sale/controllers/main.py | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/sale/controllers/portal.py b/addons/sale/controllers/portal.py index 24d515d1c62..a7d9c1b8b9b 100644 --- a/addons/sale/controllers/portal.py +++ b/addons/sale/controllers/portal.py @@ -309,7 +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, + 'partner_id': order_sudo.partner_invoice_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 @@ -352,7 +352,7 @@ class PaymentPortal(payment_portal.PaymentPortal): kwargs.update({ 'currency_id': order_sudo.currency_id.id, - 'partner_id': order_sudo.partner_id.id, + 'partner_id': order_sudo.partner_invoice_id.id, 'company_id': order_sudo.company_id.id, 'sale_order_id': sale_order_id, }) diff --git a/addons/sale/tests/test_payment_flow.py b/addons/sale/tests/test_payment_flow.py index d3f2a0f7ed2..f98dd32eba1 100644 --- a/addons/sale/tests/test_payment_flow.py +++ b/addons/sale/tests/test_payment_flow.py @@ -35,7 +35,7 @@ class TestSalePayment(AccountPaymentCommon, SaleCommon, PaymentHttpCommon): patched.assert_called_once_with(ANY, sale_order_id=ANY) self.assertEqual(tx_context['currency_id'], self.sale_order.currency_id.id) - self.assertEqual(tx_context['partner_id'], self.sale_order.partner_id.id) + self.assertEqual(tx_context['partner_id'], self.sale_order.partner_invoice_id.id) self.assertEqual(tx_context['amount'], self.sale_order.amount_total) self.assertEqual(tx_context['sale_order_id'], self.sale_order.id) @@ -56,7 +56,7 @@ class TestSalePayment(AccountPaymentCommon, SaleCommon, PaymentHttpCommon): self.assertEqual(tx_sudo.sale_order_ids, self.sale_order) self.assertEqual(tx_sudo.amount, self.amount) - self.assertEqual(tx_sudo.partner_id, self.sale_order.partner_id) + self.assertEqual(tx_sudo.partner_id, self.sale_order.partner_invoice_id) self.assertEqual(tx_sudo.company_id, self.sale_order.company_id) self.assertEqual(tx_sudo.currency_id, self.sale_order.currency_id) self.assertEqual(tx_sudo.reference, self.sale_order.name) @@ -81,7 +81,7 @@ class TestSalePayment(AccountPaymentCommon, SaleCommon, PaymentHttpCommon): self.assertEqual(tx_context['reference_prefix'], self.reference) self.assertEqual(tx_context['currency_id'], self.sale_order.currency_id.id) - self.assertEqual(tx_context['partner_id'], self.sale_order.partner_id.id) + self.assertEqual(tx_context['partner_id'], self.sale_order.partner_invoice_id.id) self.assertEqual(tx_context['amount'], self.amount) self.assertEqual(tx_context['sale_order_id'], self.sale_order.id) @@ -99,7 +99,7 @@ class TestSalePayment(AccountPaymentCommon, SaleCommon, PaymentHttpCommon): self.assertEqual(tx_sudo.sale_order_ids, self.sale_order) self.assertEqual(tx_sudo.amount, self.amount) - self.assertEqual(tx_sudo.partner_id, self.sale_order.partner_id) + self.assertEqual(tx_sudo.partner_id, self.sale_order.partner_invoice_id) self.assertEqual(tx_sudo.company_id, self.sale_order.company_id) self.assertEqual(tx_sudo.currency_id, self.sale_order.currency_id) self.assertEqual(tx_sudo.reference, self.reference) @@ -118,7 +118,7 @@ class TestSalePayment(AccountPaymentCommon, SaleCommon, PaymentHttpCommon): self.assertEqual(tx_context['reference_prefix'], self.reference) self.assertEqual(tx_context['currency_id'], self.sale_order.currency_id.id) - self.assertEqual(tx_context['partner_id'], self.sale_order.partner_id.id) + self.assertEqual(tx_context['partner_id'], self.sale_order.partner_invoice_id.id) self.assertEqual(tx_context['amount'], self.amount) self.assertEqual(tx_context['sale_order_id'], self.sale_order.id) @@ -136,7 +136,7 @@ class TestSalePayment(AccountPaymentCommon, SaleCommon, PaymentHttpCommon): self.assertEqual(tx2_sudo.sale_order_ids, self.sale_order) self.assertEqual(tx2_sudo.amount, self.amount) - self.assertEqual(tx2_sudo.partner_id, self.sale_order.partner_id) + self.assertEqual(tx2_sudo.partner_id, self.sale_order.partner_invoice_id) self.assertEqual(tx2_sudo.company_id, self.sale_order.company_id) self.assertEqual(tx2_sudo.currency_id, self.sale_order.currency_id) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index d68f2c32821..c8a5de9e0b4 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -1494,7 +1494,7 @@ class WebsiteSale(http.Controller): portal_page_values = { 'website_sale_order': order, 'errors': [], - 'partner': order.partner_id, + 'partner': order.partner_invoice_id, 'order': order, 'payment_action_id': request.env.ref('payment.action_payment_provider').id, } @@ -1799,7 +1799,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, + 'partner_id': order_sudo.partner_invoice_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