@extends('layouts.app')
@section('titulo', 'Alertas Sanitarias')
@section('contenido')
{{-- =========================================================
ENCABEZADO
========================================================== --}}
Gerencia & Control
Alertas Sanitarias
Productos vencidos, próximos a vencer y con stock por debajo del mínimo.
{{-- =========================================================
RESUMEN
========================================================== --}}
{{-- Vencidos --}}
{{-- Por vencer --}}
{{-- Stock bajo --}}
{{-- =========================================================
PRODUCTOS VENCIDOS
========================================================== --}}
Productos vencidos
Producto
Almacén
Lote
Stock
Venció
Acción
@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
{{ $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
@empty
Sin productos vencidos. 🎉
@endforelse
{{-- =========================================================
PRÓXIMOS A VENCER
========================================================== --}}
Próximos a vencer (60 días)
Producto
Almacén
Lote
Stock
Vence
@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
{{ $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
@empty
Ningún producto próximo a vencer.
@endforelse
{{-- =========================================================
STOCK POR DEBAJO DEL MÍNIMO
========================================================== --}}
Stock por debajo del mínimo
Producto
Categoría
Almacén
Stock total
Mínimo
Acción
@forelse ($stockBajo as $p)
{{ $p->producto?->nombre ?? 'Producto no encontrado' }}
{{ $p->producto?->categoria?->nombre ?? '—' }}
{{ $p->almacen?->nombre ?? '—' }}
{{ $p->stock }}
{{ $p->stock_minimo }}
Reponer
@empty
Todo el stock está por encima del mínimo. 👍
@endforelse
@endsection