Apply discount from Wholesale price, compatibility for WooCommerce Wholesale Pro by Barn2

Calculate discounts based on wholesale prices using WooCommerce Wholesale Pro.

if (!function_exists('advanced_woo_discount_rules_get_wholesale_price_by_barn2')) {
    function advanced_woo_discount_rules_get_wholesale_price_by_barn2($product_price, $product, $quantity, $cart_item, $calculate_discount_from) {
		if (is_user_logged_in() && $product->is_type(['simple', 'variation'])) {
            if (class_exists('\Barn2\Plugin\WC_Wholesale_Pro\Util') && class_exists('\Barn2\Plugin\WC_Wholesale_Pro\Controller\Wholesale_Price')) {
                $user = wp_get_current_user();
                if (
                    !\Barn2\Plugin\WC_Wholesale_Pro\Util::is_wholesale_user($user) 
                    && !\Barn2\Plugin\WC_Wholesale_Pro\Util::admin_has_wholesale_pricing($user)
                ) {
                    return $product_price;
                }
        
                $wholesale_role = \Barn2\Plugin\WC_Wholesale_Pro\Util::get_current_user_wholesale_role_object();
                if ($wholesale_role === false) {
                    return $product_price;
                }
        
                $wholesale_product = new \Barn2\Plugin\WC_Wholesale_Pro\Controller\Wholesale_Price($product, $wholesale_role);
                if ($wholesale_product && $wholesale_product->get_price() !== false) {
                    $product_price = $wholesale_product->get_price();
                }
            }
		}
        return $product_price;
    }

    add_filter('advanced_woo_discount_rules_product_original_price_on_before_calculate_discount', 'advanced_woo_discount_rules_get_wholesale_price_by_barn2', 100, 5);
    add_filter('advanced_woo_discount_rules_product_price_on_before_calculate_discount', 'advanced_woo_discount_rules_get_wholesale_price_by_barn2', 100, 5);
}