diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 6df34f232b4..34ec5711bc6 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -310,7 +310,7 @@ class website_sale(http.Controller): return values mandatory_billing_fields = ["name", "phone", "email", "street", "city", "country_id", "zip"] - optional_billing_fields = ["street2", "state_id"] + optional_billing_fields = ["street2", "state_id", "vat"] mandatory_shipping_fields = ["name", "phone", "street", "city", "country_id", "zip"] optional_shipping_fields = ["state_id"] @@ -355,6 +355,17 @@ class website_sale(http.Controller): if not data.get(field_name): error[field_name] = 'missing' + if data.get("vat") and hasattr(registry["res.partner"], "check_vat"): + if request.website.company_id.vat_check_vies: + # force full VIES online check + check_func = registry["res.partner"].vies_vat_check + else: + # quick and partial off-line checksum validation + check_func = registry["res.partner"].simple_vat_check + vat_country, vat_number = registry["res.partner"]._split_vat(data.get("vat")) + if not check_func(cr, uid, vat_country, vat_number, context=None): # simple_vat_check + error["vat"] = 'error' + if data.get("shipping_different"): for field_name in self.mandatory_shipping_fields: field_name = 'shipping_' + field_name diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 8e96628c38b..b89b4bd50b5 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -704,6 +704,11 @@ +
+
+ + +