Files
pos_heidiver/app/Observers/DetalleCompraObserver.php
2026-01-06 15:35:59 -05:00

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
]);
}
}
}