Subscriptions

This commit is contained in:
David Bomba 2021-04-13 19:34:59 +10:00
parent 803818b53c
commit f2342e640a
6 changed files with 55 additions and 10 deletions

View File

@ -244,6 +244,7 @@ class CreateSingleAccount extends Command
$sub->group_id = $gs->id;
$sub->recurring_product_ids = "{$p1->hashed_id}";
$sub->webhook_configuration = $webhook_config;
$sub->allow_plan_changes = true;
$sub->save();
$sub = SubscriptionFactory::create($company->id, $user->id);
@ -251,6 +252,7 @@ class CreateSingleAccount extends Command
$sub->group_id = $gs->id;
$sub->recurring_product_ids = "{$p2->hashed_id}";
$sub->webhook_configuration = $webhook_config;
$sub->allow_plan_changes = true;
$sub->save();
}

View File

@ -30,15 +30,20 @@ class SubscriptionPlanSwitchController extends Controller
*/
public function index(ShowPlanSwitchRequest $request, RecurringInvoice $recurring_invoice, Subscription $target)
{
//calculate whether a payment is required or whether we pass through a credit for this.
$amount = $recurring_invoice->subscription->service()->calculateUpgradePrice($recurring_invoice, $target);
$amount = $recurring_invoice->subscription
->service()
->calculateUpgradePrice($recurring_invoice, $target);
nlog($amount);
/**
*
* Null value here is a proxy for
* denying the user a change plan option
*
*/
if(is_null($amount))
render('subscriptions.denied');
//if($amount == null)
//please show account upgrade unavailable
//@ben
return render('subscriptions.switch', [
'subscription' => $recurring_invoice->subscription,

View File

@ -72,8 +72,6 @@ class SubscriptionPlanSwitch extends Component
public function mount()
{
// $this->total = $this->subscription->service()->getPriceBetweenSubscriptions($this->subscription, $this->target);
$this->total = $this->amount;
$this->methods = $this->contact->client->service()->getPaymentMethods(100);
@ -86,6 +84,7 @@ class SubscriptionPlanSwitch extends Component
$this->state['show_loading_bar'] = true;
$this->state['invoice'] = $this->subscription->service()->createChangePlanInvoice([
'recurring_invoice' => $this->recurring_invoice,
'subscription' => $this->subscription,
'target' => $this->target,
]);

View File

@ -184,7 +184,7 @@ class RecurringInvoice extends BaseModel
public function invoices()
{
return $this->hasMany(Invoice::class, 'id', 'recurring_id')->withTrashed();
return $this->hasMany(Invoice::class, 'recurring_id', 'id')->withTrashed();
}
public function invitations()

View File

@ -190,7 +190,7 @@ class SubscriptionService
$current_amount = $recurring_invoice->amount;
$currency_frequency = $recurring_invoice->frequency_id;
$outstanding = $recurring_invoice->invoices
$outstanding = $recurring_invoice->invoices()
->where('is_deleted', 0)
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
->where('balance', '>', 0);
@ -238,11 +238,25 @@ class SubscriptionService
//Data array structure
/**
* [
* 'recurring_invoice' => RecurringInvoice::class,
* 'subscription' => Subscription::class,
* 'target' => Subscription::class
* ]
*/
$outstanding_invoice = $recurring_invoice->invoices()
->where('is_deleted', 0)
->whereIn('status_id', [Invoice::STATUS_SENT, Invoice::STATUS_PARTIAL])
->where('balance', '>', 0)
->first();
// we calculate the pro rata refund for this invoice.
if($outstanding_invoice)
{
}
//logic
// Is the user paid up to date? ie are there any outstanding invoices for this subscription

View File

@ -0,0 +1,25 @@
@extends('portal.ninja2020.layout.app')
@section('meta_title', ctrans('texts.subscriptions'))
@section('body')
<div class="container mx-auto">
<!-- Top section showing details between plans -->
<div class="grid grid-cols-12 gap-8">
<div
class="col-span-12 md:col-start-2 md:col-span-4 bg-white rounded px-4 py-5 shadow hover:shadow-lg">
<span class="text-sm uppercase text-gray-900">{{ ctrans('texts.current') }}</span>
<p class="mt-4">{{ $subscription->name }}</p>
<div class="flex justify-end mt-2">
<p> Cannot upgrade / downgrade as you have one of more invoices outstanding</p>
</div>
</div>
</div>
<!-- Payment box -->
</div>
@endsection
@push('footer')
@endpush