@extends('garage.layouts.app') @section('title', 'Inventory flow report') @push('styles') @endpush @section('content')
@php $kpiReceived = 0; $kpiReturned = 0; $kpiSold = 0; $kpiSaleReturned = 0; $kpiOnHand = 0; foreach ($parts as $p) { $pid = (int) $p->id; $kpiReceived += (int) ($received[$pid] ?? 0); $kpiReturned += (int) ($returned[$pid] ?? 0); $kpiSold += (int) ($sold[$pid] ?? 0); $kpiSaleReturned += (int) ($saleReturned[$pid] ?? 0); $kpiOnHand += (int) ($p->stock_quantity ?? 0); } @endphp

Inventory flow

Purchase received − purchase return − net sale (completed sales − sale returns) vs on‑hand stock.

Received
{{ number_format($kpiReceived) }}
Qty on received purchase bills
Purch. return
{{ number_format($kpiReturned) }}
Posted purchase returns
Sold
{{ number_format($kpiSold) }}
Completed sales
Sale return
{{ number_format($kpiSaleReturned) }}
Posted sale returns (stock in)
On hand
{{ number_format($kpiOnHand) }}
Current stock quantity
{{ number_format($parts->count()) }} parts Type to filter by SKU / name / code
Clear
@forelse($parts as $p) @php $pid = (int) $p->id; $receivedQty = (int) ($received[$pid] ?? 0); $returnedQty = (int) ($returned[$pid] ?? 0); $soldQty = (int) ($sold[$pid] ?? 0); $saleReturnedQty = (int) ($saleReturned[$pid] ?? 0); $netSoldQty = max(0, $soldQty - $saleReturnedQty); $onHand = (int) ($p->stock_quantity ?? 0); $expected = $receivedQty - $returnedQty - $netSoldQty; $diff = $onHand - $expected; $badgeClass = $onHand <= 0 ? 'rif-b-bad' : ($onHand <= 2 ? 'rif-b-warn' : 'rif-b-ok'); @endphp @empty @endforelse
SKU Part Received Purch. ret. Sold Sale ret. Net sold On hand Expected
{{ $p->inventory_code ?? $p->code ?? '—' }} {{ $p->name }} {{ number_format($receivedQty) }} {{ number_format($returnedQty) }} {{ number_format($soldQty) }} {{ number_format($saleReturnedQty) }} {{ number_format($netSoldQty) }} {{ number_format($onHand) }} @if($diff !== 0) {{ number_format($diff) }} @else {{ number_format($expected) }} @endif
No parts found.
Notes: Expected on hand = purchase received − purchase return − (sale qty − sale return qty). Sale returns restore stock (posted garage_sale_returns).
@endsection