41 lines
1.5 KiB
PHP
41 lines
1.5 KiB
PHP
<?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
|
|
]);
|
|
}
|
|
}
|
|
} |