up
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
<?php
|
||||
|
||||
namespace App\Observers;
|
||||
|
||||
use App\Models\ProductVariant;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class ProductVariantObserver
|
||||
{
|
||||
/**
|
||||
* Handle the ProductVariant "created" event.
|
||||
*/
|
||||
public function created(ProductVariant $variant): void
|
||||
{
|
||||
$producto = $variant->producto;
|
||||
|
||||
Log::info("Variante creada para producto", [
|
||||
'variante_id' => $variant->id,
|
||||
'producto_id' => $producto->id,
|
||||
'producto_nombre' => $producto->nombre,
|
||||
'stock_producto_anterior' => $producto->stock
|
||||
]);
|
||||
|
||||
// Si este producto ahora tiene variantes y tenía stock directo, limpiar el stock principal
|
||||
if ($producto->stock > 0) {
|
||||
// Obtener el stock anterior para potencial transferencia
|
||||
$stockAnterior = $producto->stock;
|
||||
|
||||
// Limpiar el stock del producto principal
|
||||
$producto->update(['stock' => 0]);
|
||||
|
||||
Log::info("Stock del producto principal limpiado debido a creación de variantes", [
|
||||
'producto_id' => $producto->id,
|
||||
'stock_anterior' => $stockAnterior,
|
||||
'stock_nuevo' => 0
|
||||
]);
|
||||
|
||||
// Opcionalmente, podrías transferir el stock anterior a la nueva variante
|
||||
// o a una bodega específica, pero por ahora solo lo eliminamos
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the ProductVariant "deleting" event.
|
||||
*/
|
||||
public function deleting(ProductVariant $variant): void
|
||||
{
|
||||
$producto = $variant->producto;
|
||||
|
||||
// Verificar si esta es la última variante
|
||||
$variantesRestantes = $producto->variants()->where('id', '!=', $variant->id)->count();
|
||||
|
||||
Log::info("Eliminando variante", [
|
||||
'variante_id' => $variant->id,
|
||||
'producto_id' => $producto->id,
|
||||
'variantes_restantes' => $variantesRestantes
|
||||
]);
|
||||
|
||||
// Si esta era la última variante, el producto vuelve a poder tener stock directo
|
||||
if ($variantesRestantes === 0) {
|
||||
Log::info("Última variante eliminada - producto puede volver a tener stock directo", [
|
||||
'producto_id' => $producto->id
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user