Creacion de index de ventas y mejora de vistas de catalogo, productos, y mejoras de ruteo a diferentes paginas, entre otros.

This commit is contained in:
BryamE
2026-01-07 17:26:16 -03:00
parent ed27d03373
commit 37e8f498be
9 changed files with 156 additions and 34 deletions
@@ -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
+10 -2
View File
@@ -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'));
}