*/ protected function casts(): array { return [ 'disposed_at' => 'date', 'quantity' => 'decimal:2', ]; } /** * @return BelongsTo */ public function ingredient(): BelongsTo { return $this->belongsTo(Ingredient::class); } /** * @return BelongsTo */ public function packagingItem(): BelongsTo { return $this->belongsTo(PackagingItem::class); } /** * @return BelongsTo */ public function stockEntry(): BelongsTo { return $this->belongsTo(StockEntry::class); } /** * @return BelongsTo */ public function location(): BelongsTo { return $this->belongsTo(Location::class); } /** * @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } public function isIngredient(): bool { return $this->disposal_type === 'ingredient'; } public function articleName(): string { return $this->isIngredient() ? ($this->ingredient?->name ?? '—') : ($this->packagingItem?->name ?? '—'); } }