@php $productOptions = $products->map(fn ($product) => (object) ['id' => $product->id, 'name' => "{$product->name} ({$product->sku})"]); @endphp
@if ($search || $warehouseFilter) @endif
@can('inventory.adjust') @endcan @can('inventory.transfer') @endcan
@if (session('success'))
{{ session('success') }}
@endif
@if ($balances->isEmpty() && ($search || $warehouseFilter)) @elseif ($balances->isEmpty()) @else
ProductWarehouseQuantityAvg. CostStock Value @foreach ($balances as $balance) @endforeach
{{ $balance->product->name }}
{{ $balance->product->sku }}
{{ $balance->warehouse->name }} $balance->quantity <= $balance->product->reorder_level && $balance->quantity > 0, 'text-red-600 dark:text-red-400' => $balance->quantity === 0, 'text-gray-800 dark:text-gray-100' => $balance->quantity > $balance->product->reorder_level, ])> {{ $balance->quantity }} {{ number_format($balance->average_cost, 2) }} {{ number_format($balance->stockValue(), 2) }}
{{ $balances->links() }}
@endif
View movement history → View batches & expiry →
{{-- Opening Stock modal --}} @if ($showOpeningForm)

Record Opening Stock

A one-time starting balance for a product at a warehouse. Use Adjust Stock afterwards for corrections.

@endif {{-- Adjust Stock modal --}} @if ($showAdjustForm)

Adjust Stock

@if ($adjustDirection === 'add')

Leave blank to keep the current average cost unchanged — only set this if the found stock has a known, different cost.

@endif
@endif {{-- Transfer Stock modal --}} @if ($showTransferForm)

Transfer Stock

@endif