@extends('layouts.app') @section('titulo', 'Alertas Sanitarias') @section('contenido')
{{-- ========================================================= ENCABEZADO ========================================================== --}}

Alertas Sanitarias

Productos vencidos, próximos a vencer y con stock por debajo del mínimo.

{{-- ========================================================= RESUMEN ========================================================== --}}
{{-- Vencidos --}}

Vencidos

{{ $vencidos->count() }}

{{-- Por vencer --}}

Por vencer (60 días)

{{ $porVencer->count() }}

{{-- Stock bajo --}}

Stock bajo

{{ $stockBajo->count() }}

{{-- ========================================================= PRODUCTOS VENCIDOS ========================================================== --}}

Productos vencidos

@forelse ($vencidos as $p) @php $fechaVencimiento = $p->fecha_vencimiento ? \Illuminate\Support\Carbon::parse($p->fecha_vencimiento) : null; $diasVencido = $fechaVencimiento ? abs((int) $hoy->diffInDays($fechaVencimiento, false)) : 0; @endphp @empty @endforelse
Producto Almacén Lote Stock Venció Acción
{{ $p->producto?->nombre ?? 'Producto no encontrado' }} {{ $p->almacen?->nombre ?? '—' }} {{ $p->lote ?: '—' }} {{ $p->stock }} @if ($fechaVencimiento) {{ $fechaVencimiento->format('d/m/Y') }} ({{ $diasVencido }} d) @else — @endif Retirar stock
Sin productos vencidos. 🎉
{{-- ========================================================= PRÓXIMOS A VENCER ========================================================== --}}

Próximos a vencer (60 días)

@forelse ($porVencer as $p) @php $fechaVencimiento = $p->fecha_vencimiento ? \Illuminate\Support\Carbon::parse($p->fecha_vencimiento) : null; $diasRestantes = $fechaVencimiento ? (int) $hoy->diffInDays($fechaVencimiento, false) : 0; @endphp @empty @endforelse
Producto Almacén Lote Stock Vence
{{ $p->producto?->nombre ?? 'Producto no encontrado' }} {{ $p->almacen?->nombre ?? '—' }} {{ $p->lote ?: '—' }} {{ $p->stock }} @if ($fechaVencimiento) {{ $fechaVencimiento->format('d/m/Y') }} (en {{ $diasRestantes }} d) @else — @endif
Ningún producto próximo a vencer.
{{-- ========================================================= STOCK POR DEBAJO DEL MÍNIMO ========================================================== --}}

Stock por debajo del mínimo

@forelse ($stockBajo as $p) @empty @endforelse
Producto Categoría Almacén Stock total Mínimo Acción
{{ $p->producto?->nombre ?? 'Producto no encontrado' }} {{ $p->producto?->categoria?->nombre ?? '—' }} {{ $p->almacen?->nombre ?? '—' }} {{ $p->stock }} {{ $p->stock_minimo }} Reponer
Todo el stock está por encima del mínimo. 👍
@endsection