@extends('templates.adminlte') @section('content-header')

Inventario

@endsection @section('main-content') @php $formatCurrency = fn($amount) => '$' . number_format((float) $amount, 2); $formatQuantity = function ($amount) { $amount = (float) $amount; return fmod($amount, 1.0) === 0.0 ? number_format($amount, 0) : number_format($amount, 2); }; $toneClasses = [ 'secondary' => 'border-secondary/30 bg-secondary/10 text-secondary', 'accent' => 'border-accent/30 bg-accent/10 text-accent', 'warning' => 'border-warning/30 bg-warning/10 text-warning', 'error' => 'border-error/30 bg-error/10 text-error', ]; $toneIconClasses = [ 'secondary' => 'text-secondary', 'accent' => 'text-accent', 'warning' => 'text-warning', 'error' => 'text-error', ]; $kpis = [ [ 'label' => 'Valor del inventario', 'value' => $formatCurrency($inventoryStats['inventoryValue']), 'helper' => $formatQuantity($inventoryStats['productCount']) . ' productos registrados', 'icon' => 'payments', 'tone' => 'secondary', ], [ 'label' => 'Unidades disponibles', 'value' => $formatQuantity($inventoryStats['availableUnits']), 'helper' => 'Stock utilizable para ventas y eventos', 'icon' => 'inventory_2', 'tone' => 'accent', ], [ 'label' => 'Unidades apartadas', 'value' => $formatQuantity($inventoryStats['reservedUnits']), 'helper' => 'Reservadas en eventos pendientes de salida', 'icon' => 'bookmark_manager', 'tone' => 'warning', ], [ 'label' => 'Alertas activas', 'value' => $formatQuantity($inventoryStats['criticalCount'] + $inventoryStats['lowStockCount']), 'helper' => $inventoryStats['criticalCount'] . ' criticos y ' . $inventoryStats['lowStockCount'] . ' en seguimiento', 'icon' => 'warning', 'tone' => 'error', ], ]; @endphp
{{ $inventory->name ?? 'Inventario principal' }} {{ $inventory->location ?? 'Ubicacion sin registrar' }}

Centro de Inventario

Stock operativo y reservas del almacen principal.

Vista centralizada de productos, materiales apartados para eventos, alertas de disponibilidad y valor acumulado del inventario activo.

category {{ $formatQuantity($inventoryStats['productCount']) }} registros activos
deployed_code {{ $formatQuantity($inventoryStats['availableUnits']) }} unidades utilizables
event_upcoming {{ $formatQuantity($inventoryStats['reservedUnits']) }} apartadas para eventos

Productos con alerta

{{ $inventoryStats['criticalCount'] + $inventoryStats['lowStockCount'] }}

Valor disponible

{{ $formatCurrency($inventoryStats['inventoryValue']) }}

Prioridad de compra

{{ $inventoryStats['criticalCount'] > 0 ? 'Alta' : 'Estable' }}

@foreach ($kpis as $kpi)
{{ $kpi['icon'] }}

{{ $kpi['label'] }}

{{ $kpi['value'] }}

{{ $kpi['helper'] }}

@endforeach

Inventario Activo

Productos y materiales registrados

Stock actual, reservas por evento y disponibilidad utilizable antes de la salida de almacen.

monitoring {{ $formatQuantity($inventoryStats['productCount']) }} filas visibles
@if ($productRows->isEmpty())
inventory_2

Sin productos en inventario

Registra compras o agrega productos al catalogo para comenzar a operar esta vista.

@else
@foreach ($productRows as $row) @endforeach
Clave Producto Categoria Stock Apartado Disponible Precio base Estado
{{ $row['sku'] }}
{{ $row['name'] }} {{ $row['detail'] }}
{{ $row['category_label'] }}

{{ $formatQuantity($row['quantity']) }}

{{ $row['unit'] }}

{{ $formatQuantity($row['reserved']) }}

eventos

{{ $formatQuantity($row['available']) }}

utilizable

{{ $formatCurrency($row['price']) }} {{ $row['status_icon'] }} {{ $row['status_label'] }} Ver ficha arrow_outward

Mostrando {{ $formatQuantity($inventoryStats['productCount']) }} productos con {{ $formatQuantity($inventoryStats['reservedUnits']) }} unidades apartadas.

Criticos: {{ $inventoryStats['criticalCount'] }} · Seguimiento: {{ $inventoryStats['lowStockCount'] }}

@endif

Agenda de Salidas

Proximos consumos

event_available
@forelse ($upcomingConsumptions as $consumption)

{{ $consumption['title'] }}

{{ $consumption['type'] }}

{{ $consumption['date_label'] }}

{{ $consumption['summary'] }}

{{ $formatQuantity($consumption['requested_units']) }} unidades apartadas {{ $consumption['relative_label'] }}
@empty

Sin eventos programados

No hay consumos de inventario registrados en la agenda inmediata.

@endforelse

Alerta Operativa

Reposicion urgente

warning

Productos y materiales por debajo del umbral de seguridad o ya sin disponibilidad utilizable.

@forelse ($lowStockProducts as $product)

{{ $product['name'] }}

{{ $product['category_label'] }} · {{ $product['unit'] }}

{{ $product['status_label'] }}
Disponible {{ $formatQuantity($product['available']) }}
Apartado {{ $formatQuantity($product['reserved']) }}
@empty

Sin alertas activas

El inventario no registra productos con disponibilidad comprometida.

@endforelse
shopping_cart Generar orden de compra
@endsection