From b2266fae87f9edb64e1a1552166ccec35bd8e24d Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 24 Jan 2019 09:30:59 +0000 Subject: [PATCH] [FIX] website_sale: terms & conditions - Install website_sale and website_sale_delivery - Activate 'Terms & Condition' on the payment page - Process a shopping cart On the payment page, the 'Terms & Condition' checkbox is unchecked, but the 'Payment' button is enabled. Both `$checkbox.change` and `_onCarrierUpdateAnswer` set the `disabled` property, and conflict. We keep on the HTML node an object with the list of disabled reasons. opw-1923459 Co-authored-by: Nicolas Lempereur closes odoo/odoo#30504 --- addons/website_sale/static/src/js/website_sale_payment.js | 5 ++++- .../static/src/js/website_sale_delivery.js | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/website_sale/static/src/js/website_sale_payment.js b/addons/website_sale/static/src/js/website_sale_payment.js index 45373cea37a..cc104fecc39 100644 --- a/addons/website_sale/static/src/js/website_sale_payment.js +++ b/addons/website_sale/static/src/js/website_sale_payment.js @@ -7,9 +7,12 @@ var $checkbox = $("#checkbox_cgv"); if (!$checkbox.length) { return; } +var $pay_button = $('button#o_payment_form_pay'); $checkbox.on('change', function (ev) { - $('button#o_payment_form_pay').prop('disabled', !ev.target.checked); + $pay_button.data('disabled_reasons', $pay_button.data('disabled_reasons') || {}); + $pay_button.data('disabled_reasons').cgv = !ev.target.checked; + $pay_button.prop('disabled', _.contains($pay_button.data('disabled_reasons'), true)); }); $checkbox.change(); }); diff --git a/addons/website_sale_delivery/static/src/js/website_sale_delivery.js b/addons/website_sale_delivery/static/src/js/website_sale_delivery.js index 476c1bd4faa..39581ee54c8 100644 --- a/addons/website_sale_delivery/static/src/js/website_sale_delivery.js +++ b/addons/website_sale_delivery/static/src/js/website_sale_delivery.js @@ -35,7 +35,8 @@ odoo.define('website_sale_delivery.checkout', function (require) { $carrier_badge.children('span').text(result.new_amount_delivery); $carrier_badge.removeClass('d-none'); $compute_badge.addClass('d-none'); - $pay_button.prop('disabled', false); + $pay_button.data('disabled_reasons').carrier_selection = false; + $pay_button.prop('disabled', _.contains($pay_button.data('disabled_reasons'), true)); } else { console.error(result.error_message); @@ -48,6 +49,8 @@ odoo.define('website_sale_delivery.checkout', function (require) { }; var _onCarrierClick = function(ev) { + $pay_button.data('disabled_reasons', $pay_button.data('disabled_reasons') || {}); + $pay_button.data('disabled_reasons').carrier_selection = true; $pay_button.prop('disabled', true); var carrier_id = $(ev.currentTarget).val(); var values = {'carrier_id': carrier_id};