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

Invoices

{{ $invoices->total() }} invoice(s) matching your filters.

Run billing cycle Export CSV + New invoice
@include('components.kpi', ['label' => 'Total issued', 'value' => money($totals['issued']), 'variant' => 'info', 'href' => route('invoices.index')]) @include('components.kpi', ['label' => 'Paid', 'value' => money($totals['paid']), 'variant' => 'good', 'href' => route('invoices.index', ['status' => 'paid'])]) @include('components.kpi', ['label' => 'Outstanding', 'value' => money($totals['outstanding']), 'variant' => 'warn', 'href' => route('invoices.index', ['status' => 'issued'])]) @include('components.kpi', ['label' => 'Overdue', 'value' => money($totals['overdue']), 'variant' => 'bad', 'href' => route('invoices.index', ['status' => 'overdue'])]) @include('components.kpi', ['label' => 'Partially paid', 'value' => money($totals['partial']), 'href' => route('invoices.index', ['status' => 'partially_paid'])]) @include('components.kpi', ['label' => 'Drafts', 'value' => money($totals['draft']), 'href' => route('invoices.index', ['status' => 'draft'])])
@forelse ($invoices as $invoice) @empty @endforelse
InvoiceCustomerTypePeriodIssuedDue TotalBalanceStatus
{{ $invoice->invoice_number }} @if ($invoice->service)
{{ $invoice->service->service_number }}
@endif
{{ $invoice->customer->display_name }} {{ title_case_words($invoice->type) }} {{ $invoice->period_start?->format('d M') ?? '—' }} @if ($invoice->period_end) – {{ $invoice->period_end->format('d M Y') }} @endif {{ $invoice->issue_date->format('d M Y') }} @if ($invoice->is_overdue && $invoice->balance > 0) {{ (int) $invoice->due_date->diffInDays(now()) }}d late @else {{ $invoice->due_date->format('d M Y') }} @endif {{ money($invoice->total, $invoice->currency) }} {{ money($invoice->balance, $invoice->currency) }} {{ $invoice->status }} Open @if ($invoice->balance > 0 && $invoice->status !== 'draft') Collect @endif
@include('components.empty-state', ['icon' => '📄', 'title' => 'No invoices found', 'message' => 'Run the billing cycle or raise a manual invoice.', 'action' => '+ New invoice'])
@if ($invoices->hasPages())
{{ $invoices->links('partials.pagination') }}
@endif
@endsection