status === self::STATUS_DRAFT; } /** * AP-43: Nur gebuchte (abgeschlossene) Produktionen — Entwürfe zählen nicht * in Bestands-/Verbrauchsberechnungen. * * @param Builder $query * @return Builder */ public function scopeBooked($query) { return $query->where('status', '!=', self::STATUS_DRAFT); } /** * @return array */ protected function casts(): array { return [ 'produced_at' => 'date', 'mhd_warning' => 'boolean', ]; } /** * @return BelongsTo */ public function product(): BelongsTo { return $this->belongsTo(Product::class); } /** * @return BelongsTo */ public function location(): BelongsTo { return $this->belongsTo(Location::class); } /** * @return BelongsTo */ public function producedByUser(): BelongsTo { return $this->belongsTo(User::class, 'produced_by'); } /** * @return HasMany */ public function productionIngredients(): HasMany { return $this->hasMany(ProductionIngredient::class); } /** * @return HasMany */ public function productionPackagings(): HasMany { return $this->hasMany(ProductionPackaging::class); } /** * AP-28: Produktionsergebnis-Zeilen — buchen den Produktbestand; * `quantity` an der Produktion ist nur noch die Planung. * * @return HasMany */ public function outputs(): HasMany { return $this->hasMany(ProductionOutput::class)->orderBy('pos')->orderBy('id'); } }