Hi I'm having a problem displaying a "You Save" figure in my product page. If a user is logged out it shows correctly "You Save: £xx (xx%)". It also shows correctly if a user is logged in and there are no prices entered in the b2b king price tiers for the various user groups and just the "regular price" / "Sale Price" are filled.
Currently the site is set without prices in the various tiers for logged in users, so please note you will be able to see the calculation working as intended
Below is the code snippet I'm using to display the discount amount string. Please could you have a look and let me know what I need to do to make the calculation work when a price is entered into a B2BKing price tier. Thanks
// For simple products
add_action( 'woocommerce_single_product_summary', 'simple_product_saving_amount', 11 );
function simple_product_saving_amount() {
global $product;
if( $product->is_type('simple') && $product->is_on_sale() ) {
$regular_price = (float) wc_get_price_to_display( $product, array('price' => $product->get_regular_price() ) );
$active_price = (float) wc_get_price_to_display( $product, array('price' => $product->get_sale_price() ) );
$saved_amount = $regular_price - $active_price;
$percentage = round( $saved_amount / $regular_price * 100 );
echo '<p id="saving_total_price">'. __("You Save") .': ' . wc_price($saved_amount) . ' ('.$percentage.'%)</p>';
}
}
// For product variations (on variable products)
add_filter( 'woocommerce_available_variation', 'variable_product_saving_amount', 9999, 3 );
function variable_product_saving_amount( $data, $product, $variation ) {
if( $variation->is_on_sale() ) {
$saved_amount = $data['display_regular_price'] - $data['display_price'];
$percentage = round( $saved_amount / $data['display_regular_price'] * 100 );
$data['price_html'] .= '<p id="saving_total_price">'. __("You Save") .': ' . wc_price($saved_amount) . ' ('.$percentage.'%)</p>';
}
return $data;
}