From 1739c69b8532705b8d08a74d2837fcf3e1612ac7 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 29 Jun 2021 11:41:30 +1000 Subject: [PATCH] Fixes for subscriptions --- .../Subscription/SubscriptionService.php | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/Services/Subscription/SubscriptionService.php b/app/Services/Subscription/SubscriptionService.php index d639c1b2123f..7eb8ae3cc6c8 100644 --- a/app/Services/Subscription/SubscriptionService.php +++ b/app/Services/Subscription/SubscriptionService.php @@ -437,6 +437,7 @@ 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) @@ -445,7 +446,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}");