public static function checkout_validate_vat() { check_ajax_referer('update-order-review', 'security'); if (!isset($_POST['vat_id']) || !isset($_POST['country'])) { die; } $country = sanitize_text_field($_POST['country']); $vat_id = trim(preg_replace("/[^a-z0-9.]+/i", "", sanitize_text_field($_POST['vat_id']))); // Strip away country code if (substr($vat_id, 0, 2) == $country) { $vat_id = substr($vat_id, 2); } if (WC_GZDP_VAT_Helper::instance()->validate($country, $vat_id)) { // Add price vat filters.. add_filter('woocommerce_cart_get_taxes', array(__CLASS__, "remove_taxes"), 0, 2); echo json_encode(array('valid' => true, 'vat_id' => $country . '-' . $vat_id)); } else { wc_add_notice(__('VAT ID seems to be invalid.', 'woocommerce-germanized-pro'), 'error'); ob_start(); wc_print_notices(); $messages = ob_get_clean(); echo json_encode(array('valid' => false, 'error' => $messages)); } die; }
public function check_vat_exemption($post_data = array()) { $tax_address = WC()->customer->get_taxable_address(); WC()->customer->set_is_vat_exempt(false); if (isset($post_data['billing_vat_id']) && isset($tax_address[0]) && !empty($tax_address[0]) && !empty($post_data['billing_vat_id'])) { $vat_id = $this->parse_vat_number($post_data['billing_vat_id'], $tax_address[0]); if (WC_GZDP_VAT_Helper::instance()->validate($tax_address[0], $vat_id)) { WC()->customer->set_is_vat_exempt(true); } else { wc_add_notice(__('VAT ID seems to be invalid.', 'woocommerce-germanized-pro'), 'error'); } } }