{{-- New-Unity ERP | app/Modules/Warehouse/Resources/Views/inventory/stock-overview.blade.php | v1.0 | 15/07/2026 --}} {{-- v1.0 — Stock Overview (MMBE equivalent). Vista jerarquica: Empresa > Almacen > Zona > Lote > Bin --}} @extends('layouts.vertical', ['pageTitle' => __('warehouse.stock-overview')]) @section('page-title')

{{ __('warehouse.stock-overview') }} {{ __('warehouse.mmbe-sub') }}

{{ __('warehouse.back-to-inventory') }}
@endsection @section('content') {{-- Filtro por producto --}}
{{-- Totales empresa --}}
{{ __('warehouse.total-products-caps') }}
{{ $summary['total_products'] }}
{{ __('warehouse.unrestricted-units-caps') }}
{{ number_format($summary['unrestricted_qty'], 2) }}
{{ __('warehouse.blocked-units-caps') }}
{{ number_format($summary['blocked_qty'], 2) }}
{{ __('warehouse.total-value-caps') }}
${{ number_format($summary['total_value'], 2) }}
{{-- Vista jerarquica MMBE --}} @forelse($stockData as $productId => $productData)
{{-- Product Header --}}

{{ $productData['product_name'] }} {{ $productData['sku'] }}

{{-- Stock type badges --}} @if($productData['unrestricted'] > 0) {{ number_format($productData['unrestricted'], 2) }} {{ __('warehouse.available') }} @endif @if($productData['blocked'] > 0) {{ number_format($productData['blocked'], 2) }} {{ __('warehouse.blocked-lower') }} @endif @if($productData['reserved'] > 0) {{ number_format($productData['reserved'], 2) }} {{ __('warehouse.reserved-lower') }} @endif ${{ number_format($productData['total_value'], 2) }} {{ __('warehouse.kardex') }}
{{-- Por almacen --}} @foreach($productData['warehouses'] as $whCode => $whData)
{{ $whCode }} {{ $whData['name'] }}
@if($whData['unrestricted'] > 0) {{ number_format($whData['unrestricted'], 2) }} {{ __('warehouse.avail-lower') }} @endif @if($whData['blocked'] > 0) {{ number_format($whData['blocked'], 2) }} {{ __('warehouse.blocked-lower') }} @endif ${{ number_format($whData['value'], 2) }}
{{-- Por zona --}} @foreach($whData['zones'] as $zoneCode => $zoneData)
{{ $zoneCode }} {{ $zoneData['zone_name'] }}
{{ number_format($zoneData['total_qty'], 2) }} {{ __('warehouse.units-lower') }}
{{-- Lotes --}} @foreach($zoneData['lots'] as $lot)
{{-- FIFO indicator --}} @if($loop->first && $zoneCode !== 'SV') {{ __('warehouse.next') }} @else {{ $loop->iteration }} @endif {{-- Lot number --}} {{ $lot['lot_number'] }} {{-- Stock type --}} @php $typeColors = ['unrestricted'=>'success','blocked'=>'danger','quarantine'=>'warning','reserved'=>'info','returns'=>'secondary']; $typeColor = $typeColors[$lot['stock_type']] ?? 'secondary'; @endphp {{ ucfirst($lot['stock_type']) }} {{-- Bin --}} @if($lot['bin_id']) {{ $lot['bin_id'] }} {{ $lot['bin_code'] }} @endif {{-- Qty --}} {{ number_format($lot['quantity'], 2) }} {{-- Cost --}} ${{ number_format($lot['unit_cost'], 2) }} {{-- Entry date --}} {{ $lot['entry_date'] }} {{-- Block reason --}} @if($lot['block_reason']) @endif
@endforeach
@endforeach
@endforeach
@empty
{{ __('warehouse.no-stock-found') }}
@endforelse {{-- Modal detalle del bin/lote --}} @endsection @section('scripts') @endsection