Stock Expiry Report
Monitoring product freshness and inventory shelf life
@include('partials.pdf-button', ['class' => 'btn btn-danger btn-sm shadow-sm'])
Refresh
Batches with Expiry
{{ number_format($totalItems) }}
Tracked in inventory
Expired Batches
{{ number_format($expiredItems) }}
Requires immediate removal
Expiring in 30 Days
{{ number_format($expiringSoonItems) }}
Prioritize for sale
Expiry Inventory Details
Showing {{ $expiryItems->firstItem() ?: 0 }} to {{ $expiryItems->lastItem() ?: 0 }} of {{ $expiryItems->total() }} batches
| Product Name | Batch | Supplier | Received / Expiry | Remaining Life | Qty | Value | Status |
|---|---|---|---|---|---|---|---|
|
{{ $item->product?->name ?? 'Deleted Product' }}
SKU: {{ $item->product?->sku ?? 'N/A' }}
|
{{ $item->batch_no }} | {{ $item->purchaseItem?->purchase?->supplier?->name ?? $item->product?->supplier?->name ?? 'N/A' }} |
Recv: {{ ($item->received_at ?? $item->created_at)->format('d M, Y') }}
Exp: {{ $expiryDate ? \Carbon\Carbon::parse($expiryDate)->format('d M, Y') : 'Not Set' }}
|
@if($expiryDate)
@php
$percent = $daysUntilExpiry < 0 ? 0 : min(100, ($daysUntilExpiry / 365) * 100);
@endphp
{{ $daysUntilExpiry < 0 ? abs($daysUntilExpiry) . ' days ago' : $daysUntilExpiry . ' days' }}
@else
-
@endif
|
{{ (float) $item->quantity_remaining }} | {{ formatCurrency($item->quantity_remaining * ($item->unit_cost ?? $item->product?->purchase_price ?? 0)) }} | {{ $statusText }} |
|
No stock expiry items found for the selected filters.
|
|||||||