Terminadas standarizaciones

This commit is contained in:
BryamE
2025-12-09 19:44:20 -03:00
parent 38d44f58a6
commit 5d12ec10a3
12 changed files with 136 additions and 252 deletions
+9 -9
View File
@@ -73,28 +73,28 @@ class ProductosController extends Controller
* Muestra el detalle de un producto.
* Usamos Route Model Binding: Laravel busca el ID solo.
*/
public function show(Product $producto)
public function show(Product $product)
{
return view('productos.show', compact('producto'));
return view('productos.show', compact('product'));
}
/**
* Muestra el formulario de edición.
*/
public function edit(Product $producto)
public function edit(Product $product)
{
return view('productos.edit', compact('producto'));
return view('productos.edit', compact('product'));
}
/**
* Actualiza el producto existente.
*/
public function update(Request $request, Product $producto)
public function update(Request $request, Product $product)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
// Validamos que el SKU sea único PERO ignoramos el ID de este producto actual
'sku' => ['nullable', 'string', Rule::unique('products')->ignore($producto->id)],
'sku' => ['nullable', 'string', Rule::unique('products')->ignore($product->id)],
'description' => 'nullable|string',
'price' => 'required|numeric|min:0',
'cost' => 'nullable|numeric|min:0',
@@ -104,7 +104,7 @@ class ProductosController extends Controller
'serial_number' => 'nullable|string|max:100',
]);
$producto->update($validated);
$product->update($validated);
return redirect()->route('productos.index')
->with('success', 'Producto actualizado exitosamente.');
@@ -113,9 +113,9 @@ class ProductosController extends Controller
/**
* Elimina el producto.
*/
public function destroy(Product $producto)
public function destroy(Product $product)
{
$producto->delete();
$product->delete();
return redirect()->route('productos.index')
->with('success', 'Producto eliminado.');
}
+2 -2
View File
@@ -59,8 +59,8 @@ class SaleController extends Controller
SaleDetail::create([
'sale_id' => $sale->id,
'product_id' => $product->id,
'cantidad' => $item['quantity'],
'precio' => $product->price,
'quantity' => $item['quantity'],
'price' => $product->price,
]);
$nuevoStock = $product->stock_quantity - $item['quantity'];
$product->stock_quantity = $nuevoStock;
+1 -2
View File
@@ -13,13 +13,12 @@ class Product extends Model
public function hasLowStock(): bool
{
//cambiar
return $this->stock_quantity <= $this->min_stock_alert;
}
public function supplier()
{
return $this->belongsTo(Suppliers::class);
return $this->belongsTo(Supplier::class);
}
// Opción 1: Relación directa con los detalles (Renglones de ticket)
+2 -5
View File
@@ -6,11 +6,8 @@ use Illuminate\Database\Eloquent\Model;
class Supplier extends Model
{
protected $fillable = [
'nombre',
'telefono',
'email'
];
protected $fillable = [ 'name', 'phone', 'email' ];
public function products()
{
return $this->hasMany(Product::class);
-40
View File
@@ -1,40 +0,0 @@
<?php
namespace App\View\Components;
use Closure;
use Illuminate\Contracts\View\View;
use Illuminate\View\Component;
class Alert2 extends Component
{
public $class;
//* Create a new component instance.
public function __construct($type = 'dark')
{
switch ($type) {
case 'info':
$class = 'text-blue-800 bg-blue-50 dark:text-blue-400';
break;
case 'danger':
$class = 'text-red-800 bg-red-50 dark:text-red-400';
break;
case 'success':
$class = 'text-green-800 bg-green-50 dark:text-green-400';
break;
case 'warning':
$class = 'text-yellow-800 bg-yellow-50 dark:text-yellow-300';
break;
default:
$class = 'text-gray-800 bg-gray-50 dark:text-gray-300';
break;
}
$this->class = $class;
}
//* Get the view / contents that represent the component.
public function render(): View|Closure|string
{
return view('components.alert2');
}
}