Clean up subscription service

This commit is contained in:
David Bomba 2021-04-16 08:58:57 +10:00
parent 84ea66493c
commit a994e6f916

View File

@ -345,7 +345,7 @@ class SubscriptionService
nlog("total payable = {$total_payable}"); nlog("total payable = {$total_payable}");
$credit = $this->createCredit($pro_rata_refund_amount, $last_invoice, $target_subscription, $old_subscription); $credit = $this->createCredit($last_invoice, $target_subscription);
$new_recurring_invoice = $this->createNewRecurringInvoice($recurring_invoice); $new_recurring_invoice = $this->createNewRecurringInvoice($recurring_invoice);
@ -479,7 +479,7 @@ class SubscriptionService
return $this->handleRedirect('/client/recurring_invoices/'.$recurring_invoice->hashed_id); return $this->handleRedirect('/client/recurring_invoices/'.$recurring_invoice->hashed_id);
} }
private function createCredit($refund_amount, $last_invoice, $target, $old_subscription) private function createCredit($last_invoice, $target)
{ {
$subscription_repo = new SubscriptionRepository(); $subscription_repo = new SubscriptionRepository();
@ -502,13 +502,14 @@ class SubscriptionService
return $credit_repo->save($data, $credit)->service()->markSent()->fillDefaults()->save(); return $credit_repo->save($data, $credit)->service()->markSent()->fillDefaults()->save();
} }
/** /**
* 'client_id' => 2, * When changing plans we need to generate a pro rata
'date' => '2021-04-13', * invoice which takes into account any credits.
'invitations' => *
'user_input_promo_code' => NULL, * @param Invoice $last_invoice
'coupon' => '', * @param Subscription $target
'quantity' => 1, * @return Invoice
*/ */
private function proRataInvoice($last_invoice, $target) private function proRataInvoice($last_invoice, $target)
{ {
@ -519,9 +520,7 @@ class SubscriptionService
$invoice->date = now()->format('Y-m-d'); $invoice->date = now()->format('Y-m-d');
$invoice->subscription_id = $this->subscription->id; $invoice->subscription_id = $this->subscription->id;
$line_items = $subscription_repo->generateLineItems($target); $invoice->line_items = array_merge($subscription_repo->generateLineItems($target), $this->calculateProRataRefundItems($last_invoice));
$invoice->line_items = array_merge($line_items, $this->calculateProRataRefundItems($last_invoice));
$data = [ $data = [
'client_id' => $last_invoice->client_id, 'client_id' => $last_invoice->client_id,