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

Productos

@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', ]; @endphp
Catálogo operativo {{ number_format($productStats['productCount']) }} registros activos

Productos y materiales

Catálogo central para ventas, eventos y configuración de paquetes.

Consulta existencias, valor de inventario, productos ligados a paquetes y piezas que requieren seguimiento antes de comprometer nuevos eventos.

inventory_2 {{ number_format($productStats['trackedCount']) }} con inventario vinculado
deployed_code {{ $formatQuantity($productStats['availableUnits']) }} unidades disponibles
sell {{ number_format($productStats['linkedPackageCount']) }} ligados a paquetes

Valor catalogado

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

Apartado

{{ $formatQuantity($productStats['reservedUnits']) }}

Bajo seguimiento

{{ number_format($productStats['lowStockCount']) }}

Total de productos

{{ number_format($productStats['productCount']) }}

Catálogo disponible para ventas, paquetes y eventos.

Con inventario

{{ number_format($productStats['trackedCount']) }}

Productos ya enlazados al polvorín principal.

Ligados a paquetes

{{ number_format($productStats['linkedPackageCount']) }}

Catálogo reutilizado en configuraciones comerciales.

Valor del inventario

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

Monto estimado con stock actual y precio base.

Listado de productos

Catálogo registrado

Vista unificada con stock, reservas, precio base, nivel de disponibilidad y uso en paquetes.

table_view {{ number_format($productStats['productCount']) }} filas visibles
@if ($productRows->isEmpty())
inventory_2

Sin productos registrados

Crea el primer producto o importa un archivo para comenzar a trabajar el catálogo.

@else
@foreach ($productRows as $product) @endforeach
Producto Clave Tipo Stock Apartado Precio base Paquetes Estado Acciones
{{ $product['name'] }} {{ $product['detail'] }}
{{ $product['sku'] }} {{ $product['category_label'] }}

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

{{ $product['unit'] }}

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

{{ $formatQuantity($product['available']) }} disponible

{{ $product['price'] > 0 ? $formatCurrency($product['price']) : 'Sin capturar' }}

Valor: {{ $formatCurrency($product['inventory_value']) }}

{{ number_format($product['package_count']) }} {{ $product['status_icon'] }} {{ $product['status_label'] }}
visibility edit
@endif
@endsection @section('extra-script') @endsection