PPOM for WooCommerce plugin compatibility (apply discount only on base price of product)

Ensure compatibility with PPOM for WooCommerce plugin to apply discounts only on the base product price.

// PPOM Product Addon plugin compatibility (apply discount only on base price of product)
if (!function_exists('advanced_woo_discount_rules_get_ppom_total_addon_price')) {
    function advanced_woo_discount_rules_get_ppom_total_addon_price($cart_item) {
        if (isset($cart_item['data']) && isset($cart_item['ppom']['fields']) && function_exists('ppom_get_field_prices') && function_exists('ppom_price_get_addon_total')) {
            $product_id = $cart_item['data']->get_id();
            $variation_id = isset($cart_item['variation_id']) ? $cart_item['variation_id'] : '';
            $ppom_fields_post = $cart_item['ppom']['fields'];
            $product_quantity = floatval($cart_item['quantity']);
            $ppom_field_prices = ppom_get_field_prices($ppom_fields_post, $product_id, $product_quantity, $variation_id, $cart_item);
            $total_addon_price = ppom_price_get_addon_total($ppom_field_prices);
            return $total_addon_price;
        }
        return 0;
    }

    add_filter('advanced_woo_discount_rules_product_original_price_on_before_calculate_discount', function($product_price, $product, $quantity, $cart_item, $calculate_discount_from) {
        if (isset($cart_item['ppom']['fields'])) {
            $total_addon_price = advanced_woo_discount_rules_get_ppom_total_addon_price($cart_item);
            return $product_price - $total_addon_price;
        }
        return $product_price;
    }, 10, 5);
    
    add_filter('advanced_woo_discount_rules_product_price_on_before_calculate_discount', function($product_price, $product, $quantity, $cart_item, $calculate_discount_from) {
        if (isset($cart_item['ppom']['fields'])) {
            $total_addon_price = advanced_woo_discount_rules_get_ppom_total_addon_price($cart_item);
            return $product_price - $total_addon_price;
        }
        return $product_price;
    }, 10, 5);

    add_filter('advanced_woo_discount_rules_discounted_price_of_cart_item', function($price, $cart_item, $cart_object, $cart_item_key) {
        if (isset($cart_item['ppom']['fields'])) {
            $total_addon_price = advanced_woo_discount_rules_get_ppom_total_addon_price($cart_item);
            return $price + $total_addon_price;
        }
        return $price;
    }, 10, 4);
}