/**
  * Get prorated sub price.
  *
  * @param  double     $recurring_price
  * @param  WC_Product $product
  * @return double
  */
 public function get_prorated_price_for_subscription($recurring_price, $product = false)
 {
     if (!$product) {
         $product = $this->product;
     }
     $price = 0;
     if (WC_Subscriptions_Product::is_subscription($product)) {
         if (0 == WC_Subscriptions_Product::get_trial_length($product)) {
             if (WC_Subscriptions_Synchroniser::is_product_prorated($product)) {
                 $next_payment_date = WC_Subscriptions_Synchroniser::calculate_first_payment_date($product, 'timestamp');
                 if (WC_Subscriptions_Synchroniser::is_today($next_payment_date)) {
                     return $recurring_price;
                 }
                 switch ($product->subscription_period) {
                     case 'week':
                         $days_in_cycle = 7 * $product->subscription_period_interval;
                         break;
                     case 'month':
                         $days_in_cycle = date('t') * $product->subscription_period_interval;
                         break;
                     case 'year':
                         $days_in_cycle = (365 + date('L')) * $product->subscription_period_interval;
                         break;
                 }
                 $days_until_next_payment = ceil(($next_payment_date - gmdate('U')) / (60 * 60 * 24));
                 $price = $days_until_next_payment * ($recurring_price / $days_in_cycle);
             } else {
                 $price = $recurring_price;
             }
         }
     }
     return $price;
 }