<?php /* Plugin Name: Paid Memberships Pro - Australia GST Plugin URI: http://www.paidmembershipspro.com/wp/pmpro-australia-gst/ Description: Apply Australia GST to Checkouts with PMPro Version: .1 Author: Stranger Studios Author URI: http://www.strangerstudios.com */ /* Tax solution for Australia This solution assume the GST tax rate of 10% from March 15th, 2017. Ask your accountant how much tax you must charge. More info: https://www.business.gov.au/info/run/tax/register-for-goods-and-services-tax-gst Edit as needed, then save this file in your plugins folder and activate it through the plugins page in the WP dashboard. */ //add tax info to cost text. this is enabled if the danish checkbox is checked. function agst_pmpro_tax($tax, $values, $order) { $tax = round((float)$values[price] * 0.1, 2); return $tax; } function agst_pmpro_level_cost_text($cost, $level) { //only applicable for levels > 1 $cost .= __(" Customers in Australia will be charged a 10% tax.", 'pmpro-australia-gst'); return $cost; } add_filter("pmpro_level_cost_text", "agst_pmpro_level_cost_text", 10, 2); //set the default country to Australia function agst_pmpro_default_country($country) { return 'AU'; } add_filter('pmpro_default_country', 'agst_pmpro_default_country'); //add AU checkbox to the checkout page function agst_pmpro_checkout_boxes() { ?> <table id="pmpro_pricing_fields" class="pmpro_checkout" width="100%" cellpadding="0" cellspacing="0" border="0"> <thead> <tr> <th> <?php _e('Australian Residents', 'pmpro-australia-gst');?> </th> </tr> </thead> <tbody> <tr> <td> <div> <input id="taxregion" name="taxregion" type="checkbox" value="1" <?php if(!empty($_REQUEST['taxregion']) || !empty($_SESSION['taxregion'])) {?>checked="checked"<?php } ?> /> <label for="taxregion" class="pmpro_normal pmpro_clickable"><?php _e('Check this box if your billing address is in Australia.', 'pmpro-australia-gst');?></label> </div> </td> </tr> </tbody> </table> <?php } add_action("pmpro_checkout_boxes", "agst_pmpro_checkout_boxes"); //update tax calculation if buyer is danish function agst_region_tax_check() { //check request and session if(isset($_REQUEST['taxregion'])) { //update the session var $_SESSION['taxregion'] = $_REQUEST['taxregion']; //not empty? setup the tax function if(!empty($_REQUEST['taxregion'])) add_filter("pmpro_tax", "agst_pmpro_tax", 10, 3); } elseif(!empty($_SESSION['taxregion'])) { //add the filter add_filter("pmpro_tax", "agst_pmpro_tax", 10, 3); } else { //check state and country if(!empty($_REQUEST['bcountry'])) { $bcountry = trim(strtolower($_REQUEST['bcountry'])); if($bcountry == "au") { //billing address is in AU add_filter("pmpro_tax", "agst_pmpro_tax", 10, 3); } } } } add_action("init", "agst_region_tax_check"); //remove the taxregion session var on checkout function agst_pmpro_after_checkout() { if(isset($_SESSION['taxregion'])) unset($_SESSION['taxregion']); } add_action("pmpro_after_checkout", "agst_pmpro_after_checkout");