@extends('layouts.admin') @section('title','Inventory level') @section('content') @php $sku = $level->item?->sku ?? $level->item?->variant?->sku ?? '—'; $title = $level->item?->variant?->product?->title ?? 'Unlinked item'; $status = $level->stockStatus(); $statusTone = match ($status) { 'out' => 'danger', 'low' => 'warning', 'overstock' => 'info', default => 'success', }; $statusLabel = match ($status) { 'out' => 'Out of stock', 'low' => 'Low stock', 'overstock' => 'Overstock', default => 'In stock', }; @endphp All inventory All movements @if($level->item?->variant?->product) Open product @endif @if($errors->any())
{{ $errors->first() }}
@endif
On hand {{ number_format($level->on_hand) }} Physical stock
Available {{ number_format($level->available) }} Sellable now
Committed {{ number_format($level->committed) }} Reserved for orders
Incoming {{ number_format($level->incoming) }} Threshold {{ $level->low_stock_threshold }}
Status {{ $statusLabel }} Level #{{ $level->id }}

Adjust quantity

Increase or decrease on-hand and available by the same delta. Use negative values for write-offs.

@csrf

Set on-hand

Replace the absolute on-hand quantity. The ledger records the computed delta.

@csrf

Low-stock threshold

Levels at or below this available quantity surface in the low-stock queue.

@csrf

Quick transfer

Move available units to another warehouse. For multi-step shipments use Transfers.

@csrf

Recent movements at this location

Last {{ $movements->count() }}
@forelse($movements as $movement) @empty @endforelse
When Type Qty Reason Actor
{{ $movement->created_at?->timezone(config('app.timezone'))->format('Y-m-d H:i') }} {{ str_replace('_', ' ', $movement->type) }} {{ $movement->quantity > 0 ? '+' : '' }}{{ $movement->quantity }} {{ $movement->reason }} {{ $movement->actor?->name ?? 'System' }}
No movements recorded for this level yet.
@endsection