diff --git a/app/Http/Controllers/CatalogoController.php b/app/Http/Controllers/CatalogoController.php index b7e5632..e74a30a 100644 --- a/app/Http/Controllers/CatalogoController.php +++ b/app/Http/Controllers/CatalogoController.php @@ -13,4 +13,28 @@ class CatalogoController extends Controller $productos = Product::all(); return view('catalogo', compact('productos')); } + + /** + * Muestra los registros de ventas con buscador y paginación. + */ + public function index(Request $request) + { + // Recuperamos lo que el usuario escribió en el buscador (si escribió algo) + $query = $request->input('search'); + // Recuperamos el filtro aplicado (si aplica) + $filter = $request->input('filter'); + + // Construimos la consulta + $sales = Product::query() + ->when($query, function ($q) use ($query) { + // Si hay búsqueda, filtra por nombre o SKU + return $q->where('name', 'like', "%{$query}%") + ->orWhere('sku', 'like', "%{$query}%"); + }) + ->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 + + return view('sales', compact('sales')); + } } diff --git a/resources/views/components/forms/select.blade.php b/resources/views/components/forms/select.blade.php index 1346f60..697461c 100644 --- a/resources/views/components/forms/select.blade.php +++ b/resources/views/components/forms/select.blade.php @@ -1,13 +1,39 @@ -@props(['disabled' => false, 'options', 'error' => null]) +@props(['disabled' => false, 'error' => null, 'options' => [], 'placeholder' => 'Seleccionar...']) -merge(['class' => ' + appearance-none bg-transparent border-0 border-b-2 border-neutral-700 text-white text-sm + py-2.5 px-0 w-full focus:outline-none focus:ring-0 focus:border-neon-lime peer cursor-pointer + transition-colors' . ($error ? 'border-red-500 focus:border-red-500' : '') + ]) !!}> + + @if($placeholder) + + @endif + + {{ $slot }} + + + + +
+ + + +
+ + + @if($error) +

{{ $error }}

@endif - -@if($error) -

{{ $error }}

-@endif \ No newline at end of file + + +{{-- + NOTA DE ESTILO: + - `appearance-none`: Quita el estilo feo por defecto del navegador. + - `bg-transparent`: Fondo transparente para que se vea el color de fondo de tu web. + - `border-b-2`: Borde solo abajo (estilo línea). + - `focus:ring-0`: Quita el anillo azul de Chrome al hacer click. + - `peer`: Permite que el icono de la flecha cambie de color cuando el select tiene foco. +--}} \ No newline at end of file diff --git a/resources/views/components/navbar.blade.php b/resources/views/components/navbar.blade.php index b08ef68..7bf6f93 100644 --- a/resources/views/components/navbar.blade.php +++ b/resources/views/components/navbar.blade.php @@ -36,10 +36,16 @@
  • - Taller + + Taller +
  • - Ventas + + Ventas +
  • diff --git a/resources/views/components/section-header.blade.php b/resources/views/components/section-header.blade.php index 4864bbf..560d266 100644 --- a/resources/views/components/section-header.blade.php +++ b/resources/views/components/section-header.blade.php @@ -5,7 +5,7 @@

    {{ $title }} @if($highlight) - {{ $highlight }} + {{ $highlight }} @endif

    \ No newline at end of file diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php deleted file mode 100644 index 67c46ad..0000000 --- a/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - @yield('title','Lauck - Home') - - - -
    Cabeza
    - - @yield('main') - - - - \ No newline at end of file diff --git a/resources/views/sales.blade.php b/resources/views/sales.blade.php new file mode 100644 index 0000000..40a18ab --- /dev/null +++ b/resources/views/sales.blade.php @@ -0,0 +1,91 @@ + + + + + + + +
    + + +
    +
    +
    + +
    + +
    +
    + + + + + +
    +
    + + + + + Registrar Venta + +
    + + +
    + + + + + + + + + + + + @forelse($sales as $product) + + + + + + + + @empty + + + + @endforelse + +
    ID VentaDescripcionCant. ProductosTotal VentaAcciones
    +
    {{ $product->sku }}
    +
    +
    {{ $product->name }}
    +
    + {{ $product->stock_quantity }} + + ${{ number_format(($product->price * 2), 2) }} + {{-- @if($product->type === 'service') + - + @elseif($product->stock_quantity <= $product->min_stock_alert) + {{ $product->stock_quantity }} + @else + {{ $product->stock_quantity }} + @endif --}} + + Editar +
    + No se encontraron productos. +
    +
    + + +
    + {{ $sales->links() }} +
    + +
    \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index f9b9f3d..11f21bc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -43,6 +43,7 @@ Route::middleware(['auth'])->group(function () { ]); Route::get('/productos',[ProductosController::class,'index'])->name('productos.index'); Route::get('/checker', [ProductosController::class, 'checker'])->name('productos.checker'); + Route::get('/sales', [CatalogoController::class,'index'])->name('sales.index'); }); Route::get('/catalogo', [CatalogoController::class,'catalogo'])->name('catalogo');