diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index bf28cfbee6b..e7ed3158695 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -3,6 +3,7 @@ import werkzeug from openerp import SUPERUSER_ID from openerp import http +from openerp import tools from openerp.http import request from openerp.tools.translate import _ from openerp.addons.website.models.website import slug @@ -509,12 +510,20 @@ class website_sale(http.Controller): def checkout_form_validate(self, data): cr, uid, context, registry = request.cr, request.uid, request.context, request.registry - # Validation error = dict() + error_message = [] + + # Validation for field_name in self.mandatory_billing_fields: if not data.get(field_name): error[field_name] = 'missing' + # email validation + if data.get('email') and not tools.single_email_re.match(data.get('email')): + error["email"] = 'error' + error_message.append(_('Invalid Email! Please enter a valid email address.')) + + # vat validation if data.get("vat") and hasattr(registry["res.partner"], "check_vat"): if request.website.company_id.vat_check_vies: # force full VIES online check @@ -532,7 +541,11 @@ class website_sale(http.Controller): if not data.get(field_name): error[field_name] = 'missing' - return error + # error message for empty required fields + if [err for err in error.values() if err == 'missing']: + error_message.append(_('Some required fields are empty.')) + + return error, error_message def checkout_form_save(self, checkout): cr, uid, context, registry = request.cr, request.uid, request.context, request.registry @@ -624,7 +637,7 @@ class website_sale(http.Controller): values = self.checkout_values(post) - values["error"] = self.checkout_form_validate(values["checkout"]) + values["error"], values["error_message"] = self.checkout_form_validate(values["checkout"]) if values["error"]: return request.website.render("website_sale.checkout", values) diff --git a/addons/website_sale/static/src/css/website_sale.css b/addons/website_sale/static/src/css/website_sale.css index 24af7d36087..9cf135a66b5 100644 --- a/addons/website_sale/static/src/css/website_sale.css +++ b/addons/website_sale/static/src/css/website_sale.css @@ -352,4 +352,7 @@ ul.wizard li:first-child { padding-left: 15px; border-radius: 4px 0 0 4px; } -/*# sourceMappingURL=website_sale.css.map */ +/* Shipping & Billing */ +.label-optional { + font-weight: normal; +} diff --git a/addons/website_sale/static/src/css/website_sale.sass b/addons/website_sale/static/src/css/website_sale.sass index 598baf7cee6..8c5abcfa4d0 100644 --- a/addons/website_sale/static/src/css/website_sale.sass +++ b/addons/website_sale/static/src/css/website_sale.sass @@ -385,3 +385,7 @@ ul.wizard li.text-primary .chevron:before ul.wizard li:first-child padding-left: 15px border-radius: 4px 0 0 4px + +/* Shipping & Billing */ +.label-optional + font-weight: normal diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index f5d128b8392..8e0d128190e 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -781,17 +781,22 @@