Skip to content

Instantly share code, notes, and snippets.

@strangerstudios
Created March 15, 2017 20:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 5 You must be signed in to fork a gist
  • Save strangerstudios/4efc42d30b3fda4fafb8f213d3d17824 to your computer and use it in GitHub Desktop.
Save strangerstudios/4efc42d30b3fda4fafb8f213d3d17824 to your computer and use it in GitHub Desktop.
Paid Memberships Pro - Australia GST
<?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");
@ideadude
Copy link

Forked the gist here: https://gist.github.com/ideadude/01c6c1ca08d98470006770bad69bdb2d

The fork fixes an issue where the label for the checkbox is pushed down one new line. It may fix other issues in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment