From 267f8cc888e5c95abe6edb289b64690ebd100395 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Wed, 3 Dec 2025 11:20:06 +0100 Subject: [PATCH 1/3] [IMP] website_sale_checkout_skip_payment: Fix duplicate order name display --- .../views/website_sale_template.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website_sale_checkout_skip_payment/views/website_sale_template.xml b/website_sale_checkout_skip_payment/views/website_sale_template.xml index bdc1c422e2..74bdba56ae 100644 --- a/website_sale_checkout_skip_payment/views/website_sale_template.xml +++ b/website_sale_checkout_skip_payment/views/website_sale_template.xml @@ -26,7 +26,7 @@ > tx_sudo.state == 'done' or website.checkout_skip_payment + >tx_sudo.state == 'done' or (website.checkout_skip_payment and order.state != 'sale') Date: Wed, 3 Dec 2025 13:39:32 +0100 Subject: [PATCH 2/3] [IMP] website_sale_checkout_skip_payment: Allow to change confirm or not the order Allows to confirm or not the order when the 'skip payment' is active. That option is configurable per website. Adds a field on sale order level in order to identify sale orders that have been checked out with skip payment option even if the option has been changed on partner level --- .../controllers/main.py | 10 +++++++--- .../models/__init__.py | 1 + .../models/res_config_settings.py | 4 ++++ .../models/sale_order.py | 14 +++++++++++++ .../models/website.py | 6 ++++++ .../views/res_config_settings_views.xml | 12 +++++++++++ .../views/website_sale_template.xml | 20 ++----------------- 7 files changed, 46 insertions(+), 21 deletions(-) create mode 100644 website_sale_checkout_skip_payment/models/sale_order.py diff --git a/website_sale_checkout_skip_payment/controllers/main.py b/website_sale_checkout_skip_payment/controllers/main.py index f4d6181324..82ab331aa8 100644 --- a/website_sale_checkout_skip_payment/controllers/main.py +++ b/website_sale_checkout_skip_payment/controllers/main.py @@ -24,14 +24,18 @@ def shop_payment_confirmation(self, **post): if not request.website.checkout_skip_payment or not order_id: return super().shop_payment_confirmation(**post) order = request.env["sale.order"].sudo().browse(order_id) + confirm = request.website.website_sale_skip_payment_confirm try: - order.with_context(mark_so_as_sent=True)._send_order_confirmation_mail() + order.website_payment_skipped = True + # This could not finish (e.g.: sale_financial_risk exceeded) + if confirm: + order.with_context(send_email=True).action_confirm() + else: + order.with_context(mark_so_as_sent=True)._send_order_confirmation_mail() except Exception: return request.render( "website_sale_checkout_skip_payment.confirmation_order_error" ) - # This could not finish (e.g.: sale_financial_risk exceeded) - order.action_confirm() request.website.sale_reset() values = self._prepare_shop_payment_confirmation_values(order) return request.render("website_sale.confirmation", values) diff --git a/website_sale_checkout_skip_payment/models/__init__.py b/website_sale_checkout_skip_payment/models/__init__.py index 61e4795980..99faa535ca 100644 --- a/website_sale_checkout_skip_payment/models/__init__.py +++ b/website_sale_checkout_skip_payment/models/__init__.py @@ -1,3 +1,4 @@ from . import res_config_settings from . import res_partner +from . import sale_order from . import website diff --git a/website_sale_checkout_skip_payment/models/res_config_settings.py b/website_sale_checkout_skip_payment/models/res_config_settings.py index a4e22abc46..684f1e2654 100644 --- a/website_sale_checkout_skip_payment/models/res_config_settings.py +++ b/website_sale_checkout_skip_payment/models/res_config_settings.py @@ -6,6 +6,10 @@ class ResConfigSettings(models.TransientModel): _inherit = "res.config.settings" + website_sale_skip_payment_confirm = fields.Boolean( + related="website_id.website_sale_skip_payment_confirm", + readonly=False, + ) website_sale_checkout_skip_message = fields.Text( "Website Sale Checkout Skip Message", related="website_id.website_sale_checkout_skip_message", diff --git a/website_sale_checkout_skip_payment/models/sale_order.py b/website_sale_checkout_skip_payment/models/sale_order.py new file mode 100644 index 0000000000..57979585d9 --- /dev/null +++ b/website_sale_checkout_skip_payment/models/sale_order.py @@ -0,0 +1,14 @@ +# Copyright 2025 ACSONE SA/NV +# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl). +from odoo import fields, models + + +class SaleOrder(models.Model): + _inherit = "sale.order" + + website_payment_skipped = fields.Boolean( + readonly=True, + index=True, + help="This is checked if the sale order has been confirmed with a partner " + "that can skip payment", + ) diff --git a/website_sale_checkout_skip_payment/models/website.py b/website_sale_checkout_skip_payment/models/website.py index 7cfcae4c75..f1b83de601 100644 --- a/website_sale_checkout_skip_payment/models/website.py +++ b/website_sale_checkout_skip_payment/models/website.py @@ -13,6 +13,12 @@ def _get_default_skip_message(self): "Our team will check your order and send you payment information soon." ) + website_sale_skip_payment_confirm = fields.Boolean( + string="Confirm the Sale Order when skipping payment", + help="Check this if you want to confirm the sale order when" + "the 'skip payment' option is activated on partner level.", + ) + website_sale_checkout_skip_message = fields.Text( string="Website Sale SKip Message", required=True, diff --git a/website_sale_checkout_skip_payment/views/res_config_settings_views.xml b/website_sale_checkout_skip_payment/views/res_config_settings_views.xml index 386e837afc..8432ab077f 100644 --- a/website_sale_checkout_skip_payment/views/res_config_settings_views.xml +++ b/website_sale_checkout_skip_payment/views/res_config_settings_views.xml @@ -5,6 +5,18 @@ + +
+
+ +
+
+