From 6bc5cef30243f4302d75a7d7eaf048cf76335ea7 Mon Sep 17 00:00:00 2001 From: "Valeriya(vchu)" Date: Tue, 9 May 2023 13:45:18 +0000 Subject: [PATCH] [IMP] website(_sale,_payment,_sale_picking): improve provider options When no payment provider is active, admin users should see the 'Activate Stripe' button on the checkout page, allowing them to configure Stripe faster. This commit also disables the provider 'Pay in store when picking the product' in the demo data to improve the testing experience of the eCommerce settings on runbot. task-3235154 closes odoo/odoo#121138 Related: odoo/enterprise#40934 Signed-off-by: Antoine Vandevenne (anv) --- addons/website_payment/__manifest__.py | 1 + .../data/ir_actions_server_data.xml | 15 +++++++ .../models/res_config_settings.py | 4 +- .../views/res_config_settings_views.xml | 40 ++++++++++++++----- addons/website_sale/controllers/main.py | 3 ++ addons/website_sale/views/templates.xml | 36 ++++++++++++----- .../tests/tours/test_promo_main_tour.js | 1 - addons/website_sale_picking/__manifest__.py | 3 ++ addons/website_sale_picking/data/demo.xml | 8 ++++ addons/website_sale_picking/tests/test_ui.py | 1 + 10 files changed, 88 insertions(+), 24 deletions(-) create mode 100644 addons/website_payment/data/ir_actions_server_data.xml create mode 100644 addons/website_sale_picking/data/demo.xml diff --git a/addons/website_payment/__manifest__.py b/addons/website_payment/__manifest__.py index cfdfe98a5b5..2a424282158 100644 --- a/addons/website_payment/__manifest__.py +++ b/addons/website_payment/__manifest__.py @@ -16,6 +16,7 @@ This is a bridge module that adds multi-website support for payment providers. 'data': [ 'data/mail_templates.xml', 'data/mail_template_data.xml', + 'data/ir_actions_server_data.xml', 'views/payment_provider.xml', 'views/res_config_settings_views.xml', 'views/donation_templates.xml', diff --git a/addons/website_payment/data/ir_actions_server_data.xml b/addons/website_payment/data/ir_actions_server_data.xml new file mode 100644 index 00000000000..fa48888b5db --- /dev/null +++ b/addons/website_payment/data/ir_actions_server_data.xml @@ -0,0 +1,15 @@ + + + + + Activate Stripe + + code + +menu = env.ref('website.menu_website_website_settings', raise_if_not_found=False) +menu_id = menu and menu.id +action = env.company._run_payment_onboarding_step(menu_id=menu_id) + + + + diff --git a/addons/website_payment/models/res_config_settings.py b/addons/website_payment/models/res_config_settings.py index e0e3c8b4676..091f072a02f 100644 --- a/addons/website_payment/models/res_config_settings.py +++ b/addons/website_payment/models/res_config_settings.py @@ -49,9 +49,7 @@ class ResConfigSettings(models.TransientModel): self.ensure_one() if not self.is_stripe_supported_country: return False - menu = self.env.ref('website.menu_website_website_settings', raise_if_not_found=False) - menu_id = menu and menu.id - return self.env.company._run_payment_onboarding_step(menu_id=menu_id) + return self.env['ir.actions.actions']._for_xml_id('website_payment.action_activate_stripe') def action_configure_first_provider(self): self.ensure_one() diff --git a/addons/website_payment/views/res_config_settings_views.xml b/addons/website_payment/views/res_config_settings_views.xml index a3c09bb5073..0562323e899 100644 --- a/addons/website_payment/views/res_config_settings_views.xml +++ b/addons/website_payment/views/res_config_settings_views.xml @@ -10,20 +10,40 @@
-
+
-
-
+
-
- - +
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 8b2f4aa55d1..722e0ead5a8 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -1483,6 +1483,9 @@ class WebsiteSale(http.Controller): 'partner': order.partner_invoice_id, 'order': order, 'payment_action_id': request.env.ref('payment.action_payment_provider').id, + 'action_activate_stripe_id': request.env.ref( + 'website_payment.action_activate_stripe' + ).id, } payment_form_values = { **sale_portal.CustomerPortal._get_payment_values( diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 99455d7e881..f1c60183713 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -1981,8 +1981,10 @@
-
+

Pay with

+
+
Pay Now @@ -1990,17 +1992,31 @@
No suitable payment option could be found.
- If you believe that it is an error, please contact the website administrator. +
+ If you believe that it is an error, please contact the website administrator. +
+
- -
diff --git a/addons/website_sale_loyalty/static/tests/tours/test_promo_main_tour.js b/addons/website_sale_loyalty/static/tests/tours/test_promo_main_tour.js index 4ef62989030..5b85fc9fa3d 100644 --- a/addons/website_sale_loyalty/static/tests/tours/test_promo_main_tour.js +++ b/addons/website_sale_loyalty/static/tests/tours/test_promo_main_tour.js @@ -137,7 +137,6 @@ registry.category("web_tour.tours").add('shop_sale_loyalty', { }, { content: "check total is unchanged once we land on payment page", - extra_trigger: '#payment_method h3:contains("Pay with")', trigger: 'tr#order_total .oe_currency_value:contains("967.50")', run: function () {}, // it's a check }, diff --git a/addons/website_sale_picking/__manifest__.py b/addons/website_sale_picking/__manifest__.py index 371664afa3d..1ba22d90ee5 100644 --- a/addons/website_sale_picking/__manifest__.py +++ b/addons/website_sale_picking/__manifest__.py @@ -15,6 +15,9 @@ Allows customers to pay for their orders at a shop, instead of paying online. 'views/templates.xml', 'views/delivery_view.xml' ], + 'demo': [ + 'data/demo.xml', + ], 'assets': { 'web.assets_frontend': [ 'website_sale_picking/static/src/js/checkout_form.js' diff --git a/addons/website_sale_picking/data/demo.xml b/addons/website_sale_picking/data/demo.xml new file mode 100644 index 00000000000..50685a32764 --- /dev/null +++ b/addons/website_sale_picking/data/demo.xml @@ -0,0 +1,8 @@ + + + + + disabled + + + diff --git a/addons/website_sale_picking/tests/test_ui.py b/addons/website_sale_picking/tests/test_ui.py index ad16ef4d118..99b9ff12ece 100644 --- a/addons/website_sale_picking/tests/test_ui.py +++ b/addons/website_sale_picking/tests/test_ui.py @@ -39,6 +39,7 @@ class TestUi(HttpCase): 'name': 'Example shipping On Site', 'product_id': self.env.ref('website_sale_picking.onsite_delivery_product').id, }) + self.env.ref("website_sale_picking.payment_provider_onsite").state = 'enabled' self.env.ref("website_sale_picking.payment_provider_onsite").is_published = True self.start_tour('/shop', 'onsite_payment_tour')