diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index 6df34f232b4f6b211aa6d43bd1b157641999b2a8..34ec5711bc699247a728e286111016117e184536 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 8e96628c38bff5b70bf94b578ade03b23dcf3cf0..b89b4bd50b5cc9f47fb5f122dd0c0c828551f772 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -704,6 +704,11 @@ <label class="control-label" for="street2" style="font-weight: normal">Company Name</label> <input type="text" name="street2" class="form-control" t-att-value="checkout.get('street2')"/> </div> + <div class="col-lg-6"> </div> + <div t-attf-class="form-group #{error.get('vat') and 'has-error' or ''} col-lg-6"> + <label class="control-label" for="vat" style="font-weight: normal">VAT Number</label> + <input type="text" name="vat" class="form-control" t-att-value="checkout.get('vat')"/> + </div> <div t-attf-class="form-group #{error.get('email') and 'has-error' or ''} col-lg-6"> <label class="control-label" for="contact_name">Email</label> <input type="email" name="email" class="form-control" t-att-value="checkout.get('email')"/>