diff --git a/app/Http/Controllers/ProductosController.php b/app/Http/Controllers/ProductosController.php index 5a06fae..7ba1847 100644 --- a/app/Http/Controllers/ProductosController.php +++ b/app/Http/Controllers/ProductosController.php @@ -16,6 +16,7 @@ class ProductosController extends Controller { // Recuperamos lo que el usuario escribió en el buscador (si escribió algo) $query = $request->input('search'); + $status = $request->input('stock_status'); // Construimos la consulta $products = Product::query() @@ -24,6 +25,24 @@ class ProductosController extends Controller return $q->where('name', 'like', "%{$query}%") ->orWhere('sku', 'like', "%{$query}%"); }) + ->when($status, function ($q) use ($status) { + if ($status === 'low') { + // Rojo: Menor o igual a la alerta + return $q->whereColumn('stock_quantity', '<', 'min_stock_alert') + ->where('type', '!=', 'service'); // Ignoramos servicios + } + elseif ($status === 'medium') { + // Amarillo: Mayor a alerta PERO menor o igual a alerta + 2 (margen pequeño) + return $q->whereColumn('stock_quantity', '>=', 'min_stock_alert') + ->whereRaw('stock_quantity <= (min_stock_alert + 1)') // Ajusta este "+ 5" según tu criterio de "amarillo" + ->where('type', '!=', 'service'); + } + elseif ($status === 'ok') { + // Verde: Stock saludable + return $q->whereRaw('stock_quantity > (min_stock_alert + 1)') + ->where('type', '!=', 'service'); + } + }) ->orderBy('stock_quantity', 'asc') // Ordenamos primero los que tienen poco stock (Alerta visual) ->paginate(10) // Paginamos de a 10 ->withQueryString(); // Mantiene el filtro de búsqueda al cambiar de página diff --git a/app/Http/Controllers/SaleController.php b/app/Http/Controllers/SaleController.php index 8e8a7f7..c7e0f79 100644 --- a/app/Http/Controllers/SaleController.php +++ b/app/Http/Controllers/SaleController.php @@ -7,17 +7,25 @@ use App\Models\Product; use App\Models\Sale; use App\Models\SaleDetail; use Illuminate\Support\Facades\DB; -// use App\Models\Client; class SaleController extends Controller { + public function index() + { + $sales = Sale::with('client') + ->orderBy('created_at', 'desc') + ->paginate(15); + + return view('sales.index', compact('sales')); + } + public function create() { // Buscamos productos que tengan stock mayor a 0 para mostrar en el selector $products = Product::where('stock_quantity', '>', 0)->get(); - $clients = \App\Models\Client::orderBy('name')->get(); + $clients = Client::orderBy('name')->get(); return view('sales.create', compact('products', 'clients')); } diff --git a/resources/views/catalogo.blade.php b/resources/views/catalogo.blade.php index 9ce1432..0d33c3b 100644 --- a/resources/views/catalogo.blade.php +++ b/resources/views/catalogo.blade.php @@ -10,8 +10,8 @@ @foreach ($products as $prod)
No hay productos disponibles.
@endif + +