From 79807d69073593b863e9ee7f9da91a4bdd4dfb16 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Tue, 14 Jul 2020 10:40:01 +0000 Subject: [PATCH] [IMP] base, website_sale: handle required zip/state on eCommerce MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit task-2172788 closes odoo/odoo#54746 Related: odoo/upgrade#1509 Signed-off-by: Jérémy Kersten (jke) --- addons/website_sale/controllers/main.py | 8 ++++++-- addons/website_sale/static/src/js/website_sale.js | 9 +++++++-- .../tests/tours/website_sale_complete_flow.js | 3 +++ addons/website_sale/tests/test_sale_process.py | 4 ++-- addons/website_sale/views/templates.xml | 6 +++--- odoo/addons/base/data/res_country_data.xml | 15 +++++++++++++++ odoo/addons/base/models/res_country.py | 3 +++ odoo/addons/base/views/res_country_views.xml | 2 ++ 8 files changed, 41 insertions(+), 9 deletions(-) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 123acb65293..29caf458371 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -555,8 +555,10 @@ class WebsiteSale(http.Controller): country = request.env['res.country'] if data.get('country_id'): country = country.browse(int(data.get('country_id'))) - if 'state_code' in country.get_address_fields() and country.state_ids: + if country.state_required: required_fields += ['state_id'] + if country.zip_required: + required_fields += ['zip'] # error message for empty required fields for field_name in required_fields: @@ -1118,7 +1120,9 @@ class WebsiteSale(http.Controller): return dict( fields=country.get_address_fields(), states=[(st.id, st.name, st.code) for st in country.get_website_sale_states(mode=mode)], - phone_code=country.phone_code + phone_code=country.phone_code, + zip_required=country.zip_required, + state_required=country.state_required, ) # -------------------------------------------------------------------------- diff --git a/addons/website_sale/static/src/js/website_sale.js b/addons/website_sale/static/src/js/website_sale.js index bae366ac69a..65fa4537a1c 100644 --- a/addons/website_sale/static/src/js/website_sale.js +++ b/addons/website_sale/static/src/js/website_sale.js @@ -347,13 +347,13 @@ publicWidget.registry.WebsiteSale = publicWidget.Widget.extend(VariantMixin, { }, }).then(function (data) { // placeholder phone_code - //$("input[name='phone']").attr('placeholder', data.phone_code !== 0 ? '+'+ data.phone_code : ''); + $("input[name='phone']").attr('placeholder', data.phone_code !== 0 ? '+'+ data.phone_code : ''); // populate states and display var selectStates = $("select[name='state_id']"); // dont reload state at first loading (done in qweb) if (selectStates.data('init')===0 || selectStates.find('option').length===1) { - if (data.states.length) { + if (data.states.length || data.state_required) { selectStates.html(''); _.each(data.states, function (x) { var opt = $('