Skip to content

Instantly share code, notes, and snippets.

@MaryOJob
Forked from ideadude/pmpro-australia-gst.php
Last active December 21, 2023 12:07
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/12293a0a1da97f2227688941bec22767 to your computer and use it in GitHub Desktop.
Save MaryOJob/12293a0a1da97f2227688941bec22767 to your computer and use it in GitHub Desktop.
Paid Memberships Pro - Australia GST (Checkbox on by default)
<?php // do not copy this line
/*
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.
/*
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 assumes 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 Australia 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% GST.", '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 and check it by default
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" checked="checked" /> <label for="taxregion" class="pmpro_normal pmpro_label-inline 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 the buyer is Australian
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