<?php namespace Koneko\VuexyWarehouse\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Koneko\VuexyStoreManager\Models\Store; use Koneko\VuexyAdmin\Models\User; class WarehouseMovement extends Model { use HasFactory, SoftDeletes; protected $table = 'warehouse_movements'; protected $primaryKey = 'id'; public $incrementing = false; protected $keyType = 'mediumint'; protected $fillable = [ 'store_id', 'warehouse_id', 'movement_type', 'movement_id', 'created_by', 'approved_by', 'adjusted_quantity', 'cost', 'notes', 'to_warehouse_id', 'status', ]; protected $casts = [ 'adjusted_quantity' => 'decimal:6', 'cost' => 'decimal:2', 'status' => 'integer', ]; /** * Relación con la sucursal donde ocurrió el movimiento. */ public function store(): BelongsTo { return $this->belongsTo(Store::class, 'store_id'); } /** * Relación con el almacén de origen del movimiento. */ public function warehouse(): BelongsTo { return $this->belongsTo(Warehouse::class, 'warehouse_id'); } /** * Relación con el almacén de destino (si aplica). */ public function toWarehouse(): BelongsTo { return $this->belongsTo(Warehouse::class, 'to_warehouse_id'); } /** * Relación con el usuario que creó el movimiento. */ public function createdBy(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } /** * Relación con el usuario que aprobó el movimiento (si aplica). */ public function approvedBy(): BelongsTo { return $this->belongsTo(User::class, 'approved_by'); } }