feat: agregar observador para movimientos de inventario y reportar eventos de usuario

This commit is contained in:
Juan Felipe Zapata Moreno 2026-02-17 16:36:27 -06:00
parent 897f59211d
commit 5ad7b9ca72
4 changed files with 55 additions and 0 deletions

View File

@ -1,9 +1,14 @@
<?php namespace App\Models; <?php namespace App\Models;
use App\Observers\InventoryMovementObserver;
use Illuminate\Database\Eloquent\Attributes\ObservedBy;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Notsoweb\LaravelCore\Traits\Models\Extended;
#[ObservedBy([InventoryMovementObserver::class])]
class InventoryMovement extends Model class InventoryMovement extends Model
{ {
use Extended;
const UPDATED_AT = null; const UPDATED_AT = null;
protected $fillable = [ protected $fillable = [

View File

@ -0,0 +1,39 @@
<?php namespace App\Observers;
use App\Models\InventoryMovement;
use App\Models\UserEvent;
class InventoryMovementObserver
{
/**
* Manipulador del evento "created" del modelo InventoryMovement
*/
public function created(InventoryMovement $inventoryMovement): void
{
UserEvent::report(model: $inventoryMovement, event: __FUNCTION__, key: 'movement_type');
}
/**
* Manipulador del evento "deleted" del modelo InventoryMovement
*/
public function deleted(InventoryMovement $inventoryMovement): void
{
UserEvent::report(model: $inventoryMovement, event: __FUNCTION__, key: 'movement_type');
}
/**
* Manipulador del evento "restored" del modelo InventoryMovement
*/
public function restored(InventoryMovement $inventoryMovement): void
{
UserEvent::report(model: $inventoryMovement, event: __FUNCTION__, key: 'movement_type');
}
/**
* Manipulador del evento "force deleted" del modelo InventoryMovement
*/
public function forceDeleted(InventoryMovement $inventoryMovement): void
{
UserEvent::report(model: $inventoryMovement, event: __FUNCTION__, key: 'movement_type');
}
}

View File

@ -6,6 +6,7 @@
use App\Models\InventoryMovement; use App\Models\InventoryMovement;
use App\Models\InventorySerial; use App\Models\InventorySerial;
use App\Models\InventoryWarehouse; use App\Models\InventoryWarehouse;
use App\Models\UserEvent;
use App\Models\Warehouse; use App\Models\Warehouse;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -696,6 +697,8 @@ public function updateMovement(int $movementId, array $data): InventoryMovement
// 4. Actualizar el registro del movimiento // 4. Actualizar el registro del movimiento
$movement->update($updateData); $movement->update($updateData);
UserEvent::report(model: $movement, event: 'updated', key: 'movement_type');
return $movement->load(['inventory', 'warehouseFrom', 'warehouseTo', 'user', 'serials']); return $movement->load(['inventory', 'warehouseFrom', 'warehouseTo', 'user', 'serials']);
}); });
} }

View File

@ -0,0 +1,8 @@
<?php
return [
'created' => 'El movimiento de inventario ":model" ha sido creado',
'updated' => 'El movimiento de inventario ":model" ha sido actualizado',
'deleted' => 'El movimiento de inventario ":model" ha sido eliminado',
'restored' => 'El movimiento de inventario ":model" ha sido restaurado',
];