Subscription Module Update - Fix prorate

This commit is contained in:
Leonard Biano
2024-09-05 19:51:56 +08:00
parent 25da60dfc3
commit 7e3617a072
3 changed files with 64 additions and 13 deletions

View File

@@ -219,7 +219,7 @@ class PaypalWebhookController extends Controller
$user_credits_history->subscription_credits_to = $after_credits['total_available_credits']['subscription'];
$user_credits_history->alacarte_credits_from = $before_credits['total_available_credits']['alacarte'];;
$user_credits_history->alacarte_credits_to = $after_credits['total_available_credits']['alacarte'];
$user_credits_history->details = 'Remove unused subscription credits because of downgrade to Flex Plan';
$user_credits_history->details = 'Remove unused subscription credits due to plan migration from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
$user_credits_history->save();
}
@@ -229,11 +229,37 @@ class PaypalWebhookController extends Controller
$plan_credits = $old_subscription->planPrice->total_credits;
$months = $old_subscription->planPrice->custom_interval;
if($old_subscription->planPrice->payment == 'monthly' && $subscription->planPrice->payment == 'monthly'){
$prorate_credits = $subscription->planPrice->total_credits - (( $plan_credits / $months ) * ($months - $paid_months));
$prorate_credits = $prorate_credits >= 0 ? floor($prorate_credits) : -1 * floor(abs($prorate_credits));
$subscription_credits = $user_credits->subscription_credits + $prorate_credits;
$user_credits_history_details = 'Prorated Credits from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
if($old_subscription->planPrice->plan->status){
$prorate_credits = $subscription->planPrice->total_credits - (( $plan_credits / $months ) * ($months - $paid_months));
$prorate_credits = $prorate_credits >= 0 ? floor($prorate_credits) : -1 * floor(abs($prorate_credits));
$subscription_credits = $user_credits->subscription_credits + $prorate_credits;
$user_credits_history_details = 'Prorated Credits from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
} else {
$before_credits = $this->customerService->credits($user_credits->user_id);
$subscription_credits = $user_credits->subscription_credits - $before_credits['total_available_credits']['subscription'];
$user_credits->subscription_credits = $subscription_credits;
$user_credits->save();
$after_credits = $this->customerService->credits($user_credits->user_id);
$user_credits_history = new UserCreditHistory;
$user_credits_history->user_id = $user_credits->user_id;
$user_credits_history->subscription_credits_from = $before_credits['total_available_credits']['subscription'];
$user_credits_history->subscription_credits_to = $after_credits['total_available_credits']['subscription'];
$user_credits_history->alacarte_credits_from = $before_credits['total_available_credits']['alacarte'];;
$user_credits_history->alacarte_credits_to = $after_credits['total_available_credits']['alacarte'];
$user_credits_history->details = 'Remove unused subscription credits due to plan migration from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
$user_credits_history->save();
$subscription_credits = $user_credits->subscription_credits + $subscription->planPrice->total_credits;
$user_credits_history_details = 'Added Total Plan Credits of '.$subscription->planPrice->plan->title;
}
} else {

View File

@@ -317,7 +317,7 @@ class StripeWebhookController extends Controller
$user_credits_history->subscription_credits_to = $after_credits['total_available_credits']['subscription'];
$user_credits_history->alacarte_credits_from = $before_credits['total_available_credits']['alacarte'];;
$user_credits_history->alacarte_credits_to = $after_credits['total_available_credits']['alacarte'];
$user_credits_history->details = 'Remove unused subscription credits because of downgrade to Flex Plan';
$user_credits_history->details = 'Remove unused subscription credits due to plan migration from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
$user_credits_history->save();
}
@@ -327,11 +327,36 @@ class StripeWebhookController extends Controller
$plan_credits = $old_subscription->planPrice->total_credits;
$months = $old_subscription->planPrice->custom_interval;
if($old_subscription->planPrice->payment == 'monthly' && $subscription->planPrice->payment == 'monthly'){
$prorate_credits = $subscription->planPrice->total_credits - (( $plan_credits / $months ) * ($months - $paid_months));
$prorate_credits = $prorate_credits >= 0 ? floor($prorate_credits) : -1 * floor(abs($prorate_credits));
$subscription_credits = $user_credits->subscription_credits + $prorate_credits;
$user_credits_history_details = 'Prorated Credits from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
if($old_subscription->planPrice->plan->status){
$prorate_credits = $subscription->planPrice->total_credits - (( $plan_credits / $months ) * ($months - $paid_months));
$prorate_credits = $prorate_credits >= 0 ? floor($prorate_credits) : -1 * floor(abs($prorate_credits));
$subscription_credits = $user_credits->subscription_credits + $prorate_credits;
$user_credits_history_details = 'Prorated Credits from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
} else {
$before_credits = $this->customerService->credits($user_credits->user_id);
$subscription_credits = $user_credits->subscription_credits - $before_credits['total_available_credits']['subscription'];
$user_credits->subscription_credits = $subscription_credits;
$user_credits->save();
$after_credits = $this->customerService->credits($user_credits->user_id);
$user_credits_history = new UserCreditHistory;
$user_credits_history->user_id = $user_credits->user_id;
$user_credits_history->subscription_credits_from = $before_credits['total_available_credits']['subscription'];
$user_credits_history->subscription_credits_to = $after_credits['total_available_credits']['subscription'];
$user_credits_history->alacarte_credits_from = $before_credits['total_available_credits']['alacarte'];;
$user_credits_history->alacarte_credits_to = $after_credits['total_available_credits']['alacarte'];
$user_credits_history->details = 'Remove unused subscription credits due to plan migration from '.$old_subscription->planPrice->plan->title.' to '.$subscription->planPrice->plan->title;
$user_credits_history->save();
$subscription_credits = $user_credits->subscription_credits + $subscription->planPrice->total_credits;
$user_credits_history_details = 'Added Total Plan Credits of '.$subscription->planPrice->plan->title;
}
} else {

View File

@@ -731,7 +731,7 @@ class SubscriptionController extends Controller
//lets check first if theres active subscription
$active_subscription = CustomerSubscription::where('customer_id',auth()->user()->id)->where('status','active')->where('payment_status','succeeded')->first();
$prorate_discount = 0;
if ($active_subscription && $active_subscription->planPrice->payment =='monthly' && $active_subscription->planPrice->subscription_plan_id != $planPrice->subscription_plan_id && $planPrice->payment == 'monthly') {
if ($active_subscription && $active_subscription->planPrice->plan->status && $active_subscription->planPrice->payment =='monthly' && $active_subscription->planPrice->subscription_plan_id != $planPrice->subscription_plan_id && $planPrice->payment == 'monthly') {
if($active_subscription->payment_method == 'stripe'){
$response = $this->stripePayment->subscriptions->retrieve($active_subscription->txn_id, []);