diff --git a/app/Http/Controllers/SaleController.php b/app/Http/Controllers/SaleController.php index 6b3600e..b961420 100644 --- a/app/Http/Controllers/SaleController.php +++ b/app/Http/Controllers/SaleController.php @@ -41,7 +41,8 @@ class SaleController extends Controller ]); try { - DB::transaction(function () use ($request) { + // Variable para guardar el objeto venta y usarlo fuera del closure + $sale = DB::transaction(function () use ($request) { $totalSale = 0; foreach ($request->items as $item) { @@ -54,7 +55,7 @@ class SaleController extends Controller } //cabecera - $sale = Sale::create([ + $newSale = Sale::create([ //'user_id' => auth()->id(), //empleado logueado 'client_id' => $request->client_id, 'total' => $totalSale, @@ -65,7 +66,7 @@ class SaleController extends Controller $product = Product::find($item['product_id']); SaleDetail::create([ - 'sale_id' => $sale->id, + 'sale_id' => $newSale->id, 'product_id' => $product->id, 'quantity' => $item['quantity'], 'price' => $product->price, @@ -74,15 +75,27 @@ class SaleController extends Controller $product->stock_quantity = $nuevoStock; $product->save(); } + return $newSale; // Retornamos la venta creada fuera de la transacción }); - // 5. REDIRECCIÓN DE ÉXITO - // Redirigimos al usuario con un mensaje flash [cite: 668] - return redirect()->route('sales.create')->with('success', '¡Venta registrada correctamente!'); + // 4. REDIRECCIÓN AL DETALLE (FACTURA) + // Usamos la variable $sale que nos devolvió la transacción + return redirect()->route('sales.show', $sale)->with('success', '¡Venta registrada exitosamente!'); } catch (\Exception $e) { // Si algo falló (ej: falta stock), volvemos atrás con el error return back()->with('error', 'Error en la venta: ' . $e->getMessage()); } } + + /** + * Muestra el detalle de una venta específica. + */ + public function show(Sale $sale) + { + // Cargamos la venta con el cliente y los detalles + $sale->load(['client', 'details.product']); + + return view('sales.show', compact('sale')); + } } diff --git a/resources/views/sales/index.blade.php b/resources/views/sales/index.blade.php index a19df33..99e0e22 100644 --- a/resources/views/sales/index.blade.php +++ b/resources/views/sales/index.blade.php @@ -56,9 +56,7 @@ ${{ number_format($sale->total, 2, ',', '.') }}
+ Av. Francisco Ramírez 1389
+ Paraná, Entre Ríos
+ Tel: 343 422-0103
+
{{ $sale->client->name }}
+{{ $sale->client->phone }}
+{{ $sale->client->email }}
+ @if($sale->client->address) +{{ $sale->client->address }}
+ @endif + @else +Consumidor Final
+Venta anónima de mostrador
+ @endif +| Producto | +Precio Unit. | +Cant. | +Subtotal | +
|---|---|---|---|
|
+ {{ $detail->product->name }}
+ {{ $detail->product->sku }}
+ |
+ + ${{ number_format($detail->price, 2, ',', '.') }} + | ++ {{ $detail->quantity }} + | ++ ${{ number_format($detail->price * $detail->quantity, 2, ',', '.') }} + | +
| Total a Pagar | ++ ${{ number_format($sale->total, 2, ',', '.') }} + | +||
¡Gracias por tu compra!
+Documento no valido como factura.
+