@extends('layouts.admin') @section('title','Order '.$order->number) @section('content') @php $label = fn (?string $v) => $v ? ucwords(str_replace(['_', '.'], ' ', $v)) : '—'; $payTone = match ($order->payment_status) { 'paid' => 'success', 'pending', 'authorized', 'partially_paid' => 'warning', 'failed', 'voided' => 'danger', default => 'muted', }; $fulTone = match ($order->fulfillment_status) { 'fulfilled' => 'success', 'partially_fulfilled', 'in_progress', 'scheduled' => 'warning', 'on_hold' => 'danger', default => 'muted', }; $statusTone = match ($order->status) { 'open' => 'info', 'canceled' => 'danger', default => 'muted', }; $itemQty = $order->lines->sum('quantity'); $remainingQty = $order->lines->sum(fn ($line) => max(0, $line->quantity - ($fulfilledByLine[$line->id] ?? 0))); $addr = function (?array $a): array { if (! is_array($a) || empty($a)) { return []; } return $a; }; $ship = $addr($order->shipping_address); $bill = $addr($order->billing_address); $timelineIcon = fn (string $event) => match (true) { str_contains($event, 'payment') || str_contains($event, 'paid') || str_contains($event, 'refund') => 'credit-card', str_contains($event, 'fulfill') || str_contains($event, 'ship') => 'truck', str_contains($event, 'cancel') => 'ban', str_contains($event, 'fraud') => 'shield-alert', str_contains($event, 'return') => 'undo-2', default => 'activity', }; @endphp
{{-- Hero --}}
Orders / {{ $order->number }}

{{ $order->number }}

{{ $label($order->status) }} {{ $label($order->payment_status) }} {{ $label($order->fulfillment_status) }} @if($order->fraud_status) Fraud {{ $label($order->fraud_status) }}@if($order->fraud_score) · {{ $order->fraud_score }}@endif @endif

Placed {{ $order->created_at?->format('M j, Y · g:i A') }} · {{ $order->created_at?->diffForHumans() }} @if($order->canceled_at) · Canceled {{ $order->canceled_at->format('M j, Y') }} @endif

Order total
{{ $order->money('total_cents') }}
@if($order->refunded_cents)
Refunded {{ $order->money('refunded_cents') }} · Net {{ $order->moneyFromCents($order->netTotalCents()) }}
@else
{{ $itemQty }} items · {{ $order->currency }}
@endif
All orders @if($order->customer) Customer @endif
{{-- KPI strip --}}
Items {{ $itemQty }} {{ $order->lines->count() }} line{{ $order->lines->count() === 1 ? '' : 's' }}
To fulfill {{ $remainingQty }} {{ $order->fulfillments->count() }} shipment{{ $order->fulfillments->count() === 1 ? '' : 's' }}
Payments {{ $order->payments->count() }} {{ $label($order->payment_status) }}
Returns {{ $order->returns->count() }} {{ $order->returns->sum('refund_cents') ? $order->moneyFromCents((int) $order->returns->sum('refund_cents')) : 'None open' }}
Customer LTV {{ $order->moneyFromCents($customerLifetimeCents) }} {{ $customerOrderCount }} order{{ $customerOrderCount === 1 ? '' : 's' }}
{{-- Line items --}}

Line items

Catalogue lines, quantities, and fulfillment progress

