From 5e3912758167a164e470fdd81348caec135985f3 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 29 Jun 2021 12:41:41 +1000 Subject: [PATCH] Fixes for subscriptions --- .../Subscription/SubscriptionService.php | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index b381afaca0..10a87d72df 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -385,6 +385,8 @@ class SubscriptionService $pro_rata_charge_amount = 0; $pro_rata_refund_amount = 0; + $is_credit = false; + $last_invoice = Invoice::where('subscription_id', $recurring_invoice->subscription_id) ->where('client_id', $recurring_invoice->client_id) ->where('is_deleted', 0) @@ -392,7 +394,24 @@ class SubscriptionService ->orderBy('id', 'desc') ->first(); - if($last_invoice->balance > 0) + if(!$last_invoice) + { + $last_invoice = Credit::where('subscription_id', $recurring_invoice->subscription_id) + ->where('client_id', $recurring_invoice->client_id) + ->where('is_deleted', 0) + ->withTrashed() + ->orderBy('id', 'desc') + ->first(); + + $is_credit = true; + } + + if($is_credit) + { + $pro_rata_refund_amount = $this->calculateProRataRefund($last_invoice, $old_subscription) * -1; + nlog("pro rata refund = {$pro_rata_refund_amount}"); + } + elseif($last_invoice->balance > 0) { $pro_rata_charge_amount = $this->calculateProRataCharge($last_invoice, $old_subscription); nlog("pro rata charge = {$pro_rata_charge_amount}");