Fix - Sale Badge percentage issue compatibility for WooCommerce Wholesale Prices
Fix sale badge percentage issues (compatibility for WooCommerce Wholesale Prices).
// Fix - Sale Badge percentage issue compatibility for WooCommerce Wholesale Prices
if (!function_exists('advanced_woo_discount_rules_get_wwp_wholesale_raw_price')) {
function advanced_woo_discount_rules_get_wwp_wholesale_raw_price($product) {
if (
is_object($product) && method_exists($product, 'get_id')
&& class_exists('WWP_Wholesale_Roles') && method_exists('WWP_Wholesale_Roles', 'getInstance')
&& class_exists('WWP_Wholesale_Prices') && method_exists('WWP_Wholesale_Prices', 'get_product_wholesale_price_on_shop_v3')
) {
$product_id = $product->get_id();
$user_wholesale_role = \WWP_Wholesale_Roles::getInstance()->getUserWholesaleRole();
$price_data = \WWP_Wholesale_Prices::get_product_wholesale_price_on_shop_v3($product_id, $user_wholesale_role);
if (is_array($price_data) && isset($price_data['wholesale_price_raw']) && $price_data['wholesale_price_raw'] >= 0) {
return $price_data['wholesale_price_raw'];
}
}
return false;
}
add_filter('advanced_woo_discount_rules_percentage_value_on_sale_badge', function($percentage, $raw_percentage, $product) {
$wholesale_price = advanced_woo_discount_rules_get_wwp_wholesale_raw_price($product);
if ($wholesale_price !== false) {
$discounted_price = apply_filters('advanced_woo_discount_rules_get_product_discount_price_from_custom_price', $wholesale_price, $product, 1, $wholesale_price, 'discounted_price', true, false);
if ($discounted_price !== false){
$percentage = 0;
if ($wholesale_price != 0) {
$percentage = round((($wholesale_price - $discounted_price) / $wholesale_price) * 100, 2);
}
}
}
return $percentage;
}, 100, 3);
}