'datetime', ]; } public function requester(): BelongsTo { return $this->belongsTo(User::class, 'requested_by'); } public function approver(): BelongsTo { return $this->belongsTo(User::class, 'approved_by'); } public function items(): HasMany { return $this->hasMany(MaterialRequisitionItem::class); } public function purchaseOrders(): BelongsToMany { return $this->belongsToMany(PurchaseOrder::class, 'purchase_order_requisitions') ->withTimestamps(); } public function getTotalCostAttribute(): float { return $this->items->sum(fn (MaterialRequisitionItem $item) => $item->line_total); } public function scopeDraft($query) { return $query->where('status', 'draft'); } public function scopeApproved($query) { return $query->where('status', 'approved'); } }