@extends('layouts.admin') @section('title', 'Resumen de inventario') @section('content')

Resumen de inventario

Stock disponible de todos los productos, en cajas o unidades según cada uno

Productos
{{ $totals['products'] }}
En este resumen
Valor en bodega
${{ number_format($totals['value'], 2) }}
Costo de stock físico
Stock saludable
{{ $totals['ok'] }}
Sobre el mínimo
Atención
{{ $totals['low'] + $totals['empty'] }}
{{ $totals['low'] }} bajo mínimo · {{ $totals['empty'] }} sin stock
@if($q !== '' || $filter !== 'all') Limpiar @endif
@forelse($rows as $row) @php $p = $row['product']; $levelClass = match ($row['level']) { 'ok' => 'success', 'low' => 'warning', default => 'danger', }; $levelLabel = match ($row['level']) { 'ok' => 'Saludable', 'low' => 'Bajo mínimo', default => 'Sin stock', }; @endphp @empty @endforelse @if($rows->isNotEmpty()) @endif
Producto Empaque Disponible Físico Reservado Mínimo Valor Estado
@if($p->photoUrl()) @else @endif
{{ $p->name }}
{{ $p->sku }} @if($p->brand) · {{ $p->brand->name }} @endif @if($p->category) · {{ $p->category->name }} @endif
@if($p->tracksByPack())
{{ $p->packLabel() }}
1 = {{ $p->unitsPerPack() }} {{ $p->unitLabel() }}s
@else {{ $p->unitLabel() }} @endif
{{ $row['qty']['primary'] }}
@if($row['qty']['secondary'])
{{ $row['qty']['secondary'] }}
@endif
{{ $row['physQty']['primary'] }}
{{ $p->displayQty($row['reserved'])['primary'] }} {{ $row['minQty']['primary'] }} ${{ number_format($row['value'], 2) }} {{ $levelLabel }} @if($row['batches'] > 0)
{{ $row['batches'] }} lote(s)
@endif
Ver
No hay productos para mostrar con estos filtros.
Totales ${{ number_format($totals['value'], 2) }} {{ $totals['products'] }} producto(s)
@endsection @push('styles') @endpush