diff --git a/app/Http/Controllers/ClientController.php b/app/Http/Controllers/ClientController.php index fcf5db8..c165d18 100644 --- a/app/Http/Controllers/ClientController.php +++ b/app/Http/Controllers/ClientController.php @@ -19,7 +19,7 @@ class ClientController extends Controller */ public function create() { - // + return view('clients.create'); } /** diff --git a/app/Http/Controllers/ProductosController.php b/app/Http/Controllers/ProductosController.php index 7ba1847..92e1c74 100644 --- a/app/Http/Controllers/ProductosController.php +++ b/app/Http/Controllers/ProductosController.php @@ -169,21 +169,4 @@ class ProductosController extends Controller return redirect()->route('productos.index') ->with('success', 'Producto eliminado.'); } - - /** - * Vista simplificada para consultar precios (empleados). - */ - public function checker(Request $request) - { - $search = $request->input('query'); - $result = null; - - if ($search) { - $result = Product::where('sku', $search) - ->orWhere('name', 'like', "%{$search}%") - ->first(); // Devuelve el primer resultado encontrado - } - - return view('productos.checker', compact('result', 'search')); - } } \ No newline at end of file diff --git a/app/Http/Controllers/SaleController.php b/app/Http/Controllers/SaleController.php index c7e0f79..6b3600e 100644 --- a/app/Http/Controllers/SaleController.php +++ b/app/Http/Controllers/SaleController.php @@ -46,10 +46,10 @@ class SaleController extends Controller foreach ($request->items as $item) { $product = Product::find($item['product_id']); - $totalSale += $product->precio * $item['quantity']; + $totalSale += $product->price * $item['quantity']; if ($product->stock_quantity < $item['quantity']) { - throw new \Exception("No hay suficiente stock de " . $product->nombre); + throw new \Exception("No hay suficiente stock de " . $product->name); } } diff --git a/app/Models/Sale.php b/app/Models/Sale.php index aeeca90..67f7dcb 100644 --- a/app/Models/Sale.php +++ b/app/Models/Sale.php @@ -11,13 +11,19 @@ class Sale extends Model // Permitimos asignación masiva para poder guardar rápido protected $guarded = []; - // Relación 1: Una venta pertenece a un Cliente (User) + // Relación 1: Una venta la realiza un Usuario (User) public function user() { return $this->belongsTo(User::class); } - // Relación 2: Una venta tiene muchos items o detalles + // Relación 2: Una venta pertenece a un Cliente (User) + public function client() + { + return $this->belongsTo(Client::class); + } + + // Relación 3: Una venta tiene muchos items o detalles public function details() { return $this->hasMany(SaleDetail::class); diff --git a/resources/views/clients/create.blade.php b/resources/views/clients/create.blade.php index 6265ad0..0fe014d 100644 --- a/resources/views/clients/create.blade.php +++ b/resources/views/clients/create.blade.php @@ -1,5 +1,3 @@ -@extends('layouts.app') -@section('main') +

formulario de crear cliente

- -@endsection \ No newline at end of file +
\ No newline at end of file diff --git a/resources/views/components/layout.blade.php b/resources/views/components/layout.blade.php index 7f5147b..b6f852c 100644 --- a/resources/views/components/layout.blade.php +++ b/resources/views/components/layout.blade.php @@ -35,5 +35,7 @@ btn.addEventListener('click', () => menu.classList.toggle('hidden')); } + @stack('scripts') + \ No newline at end of file diff --git a/resources/views/productos/checker.blade.php b/resources/views/productos/checker.blade.php deleted file mode 100644 index e69de29..0000000 diff --git a/resources/views/sales/create.blade.php b/resources/views/sales/create.blade.php index 26ec74a..864c739 100644 --- a/resources/views/sales/create.blade.php +++ b/resources/views/sales/create.blade.php @@ -1,223 +1,262 @@ - -
-
+ + + + + + + +
+ @csrf + +
-
-
-

Nueva Venta en Mostrador

-
- - @if (session('success')) -
- ¡Éxito! {{ session('success') }} -
- @endif - - @if (session('error')) -
- Error: {{ session('error') }} -
- @endif - - @if ($errors->any()) -
-
    - @foreach ($errors->all() as $error) -
  • • {{ $error }}
  • - @endforeach -
-
- @endif - - - - - @csrf - -
- -
- + @foreach($clients as $client) - + @endforeach - - - + -
-
- -
-
-
- - -
- -
- - -
- -
- $0.00 -
- -
- -
-
-
- -
- -
- -
-
- Total a Pagar: $0.00 -
-
- -
+
- -
- - +
+
+ + +
+
+ +
+

2. Detalle de Venta

+ +
+ + +
+ + + + + + + + + + + + + +
ProductoCant.PrecioSubtotal
+ + +
+

El carrito está vacío

+

Presiona "Agregar Producto" para comenzar

+
+
+ + +
+
+ Total a Pagar + $0.00 +
+ +
+ Cancelar +
- + +
-
+ + + + @push('scripts') + {{-- SCRIPTS --}} + + @endpush - -@push('scripts') - -@endpush \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 50590bc..5fc113e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -39,17 +39,16 @@ Route::view('register', 'register')->name('register'); Route::post('register', RegisterController::class)->name('register.store'); Route::middleware(['auth'])->group(function () { + Route::resource('clients', ClientController::class); Route::resource('productos', ProductosController::class)->parameters([ 'productos' => 'product' ]); - Route::resource('clients', ClientController::class); - Route::get('/checker', [ProductosController::class, 'checker'])->name('productos.checker'); Route::controller(SaleController::class)->prefix('sales')->name('sales.')->group(function () { - Route::get('/', 'index')->name('index'); // Historial (Nueva) - Route::get('/create', 'create')->name('create'); // Formulario (Existente) - Route::post('/', 'store')->name('store'); // Guardar (CORREGIDO a POST) - Route::get('/{sale}', 'show')->name('show'); // Ver detalle de una venta (Opcional futura) + Route::get('/', 'index')->name('index'); + Route::get('/create', 'create')->name('create'); + Route::post('/', 'store')->name('store'); + Route::get('/{sale}', 'show')->name('show'); }); });