@foreach($order->lines as $line) @php $shipped = $fulfilledByLine[$line->id] ?? 0; $left = max(0, $line->quantity - $shipped); $pct = $line->quantity > 0 ? round(($shipped / $line->quantity) * 100) : 0; @endphp
{{ $line->title }}
@if($line->variant_title)
{{ $line->variant_title }}
@endif
@if($line->sku)SKU {{ $line->sku }}@endif @if($line->product_id)Product #{{ $line->product_id }}@endif @if($line->variant_id)Variant #{{ $line->variant_id }}@endif
{{ $order->moneyFromCents($line->total_cents) }}
{{ $line->quantity }} × {{ $order->moneyFromCents($line->unit_price_cents) }}
@if($line->tax_cents)
Tax {{ $order->moneyFromCents($line->tax_cents) }}
@endif
Fulfilled {{ $shipped }}/{{ $line->quantity }} {{ $left }} remaining
@endforeach
Subtotal{{ $order->money('subtotal_cents') }}
Shipping{{ $order->shipping_method ? ' · '.$order->shipping_method : '' }}{{ $order->money('shipping_cents') }}
Tax{{ $order->money('tax_cents') }}
@if($order->discount_cents)
Discount−{{ $order->money('discount_cents') }}
@endif
Total{{ $order->money('total_cents') }}
@if($order->refunded_cents)
Refunded−{{ $order->money('refunded_cents') }}
Net{{ $order->moneyFromCents($order->netTotalCents()) }}
@endif
@if(is_array($order->tax_lines) && count($order->tax_lines))
Tax lines
    @foreach($order->tax_lines as $taxLine)
  • {{ is_array($taxLine) ? ($taxLine['title'] ?? $taxLine['name'] ?? 'Tax') : 'Tax' }} @if(is_array($taxLine) && isset($taxLine['price_cents'])) {{ $order->moneyFromCents((int) $taxLine['price_cents']) }} @elseif(is_array($taxLine) && isset($taxLine['amount_cents'])) {{ $order->moneyFromCents((int) $taxLine['amount_cents']) }} @else — @endif
  • @endforeach
@endif
@include('admin.orders.partials.costs') {{-- Payments --}}

Payments & refunds

Provider captures, authorizations, and refund ledger

@forelse($order->payments as $payment) @foreach($payment->refunds as $refund) @endforeach @empty @endforelse
Provider Status Amount Reference When
{{ $label($payment->provider) }}
@if(!empty($payment->meta))
Has metadata
@endif
{{ $label($payment->status) }} {{ $payment->currency }} {{ number_format($payment->amount_cents / 100, 2) }} {{ $payment->provider_ref ?: '—' }} {{ $payment->created_at?->format('M j, Y g:i A') }}
↳ Refund {{ $label($refund->status) }} −{{ $order->moneyFromCents($refund->amount_cents) }} {{ $refund->reason ?: ($refund->restock ? 'Restock' : '—') }} {{ $refund->created_at?->format('M j, Y g:i A') }}
No payments recorded.
{{-- Fulfillments --}}

Fulfillments

Shipments, carriers, and tracking

@forelse($order->fulfillments as $fulfillment)
{{ $label($fulfillment->status) }} {{ $fulfillment->carrier ?: 'Carrier TBD' }}
{{ $fulfillment->tracking_number ?: 'No tracking yet' }}
{{ $fulfillment->fulfilled_at?->format('M j, Y g:i A') ?? $fulfillment->created_at?->format('M j, Y g:i A') }}
@if($fulfillment->tracking_url) Track @endif
@if($fulfillment->lines->isNotEmpty())
    @foreach($fulfillment->lines as $fl) @php $ol = $order->lines->firstWhere('id', $fl->order_line_id); @endphp
  • {{ $ol?->title ?? ('Line #'.$fl->order_line_id) }} × {{ $fl->quantity }}
  • @endforeach
@endif
@empty
No fulfillments yet — use the sidebar to create one.
@endforelse
{{-- Returns --}}

Returns

RMA status and refunded amounts

All returns
{{-- Timeline --}}

Timeline

Audited events across payment, fulfillment, and staff actions

    @forelse($order->timeline as $event)
  1. {{ $label($event->event) }}
    @if($event->actor)
    by {{ $event->actor->name ?: $event->actor->email }}
    @endif @if(!empty($event->meta))
    Event details
    {{ json_encode($event->meta, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) }}
    @endif
  2. @empty
  3. No timeline events yet.
  4. @endforelse
@if($order->notes)

Internal notes

{{ $order->notes }}

@endif
{{-- Sidebar --}}
@endsection