Title: custom plugin works
Last modified: November 8, 2023

---

# custom plugin works

 *  [flowra92](https://wordpress.org/support/users/flowra92/)
 * (@flowra92)
 * [2 years, 6 months ago](https://wordpress.org/support/topic/custom-plugin-works/)
 * Hi!
 * There is an extension on the website, which is supposed to make the VAT value
   zero after entering the tax number in the case of a company purchase. However,
   it happens sometimes that the VAT is left in, this is not related to whether 
   the user is registered or not and I have not managed to reproduce the error yet,
   but unfortunately I have received orders… The coding of the extension is as follows:
 *     ```wp-block-code
       <?php
       /*
       Plugin Name: Zero ado
       Plugin URI: http://yourwebsite.com/
       Description: Validates VAT numbers during checkout and applies a zero tax rate if the VAT number is valid.
       Version: 1.0
       Author: Your Name
       Author URI: http://yourwebsite.com/
       */
   
       // Enqueueing the javascript file
       function zero_ado_scripts() {
           wp_enqueue_script('zero-ado-js', plugin_dir_url(__FILE__) . 'zero-ado.js', array('jquery'), '1.0', true);
           wp_localize_script('zero-ado-js', 'ajax_object', array('ajax_url' => admin_url('admin-ajax.php')));
       }
       add_action('wp_enqueue_scripts', 'zero_ado_scripts');
   
       // VAT number validation function
       function validate_vat_number($vat) {
           return preg_match('/^\d{8}-\d{1}-\d{2}$/', $vat);
       }
   
       // AJAX handler to validate VAT and apply zero rate
       function check_vat_number_ajax_handler() {
           if (validate_vat_number($_POST['billing_tax_number'])) {
               WC()->customer->set_is_vat_exempt(true);
               echo json_encode(['success' => true]);
           } else {
               WC()->customer->set_is_vat_exempt(false);
               echo json_encode(['success' => false, 'error' => 'Nem megfelelő adószám formátum!']);
           }
   
           WC()->cart->calculate_totals();
           wp_die();
       }
       add_action('wp_ajax_check_vat_number', 'check_vat_number_ajax_handler');
       add_action('wp_ajax_nopriv_check_vat_number', 'check_vat_number_ajax_handler');
       ?>
       ```
   
 *     ```wp-block-code
       jQuery(function($) {
           var vatValidated = true; // Default to true
   
           function setLoader(loading) {
               // ... (maradhat változatlan)
           }
   
           function validateVATNumber() {
               var vatNumber = $('#billing_tax_number').val();
               var companyName = $('#billing_company').val(); // Get the company name
   
               // Check if the company name is empty
               if (companyName.trim() === '') {
                   vatValidated = true; // No VAT validation required if the company name is empty
                   $('button[name="woocommerce_checkout_place_order"]').prop('disabled', false); // Enable place order button
                   return;
               }
   
               setLoader(true); // Show loading
   
               $.ajax({
                   url: ajax_object.ajax_url,
                   method: 'POST',
                   dataType: 'json', // Expect JSON response from the server
                   data: {
                       action: 'check_vat_number',
                       billing_tax_number: vatNumber
                   },
                   success: function(response) {
                       if(response.success) {
                           vatValidated = true; // VAT is valid
                       } else {
                           vatValidated = false; // VAT is invalid
                           alert('Nem megfelelő adószám formátum!');
                       }
                   },
                   error: function() {
                       vatValidated = false; // In case of AJAX error, consider VAT as invalid
                   },
                   complete: function() {
                       setLoader(false); // Hide loading
                       $('body').trigger('update_checkout');
                       // Re-check if the place order button should be enabled
                       $('button[name="woocommerce_checkout_place_order"]').prop('disabled', !vatValidated);
                   }
               });
           }
   
           // Run VAT validation when the VAT number field is changed
           $('#billing_tax_number').on('change', function() {
               validateVATNumber();
           });
   
           // Check VAT validation status before placing the order
           $('form.checkout').on('checkout_place_order', function() {
               if (!vatValidated) {
                   validateVATNumber(); // Re-validate VAT if not done
                   return false; // Prevent the form from submitting
               }
               return true; // VAT is validated or not required, proceed with form submission
           });
   
           // Initially disable the place order button until VAT is validated
           $('button[name="woocommerce_checkout_place_order"]').prop('disabled', true);
   
           // Clear the VAT number field on page load
           $('#billing_tax_number').val('');
       });
       ```
   
 * Thank You!
 * The page I need help with: _[[log in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fwordpress.org%2Fsupport%2Ftopic%2Fcustom-plugin-works%2F%3Foutput_format%3Dmd&locale=en_US)
   to see the link]_

Viewing 1 replies (of 1 total)

 *  Moderator [t-p](https://wordpress.org/support/users/t-p/)
 * (@t-p)
 * [2 years, 6 months ago](https://wordpress.org/support/topic/custom-plugin-works/#post-17185427)
 * What’s the name of the plugin?
    This plugin acquired from?

Viewing 1 replies (of 1 total)

The topic ‘custom plugin works’ is closed to new replies.

 * In: [Everything else WordPress](https://wordpress.org/support/forum/miscellaneous/)
 * 1 reply
 * 2 participants
 * Last reply from: [t-p](https://wordpress.org/support/users/t-p/)
 * Last activity: [2 years, 6 months ago](https://wordpress.org/support/topic/custom-plugin-works/#post-17185427)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
