Files
pos_heidiver/resources/views/filament/pages/gestion-stock.blade.php
T
2026-01-06 15:35:59 -05:00

193 lines
12 KiB
PHP

<x-filament-panels::page>
<div class="space-y-6">
<!-- Resumen de Alertas -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-4">
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-2 bg-red-100 rounded-lg">
<svg class="w-6 h-6 text-red-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.732-.833-2.5 0L4.268 18.5c-.77.833.192 2.5 1.732 2.5z"></path>
</svg>
</div>
<div class="ml-4">
<h3 class="text-lg font-medium text-gray-900">Stock Bajo</h3>
<p class="text-2xl font-bold text-red-600">{{ count($productosStockBajo) }}</p>
<p class="text-sm text-gray-500">Productos bajo mínimo</p>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-2 bg-blue-100 rounded-lg">
<svg class="w-6 h-6 text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"></path>
</svg>
</div>
<div class="ml-4">
<h3 class="text-lg font-medium text-gray-900">Bodegas Activas</h3>
<p class="text-2xl font-bold text-blue-600">{{ count($bodegasEstado) }}</p>
<p class="text-sm text-gray-500">Ubicaciones de almacén</p>
</div>
</div>
</div>
<div class="bg-white rounded-lg shadow p-6">
<div class="flex items-center">
<div class="p-2 bg-green-100 rounded-lg">
<svg class="w-6 h-6 text-green-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 16l-4-4m0 0l4-4m-4 4h18"></path>
</svg>
</div>
<div class="ml-4">
<h3 class="text-lg font-medium text-gray-900">Transferencias Sugeridas</h3>
<p class="text-2xl font-bold text-green-600">{{ count($sugerenciasTransferencia) }}</p>
<p class="text-sm text-gray-500">Rebalanceos recomendados</p>
</div>
</div>
</div>
</div>
<!-- Productos con Stock Bajo -->
@if(count($productosStockBajo) > 0)
<div class="bg-white rounded-lg shadow">
<div class="px-6 py-4 border-b border-gray-200">
<h3 class="text-lg font-medium text-gray-900">⚠️ Productos con Stock Bajo</h3>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Producto</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Categoría</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Stock Actual</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Stock Mínimo</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Distribución</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
@foreach($productosStockBajo as $producto)
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">{{ $producto['nombre'] }}</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-blue-100 text-blue-800">
{{ $producto['categoria'] }}
</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="text-sm font-medium {{ $producto['stock_actual'] == 0 ? 'text-red-600' : 'text-orange-600' }}">
{{ $producto['stock_actual'] }}
</span>
</td>
<td class="px-6 py-4 whitespace-nowrap text-sm text-gray-500">
{{ $producto['stock_minimo'] }}
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-xs space-y-1">
@foreach($producto['distribucion'] as $dist)
<div class="flex justify-between">
<span class="text-gray-600">{{ $dist['bodega'] }}:</span>
<span class="font-medium">{{ $dist['stock'] }}</span>
</div>
@endforeach
</div>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
<!-- Estado de Bodegas -->
<div class="bg-white rounded-lg shadow">
<div class="px-6 py-4 border-b border-gray-200">
<h3 class="text-lg font-medium text-gray-900">📦 Estado de Bodegas</h3>
</div>
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 p-6">
@foreach($bodegasEstado as $bodega)
<div class="border rounded-lg p-4">
<h4 class="font-medium text-gray-900 mb-2">{{ $bodega['nombre'] }}</h4>
<div class="space-y-2 text-sm">
<div class="flex justify-between">
<span class="text-gray-600">Total productos:</span>
<span class="font-medium">{{ $bodega['total_productos'] }}</span>
</div>
<div class="flex justify-between">
<span class="text-gray-600">Con stock:</span>
<span class="font-medium">{{ $bodega['productos_con_stock'] }}</span>
</div>
<div class="flex justify-between">
<span class="text-gray-600">Stock total:</span>
<span class="font-medium">{{ number_format($bodega['stock_total']) }}</span>
</div>
<div class="flex justify-between">
<span class="text-gray-600">Utilización:</span>
<span class="font-medium {{ $bodega['utilizacion'] > 70 ? 'text-green-600' : ($bodega['utilizacion'] > 40 ? 'text-yellow-600' : 'text-red-600') }}">
{{ $bodega['utilizacion'] }}%
</span>
</div>
</div>
</div>
@endforeach
</div>
</div>
<!-- Transferencias Sugeridas -->
@if(count($sugerenciasTransferencia) > 0)
<div class="bg-white rounded-lg shadow">
<div class="px-6 py-4 border-b border-gray-200">
<h3 class="text-lg font-medium text-gray-900">🔄 Transferencias Sugeridas</h3>
<p class="text-sm text-gray-500 mt-1">Rebalanceos automáticos recomendados para optimizar distribución</p>
</div>
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-gray-200">
<thead class="bg-gray-50">
<tr>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Producto</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Desde</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Hacia</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Cantidad</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Razón</th>
<th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Acción</th>
</tr>
</thead>
<tbody class="bg-white divide-y divide-gray-200">
@foreach($sugerenciasTransferencia as $sugerencia)
<tr>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm font-medium text-gray-900">{{ $sugerencia['producto_nombre'] }}</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-900">{{ $sugerencia['bodega_origen'] }}</div>
<div class="text-xs text-gray-500">Stock: {{ $sugerencia['stock_origen'] }}</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-900">{{ $sugerencia['bodega_destino'] }}</div>
<div class="text-xs text-gray-500">Stock: {{ $sugerencia['stock_destino'] }}</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<span class="text-sm font-medium text-blue-600">{{ $sugerencia['cantidad_sugerida'] }}</span>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<div class="text-sm text-gray-900">{{ $sugerencia['razon'] }}</div>
</td>
<td class="px-6 py-4 whitespace-nowrap">
<button
wire:click="ejecutarTransferenciaSugerida({{ json_encode($sugerencia) }})"
class="inline-flex items-center px-3 py-2 border border-transparent text-sm leading-4 font-medium rounded-md text-white bg-blue-600 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500">
Ejecutar
</button>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
@endif
</div>
</x-filament-panels::page>