{{ __('Admin') }} {{ __('Order history') }}
{{ __('Admin · Billing & plans · Order history') }}

{{ __('Order') }} {{ __('history') }}

{{ __('Subscription orders, plan upgrades / downgrades, add-on purchases, and one-time bundles — every commercial decision a workspace has made.') }}

@foreach (['type' => $typeF, 'q' => $q] as $k => $v) @if ($v !== null && $v !== '') @endif @endforeach
Analytics
{{ __('Total orders') }}
{{ $stats['total'] }}
{{ $stats['delta'] }} QoQ
{{ __('Upgrades') }}
{{ $stats['upgrades'] }}
{{ $stats['upgradesMrr'] }}
{{ __('Downgrades') }}
{{ $stats['downgrades'] }}
{{ $stats['downMrr'] }}
{{ __('Add-on bundles') }}
{{ $stats['addons'] }}
{{ $stats['addonMrr'] }}
{{ __('Cancellations') }}
{{ $stats['cancels'] }}
{{ $stats['cancelMrr'] }}
@php $typePills = ['all' => 'All', 'new' => 'New subscription', 'upgrade' => 'Upgrade', 'downgrade' => 'Downgrade', 'addon' => 'Add-on', 'cancel' => 'Cancel']; @endphp @foreach ($typePills as $k => $label) @endforeach
@php // Queried independently of the page's window/filter/pagination // (controller) so a payment awaiting approval is never hidden. $awaiting = collect($awaitingApproval ?? [])->filter(fn($o) => $o->awaitingApproval()); @endphp @if ($awaiting->isNotEmpty())

{{ __('Awaiting approval') }}

({{ $awaiting->count() }})
@foreach ($awaiting as $o) @php $proofUrl = $o->payment_proof_path ? \Illuminate\Support\Facades\Storage::disk('public')->url($o->payment_proof_path) : null; @endphp
{{ $o->order_number }}
{{ $o->workspace?->name ?? '—' }} · {{ ucfirst($o->gateway_slug ?? '—') }}
{!! \App\Support\FormatSettings::formatIn((float) ($o->total_amount ?? $o->amount), $o->currency) !!}
@if ($o->payment_reference) {{ __('Ref:') }} {{ $o->payment_reference }} @endif @if ($proofUrl) {{ __('View proof') }} @endif @if ($o->proof_note) {{ $o->proof_note }} @endif
@csrf
@csrf
@endforeach
@endif
@forelse ($orders as $o) @php $type = \App\Http\Controllers\Admin\OrderHistoryController::typeFor($o); $package = $o->package_id ? \App\Models\Package::find($o->package_id) : null; $rowBg = match ($o->status) { 'failed' => 'bg-accent-amber/5', 'refunded' => 'bg-accent-coral/5', default => '', }; @endphp @empty @endforelse
{{ __('Order #') }} {{ __('Date') }} {{ __('Workspace') }} {{ __('Type') }} {{ __('Plan / item') }} {{ __('MRR Δ') }} {{ __('Total') }} {{ __('Status') }}
{{ $o->order_number }} {{ $o->created_at->format('Y-m-d') }} {{ $o->workspace?->name ?? '—' }} {{ $type['label'] }}
{{ $package?->pname ?? ($o->status === 'paid' && !$o->package_id ? 'Add-on' : '—') }} @if ($package) · {{ $package->plan_unit }} @endif
{{ $package ? 'plan_' . \Illuminate\Support\Str::slug($package->pname) : $o->gateway_slug ?? '—' }}
@if ($o->status === 'paid') +{!! \App\Support\FormatSettings::formatIn((float) ($o->total_amount ?? $o->amount), $o->currency) !!} @elseif (in_array($o->status, ['failed', 'refunded'])) -{!! \App\Support\FormatSettings::formatIn((float) ($o->total_amount ?? $o->amount), $o->currency) !!} @else — @endif {!! \App\Support\FormatSettings::formatIn((float) ($o->total_amount ?? $o->amount), $o->currency) !!} {{ $o->status }} @if ($o->awaitingApproval())
{{ __('awaiting approval') }}
@endif
{{ __('No orders in this window.') }}
Showing {{ $orders->firstItem() ?? 0 }}–{{ $orders->lastItem() ?? 0 }} of {{ number_format($orders->total()) }} {{ __('orders') }}
{{ $orders->onEachSide(1)->links() }}