Skip to content

Instantly share code, notes, and snippets.

@MaryOJob
Forked from strangerstudios/pmpro-australia-gst.php
Created September 10, 2020 06:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MaryOJob/d1a9d9063afeeca58e9591f3e881b974 to your computer and use it in GitHub Desktop.
Save MaryOJob/d1a9d9063afeeca58e9591f3e881b974 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");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment