'decimal:3', 'repair_cost' => 'integer', 'sent_at' => 'datetime', 'expected_return_at' => 'date', 'repair_completed_at' => 'datetime', 'return_dispatched_at' => 'datetime', 'received_at' => 'datetime', ]; public function business() { return $this->belongsTo(Business::class); } public function materialList() { return $this->belongsTo(MaterialList::class, 'material_list_id'); } public function materialLine() { return $this->belongsTo(MaterialLine::class, 'material_line_id'); } public function originLocation() { return $this->belongsTo(BusinessLocation::class, 'origin_location_id'); } public function holdingEntity() { return $this->belongsTo(HoldingEntity::class, 'holding_entity_id'); } public function orgUnit() { return $this->belongsTo(OrgUnit::class, 'org_unit_id'); } public function serviceProvider() { return $this->belongsTo(ServiceProvider::class, 'service_provider_id'); } public function creator() { return $this->belongsTo(User::class, 'created_by'); } public function events() { return $this->hasMany(RepairDispatchEvent::class, 'repair_dispatch_id')->orderBy('id'); } public function destinationLabel(): string { if ($this->route_type === 'internal') { $parts = array_filter([ $this->holdingEntity?->name, $this->orgUnit?->name, ]); return $parts ? implode(' / ', $parts) : '—'; } return $this->serviceProvider?->name ?: ($this->external_party_name ?: '—'); } }