@extends('layouts.app') @section('title', 'Services') @section('content')

Subscriptions

Every provisioned service across the estate.

Due for billing + Provision service
@foreach (['active' => 'Active', 'pending' => 'Pending', 'suspended' => 'Suspended', 'grace' => 'Grace', 'cancelled' => 'Cancelled', 'terminated' => 'Terminated'] as $key => $label) @include('components.kpi', ['label' => $label, 'value' => number_format($counts[$key] ?? 0), 'variant' => $key === 'active' ? 'good' : ($key === 'suspended' || $key === 'terminated' ? 'bad' : ($key === 'grace' ? 'warn' : '')), 'href' => route('services.index', ['status' => $key])]) @endforeach
@forelse ($services as $service) @empty @endforelse
ServiceCustomerPlanRADIUSSession PriceStatusNext billDue
{{ $service->service_number }}
{{ $service->installation_address }}
{{ $service->customer->display_name }}
{{ $service->customer->phone }}
{{ $service->plan?->name }}
{{ $service->plan?->speed_label }}
{{ $service->username }} @if ($service->radius_synced)
synced
@else
not synced
@endif
@if ($service->is_online) online @else offline @endif {{ money($service->effective_price, $service->customer->currency) }} {{ $service->status }} {{ $service->next_billing_date?->format('d M Y') ?: '—' }} @if ($service->next_due_date && $service->next_due_date->isPast() && $service->outstanding > 0) {{ (int) $service->next_due_date->diffInDays(now()) }}d @else {{ $service->next_due_date?->format('d M') ?: '—' }} @endif Open
@include('components.empty-state', ['icon' => '⇄', 'title' => 'No services found', 'message' => 'Provision a subscription to begin.', 'action' => '+ Provision service'])
@if ($services->hasPages())
{{ $services->links('partials.pagination') }}
@endif
@endsection