StokOpnameStatus::class, 'opname_date' => 'date:Y-m-d', ]; } public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logAll() ->logOnlyDirty() ->dontLogEmptyChanges(); } protected function formattedOpnameDate(): Attribute { return Attribute::make( get: fn () => $this->opname_date?->translatedFormat('l, d F Y'), ); } protected function statusLabel(): Attribute { return Attribute::make( get: fn () => $this->status->label(), ); } #[Scope] protected function cancelled(Builder $query): void { $query->where('status', StokOpnameStatus::CANCELLED); } #[Scope] protected function completed(Builder $query): void { $query->where('status', StokOpnameStatus::COMPLETED); } #[Scope] protected function draft(Builder $query): void { $query->where('status', StokOpnameStatus::DRAFT); } #[Scope] protected function inProgress(Builder $query): void { $query->where('status', StokOpnameStatus::IN_PROGRESS); } #[Scope] protected function verified(Builder $query): void { $query->where('status', StokOpnameStatus::VERIFIED); } public function createdBy(): BelongsTo { return $this->belongsTo(User::class, 'created_by_id'); } public function stokOpnameItems(): HasMany { return $this->hasMany(StokOpnameItem::class); } public function verifiedBy(): BelongsTo { return $this->belongsTo(User::class, 'verified_by_id'); } }