/** * Aelia EU VAT Assistant for WooCommerce - Update VAT data for existing orders. * This code loops through existing orders and calls the EU VAT Assistant functions * that update the VAT data stored against each one. * * HOW TO USE THIS CODE * Add the code to the bottom of your theme's functions.php file (see https://www.skyverge.com/blog/add-custom-code-to-wordpress/). * * The script accepts the following URL arguments: * - update_order_vat_data=1. This argument triggers the processing of orders. * - start_date=YYMMDD. The script will take orders created on or after this date. * - end_date=YYMMDD. The script will take orders created BEFORE this date. * - debug=1. If specified, the script will print out debug information. * * GPL DISCLAIMER * Because this code program is free of charge, there is no warranty for it, to the extent permitted by applicable law. * Except when otherwise stated in writing the copyright holders and/or other parties provide the program "as is" * without warranty of any kind, either expressed or implied, including, but not limited to, the implied warranties of * merchantability and fitness for a particular purpose. The entire risk as to the quality and performance of the program * is with you. should the program prove defective, you assume the cost of all necessary servicing, repair or correction. * * Need a consultation, or assistance to customise this code? Find us on Codeable: https://aelia.co/hire_us * * @author Aelia */ add_action('admin_init', function() { if(!is_admin() || empty($_GET['update_order_vat_data']) || !current_user_can('manage_woocommerce')) { return; } global $wpdb; // Start date if(isset($_GET['start_date'])) { $start_date = $_GET['start_date']; } else { // Take the 1st of January of current year as the default start date $start_date = date('Y0101'); } // End date if(isset($_GET['end_date'])) { $end_date = $_GET['end_date']; } else { // Take tomorrow as the default end date $default_end_date = new DateTime('tomorrow'); $end_date = $default_end_date->format('Ymd'); } $px = $wpdb->prefix; $SQL = " SELECT ORDERS.ID AS order_id FROM {$px}posts AS ORDERS WHERE (ORDERS.post_type IN ('shop_order')) AND (ORDERS.post_status IN ('wc-processing', 'wc-completed')) AND (ORDERS.post_date >= '$start_date') AND (ORDERS.post_date < '$end_date') "; // Debug if(isset($_GET['debug'])) { var_dump($SQL); } // Fetch the orders to process $dataset = $wpdb->get_results($SQL); if(isset($_GET['debug'])) { var_dump($SQL, $dataset); } foreach($dataset as $entry) { $order = new \Aelia\WC\EU_VAT_Assistant\Order($entry->order_id); // Generate and store details about order VAT $order->update_vat_data(); // Save EU VAT compliance evidence //$order->store_vat_evidence(); } });