@extends('layouts.app') @section('titulo', 'Lotes y Vencimientos') @section('contenido')

Lotes y Vencimientos

Control de lotes ordenado por fecha de vencimiento más próxima (FEFO).

← Stock Actual Ajustar stock
{{-- ========================================================= --}} {{-- FILTRO POR ALMACÉN --}} {{-- ========================================================= --}}
@if ($almacenId) Limpiar @endif
{{-- ========================================================= --}} {{-- TABLA --}} {{-- ========================================================= --}}
@forelse ($productos as $p) @php /* * fecha_vencimiento viene de DB::table(), * por lo que normalmente es un string. */ $fechaVencimiento = $p->fecha_vencimiento ? \Carbon\Carbon::parse($p->fecha_vencimiento) : null; $dias = $fechaVencimiento ? (int) $hoy->diffInDays($fechaVencimiento, false) : null; @endphp {{-- PRODUCTO --}} {{-- CATEGORÍA --}} {{-- ALMACÉN --}} {{-- LOTE --}} {{-- STOCK --}} {{-- VENCIMIENTO --}} {{-- ESTADO --}} @empty @endforelse
Producto Categoría Almacén Lote Stock Vencimiento Estado
{{ $p->nombre }}
@if (!empty($p->codigo_barras))
Código: {{ $p->codigo_barras }}
@endif
{{ $p->categoria_nombre ?? '—' }} @if (!empty($p->almacen_nombre)) {{ $p->almacen_nombre }} @else @endif {{ $p->lote ?: '—' }} @if ((int) $p->stock <= 0) 0 @else {{ number_format((int) $p->stock) }} @endif @if ($fechaVencimiento) {{ $fechaVencimiento->format('d/m/Y') }} @else — @endif @if ($dias === null) Sin fecha @elseif ($dias < 0) Vencido hace {{ abs($dias) }} d @elseif ($dias <= 30) Vence en {{ $dias }} d @elseif ($dias <= 60) Vence en {{ $dias }} d @else Vigente @endif

No hay lotes registrados.

No se encontraron productos con fecha de vencimiento y stock disponible.

{{-- ========================================================= --}} {{-- PAGINACIÓN --}} {{-- ========================================================= --}} @if ($productos->hasPages())
{{ $productos->links() }}
@endif
@endsection