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

Financial performance

{{ $from->format('d M Y') }} – {{ $to->format('d M Y') }}

Export CSV
@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

@forelse ($monthly as $row) @empty @endforelse
MonthInvoicedCollected OutstandingCollection rateMRRARPU
{{ \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']) }}
@include('components.empty-state', ['icon' => '💰', 'title' => 'No financial data in this period'])
@endsection