@lang('lang_v1.warehouse_not_provisioned')
@lang('lang_v1.current_stock') — {{ $business->name }}
@lang('lang_v1.warehouse_stock_help')
| @lang('sale.product') | @lang('lang_v1.stock_in_purchase_unit') | @lang('lang_v1.supplier_min') | @lang('lang_v1.supplier_max') | @lang('lang_v1.stock_in_base_unit') | {{-- On-hand is not the same as shippable: inbound batches sit in Goods QC until passed, and recalled batches never ship. These two columns show that split so this page agrees with the Available to Promise figure on order approval. --}}@lang('lang_v1.in_qc') | @lang('lang_v1.dispatchable') | @lang('lang_v1.reserved') | @lang('lang_v1.available_to_promise') |
|---|---|---|---|---|---|---|---|---|
| {{ $r->product_name }} @if(!empty($r->variation_name) && $r->variation_name !== 'DUMMY') ({{ $r->variation_name }})@endif | @if($m) {{ @format_quantity($purchaseQty) }} {{ $r->purchase_unit }} @else — @endif | @if($m) {{ @format_quantity($minPU) }} {{ $r->purchase_unit }} @else {{ @format_quantity($minBase) }} @endif | @if($m) {{ @format_quantity($maxPU) }} {{ $r->purchase_unit }} @else {{ @format_quantity($maxBase) }} @endif | {{ @format_quantity($base) }} {{ $r->base_unit }} | @php $blocked = (float) ($r->blocked_qty ?? 0); $reserved = (float) ($r->reserved_qty ?? 0); $dispatchable = max(0, $base - $blocked); $atp = $dispatchable - $reserved; @endphp@if($blocked > 0) {{ @format_quantity($blocked) }} @else — @endif | 0) class="text-yellow" @endif>{{ @format_quantity($dispatchable) }} | @if($reserved > 0) {{ @format_quantity($reserved) }} @else — @endif | {{ @format_quantity($atp) }} {{ $r->base_unit }} |
| @lang('lang_v1.no_records_found') | ||||||||