@extends('layouts.app') @section('title', 'Controle de Estoque') @push('styles') @endpush @section('content') {{-- Header --}}

Controle de Estoque

Posição atual, alertas e movimentações

{{-- Movimentações --}} Movimentações {{-- Entrada por NF-e --}} Entrada por NF-e {{-- Movimentar Estoque --}}
@if(session('success'))
{{ session('success') }}
@endif {{-- Summary cards --}}
{{ $stats['total'] }}
Produtos controlados
{{ $stats['ok'] }}
Em nível normal
{{ $stats['low'] }}
Abaixo do mínimo
{{ $stats['zero'] }}
Sem estoque (zerado)
{{-- Filters --}}
@php $activeFilter = request('filter'); @endphp Todos Abaixo do mínimo @if($stats['low']) {{ $stats['low'] }} @endif
@if(request('search') || request('filter')) Limpar @endif
{{-- Table --}}
@forelse($products as $product) @php $cur = (float) $product->stock_current; $min = (float) $product->stock_min; $max = (float) $product->stock_max; $zero = $cur <= 0; $low = !$zero && $min > 0 && $cur <= $min; $high = !$zero && $max > 0 && $cur >= $max; $ok = !$zero && !$low && !$high; $status = $zero ? 'zero' : ($low ? 'low' : ($high ? 'high' : 'ok')); $statusLabel = ['ok'=>'Normal', 'low'=>'Abaixo do mín.', 'zero'=>'Zerado', 'high'=>'Acima do máx.']; // Barra de progresso (0-100%) $pct = 0; if ($max > 0) { $pct = min(100, round($cur / $max * 100)); } elseif ($min > 0) { $pct = $cur >= $min ? 100 : round($cur / $min * 100); } else { $pct = $cur > 0 ? 100 : 0; } @endphp @empty @endforelse
Produto Categoria Nível de Estoque Atual Mín Máx Status
{{ $product->name }}
@if($product->code || $product->barcode)
@if($product->code) Cód: {{ $product->code }} @endif @if($product->barcode)  ·  EAN: {{ $product->barcode }} @endif
@endif
{{ $product->category?->name ?? '—' }}
{{ $pct }}%
{{ number_format($cur, 2, ',', '.') }} {{ $product->unit }} {{ $min > 0 ? number_format($min, 2, ',', '.') : '—' }} {{ $max > 0 ? number_format($max, 2, ',', '.') : '—' }} @if($status === 'ok') @elseif($status === 'low') @elseif($status === 'zero') @else @endif {{ $statusLabel[$status] }}
📦
Nenhum produto encontrado
@if(request('search') || request('filter')) Tente ajustar os filtros ou limpar a busca. @else Cadastre produtos com controle de estoque ativo em Produtos. @endif
{{ $products->withQueryString()->links() }}
{{-- Modal Movimentação ── --}} @endsection