WooCommerce Subscription compatible - apply discount only for the initial order
WooCommerce Subscription compatible - apply discount only for the initial order
add_filter('woo_discount_rules_has_price_override', '__return_true', 10);
function woocommerce_after_calculate_totals_woo_discount_and_subscription_compatible(){
remove_action('woocommerce_after_calculate_totals', 'woocommerce_after_calculate_totals_woo_discount_and_subscription_compatible', 99999);
if(!empty(WC()->cart)){
if(!empty(WC()->cart->recurring_carts)){
foreach (WC()->cart->recurring_carts as $key => $recurring_carts){
if(!empty($recurring_carts)){
if(isset($recurring_carts->cart_contents)){
$cart_contents = $recurring_carts->cart_contents;
if(!empty($cart_contents)){
foreach ($cart_contents as $cart_key => $recurring_cart){
if(isset($recurring_cart['woo_discount'])){
if(isset($recurring_cart['woo_discount']['original_price'])){
$recurring_cart['data']->set_price($recurring_cart['woo_discount']['original_price']);
}
}
}
}
$recurring_carts->calculate_totals();
global $flycart_woo_discount_rules;
if(!empty($flycart_woo_discount_rules)){
if(!empty($flycart_woo_discount_rules->discountBase)){
$flycart_woo_discount_rules->discountBase->handlePriceDiscount();
if(class_exists('WC_Cart_Totals')){
remove_filter( 'woocommerce_calculated_total', 'WC_Subscriptions_Cart::calculate_subscription_totals', 1000, 2 );
new WC_Cart_Totals( WC()->cart );
add_filter( 'woocommerce_calculated_total', 'WC_Subscriptions_Cart::calculate_subscription_totals', 1000, 2 );
}
}
}
}
}
}
}
}
add_action('woocommerce_after_calculate_totals', 'woocommerce_after_calculate_totals_woo_discount_and_subscription_compatible', 99999);
}
add_action('woocommerce_after_calculate_totals', 'woocommerce_after_calculate_totals_woo_discount_and_subscription_compatible', 99999);