up
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Observers;
|
||||
|
||||
use App\Models\DetalleCompra;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class DetalleCompraObserver
|
||||
{
|
||||
/**
|
||||
* Handle the DetalleCompra "saving" event.
|
||||
*/
|
||||
public function saving(DetalleCompra $detalle): void
|
||||
{
|
||||
// Guardar snapshot del producto si existe y no hay snapshot previo
|
||||
if ($detalle->producto && empty($detalle->producto_nombre_snapshot)) {
|
||||
$detalle->producto_nombre_snapshot = $detalle->producto->nombre;
|
||||
|
||||
Log::info("Snapshot de producto guardado", [
|
||||
'detalle_id' => $detalle->id,
|
||||
'producto_id' => $detalle->producto_id,
|
||||
'producto_nombre' => $detalle->producto_nombre_snapshot
|
||||
]);
|
||||
}
|
||||
|
||||
// Guardar snapshot de variante si existe y no hay snapshot previo
|
||||
if ($detalle->variante && empty($detalle->variante_info_snapshot)) {
|
||||
// Validación defensiva para evitar error "name" on null
|
||||
$colorName = $detalle->variante->color ? $detalle->variante->color->name : 'Sin color';
|
||||
$sizeName = $detalle->variante->size ? $detalle->variante->size->name : 'Sin talla';
|
||||
|
||||
$detalle->variante_info_snapshot = $colorName . ' / ' . $sizeName;
|
||||
|
||||
Log::info("Snapshot de variante guardado", [
|
||||
'detalle_id' => $detalle->id,
|
||||
'variante_id' => $detalle->variante_id,
|
||||
'variante_info' => $detalle->variante_info_snapshot
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user