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);
}