@extends('layouts.admin') @section('title','Draft orders') @section('content') @php $columns = [ 'draft' => 'Draft', 'customer' => 'Customer', 'items' => 'Items', 'source' => 'Source', 'status' => 'Status', 'total' => 'Total', 'expires' => 'Expires', 'actions' => 'Actions', ]; $label = fn (string $v) => ucwords(str_replace('_', ' ', $v)); $statusTone = fn (string $s) => match ($s) { 'open' => 'info', 'invoice_sent' => 'warning', 'paid' => 'success', 'converted' => 'success', 'expired', 'canceled' => 'muted', default => 'muted', }; $activeChips = collect([ 'status' => request('status'), 'source' => request('source'), 'country' => request('country'), 'from' => request('from'), 'to' => request('to'), 'sort' => request('sort') && request('sort') !== 'newest' ? request('sort') : null, ])->filter(); @endphp Expiring ({{ number_format($stats['expiring_soon']) }}) New draft
Active drafts {{ number_format($stats['open'] + $stats['invoice_sent'] + $stats['paid']) }} Open / invoiced / paid
Pipeline value AUD {{ number_format($stats['open_value_cents'] / 100, 0) }} Not yet converted
Awaiting payment {{ number_format($stats['invoice_sent']) }} Invoice sent Converted {{ number_format($stats['converted']) }} AUD {{ number_format($stats['converted_value_cents'] / 100, 0) }} Expiring soon {{ number_format($stats['expiring_soon']) }} Next 48 hours
@foreach([ ['label' => 'All', 'params' => []], ['label' => 'Active', 'params' => ['status' => 'active']], ['label' => 'Open', 'params' => ['status' => 'open']], ['label' => 'Invoice sent', 'params' => ['status' => 'invoice_sent']], ['label' => 'Paid', 'params' => ['status' => 'paid']], ['label' => 'Converted', 'params' => ['status' => 'converted']], ['label' => 'Expiring', 'params' => ['status' => 'expiring']], ] as $chip) @php $isActive = collect($chip['params'])->every(fn ($v, $k) => request($k) === $v) && (empty($chip['params']) ? ! request()->hasAny(['status', 'source', 'country']) : true); @endphp {{ $chip['label'] }} @endforeach
@if($activeChips->isNotEmpty())
Active @foreach($activeChips as $key => $value) {{ $label($key) }}: {{ $label((string) $value) }} @endforeach Clear all
@endif
Draft Customer Items Source Status Total Expires @forelse($draftOrders as $draft) @php $firstLine = collect($draft->lines ?? [])->first(); @endphp
{{ $draft->number }}
{{ $draft->created_at?->diffForHumans() }}
{{ $draft->company_name ?: ($draft->email ?: 'Guest') }}
{{ $draft->email }} @if($draft->country) · {{ $draft->country }} @endif
{{ $firstLine['title'] ?? 'No lines' }}
{{ $draft->line_count ?: collect($draft->lines)->sum('quantity') }} items @if($draft->po_number) · PO {{ $draft->po_number }} @endif
{{ $label($draft->source ?: 'admin') }} {{ $label($draft->status) }} {{ $draft->labeledTotal() }} @if($draft->reservation_expires_at) {{ $draft->reservation_expires_at->format('M j, Y') }} @else — @endif Open @empty No draft orders match these filters. @endforelse
{{ $draftOrders->links() }}
@endsection