@extends('layouts.app') @section('titulo', 'Productos') @section('contenido')
{{-- HEADER --}}

Productos

Nuevo producto
{{-- FILTROS --}}
{{-- TABLA --}}
@forelse($productos as $p) @php // STOCK TOTAL $stockTotal = $p->stocks->sum('stock'); // STOCK MINIMO $stockMinimo = $p->stocks->sum('stock_minimo'); // AGRUPAR POR ALMACEN $stocksAlmacen = $p->stocks ->groupBy('almacen_id') ->map(function($items){ return [ 'nombre'=>$items->first()?->almacen?->nombre ?? 'Sin almacén', 'cantidad'=>$items->sum('stock') ]; }); // FECHA MAS CERCANA $proximoVencimiento = $p->stocks ->whereNotNull('fecha_vencimiento') ->sortBy('fecha_vencimiento') ->first(); @endphp @empty @endforelse
Producto Categoría Precio Stock Vencimiento Acciones
{{ $p->nombre }} @if($p->requiere_receta) Rx @endif
{{ $p->principio_activo }} @if($p->concentracion) · {{ $p->concentracion }} @endif
Código: {{ $p->codigo_barras }}
{{ $p->categoria?->nombre ?? '-' }} S/ {{ number_format($p->precio_venta,2) }} @if($stockTotal <= $stockMinimo) {{ $stockTotal }} ⚠ @else {{ $stockTotal }} @endif
@foreach($stocksAlmacen as $almacen)
{{ $almacen['nombre'] }} {{ $almacen['cantidad'] }}
@endforeach
@if($proximoVencimiento) @php $dias = now() ->startOfDay() ->diffInDays( $proximoVencimiento->fecha_vencimiento, false ); @endphp @if($dias < 0) Vencido @elseif($dias <=30) {{ $proximoVencimiento->fecha_vencimiento->format('d/m/Y') }} @elseif($dias <=60) {{ $proximoVencimiento->fecha_vencimiento->format('d/m/Y') }} @else {{ $proximoVencimiento->fecha_vencimiento->format('d/m/Y') }} @endif @else - @endif
{{-- EDITAR PRODUCTO --}} {{-- STOCK --}}
No existen productos.
@if($productos->hasPages())
{{ $productos->links() }}
@endif
@endsection