WarehouseType::class, ]; } public function stock(): HasMany { return $this->hasMany(WarehouseStock::class); } public function movements(): HasMany { return $this->hasMany(InventoryMovement::class); } public function getTotalValueAttribute(): float { return $this->stock->sum(fn (WarehouseStock $s) => (float) $s->quantity * (float) $s->unit_cost); } public function getItemCountAttribute(): int { return $this->stock()->where('quantity', '>', 0)->count(); } public function scopeActive($query) { return $query->where('status', 'active'); } public function project(): BelongsTo { return $this->belongsTo(Project::class); } }