@extends('layouts.app')
@section('title', 'Financial report')
@section('content')
Financial performance
{{ $from->format('d M Y') }} – {{ $to->format('d M Y') }}
@include('components.kpi', ['label' => 'Revenue', 'value' => money($summary['revenue']), 'variant' => 'good', 'href' => '#'])
@include('components.kpi', ['label' => 'MRR', 'value' => money($summary['mrr']), 'variant' => 'info', 'href' => '#'])
@include('components.kpi', ['label' => 'ARR', 'value' => money($summary['arr']), 'variant' => 'info', 'href' => '#'])
@include('components.kpi', ['label' => 'ARPU', 'value' => money($summary['arpu']), 'href' => '#'])
@include('components.kpi', ['label' => 'Collection rate', 'value' => percent($summary['collection_rate']),
'variant' => $summary['collection_rate'] >= 90 ? 'good' : 'warn', 'href' => '#'])
@include('components.kpi', ['label' => 'Outstanding', 'value' => money($summary['outstanding']),
'variant' => 'bad', 'href' => route('reports.collections')])
Revenue by month
@include('components.chart', [
'series' => collect($monthly)->map(fn ($m) => [
'label' => \Carbon\Carbon::parse($m['month'])->format('M y'),
'value' => $m['revenue'],
])->all(),
'type' => 'bar', 'format' => 'money', 'height' => 210,
])
Collections vs receivables
@include('components.chart', [
'series' => collect($monthly)->map(fn ($m) => [
'label' => \Carbon\Carbon::parse($m['month'])->format('M y'),
'value' => $m['collected'],
])->all(),
'type' => 'line', 'format' => 'money', 'height' => 210,
])
Monthly breakdown
| Month | Invoiced | Collected |
Outstanding | Collection rate | MRR | ARPU |
@forelse ($monthly as $row)
| {{ \Carbon\Carbon::parse($row['month'])->format('F Y') }} |
{{ money($row['invoiced']) }} |
{{ money($row['collected']) }} |
{{ money($row['outstanding']) }} |
{{ percent($row['collection_rate']) }} |
{{ money($row['mrr']) }} |
{{ money($row['arpu']) }} |
@empty
| @include('components.empty-state', ['icon' => '💰', 'title' => 'No financial data in this period']) |
@endforelse
@endsection