ProductStockQuality::class, 'system_stock' => 'integer', 'physical_stock' => 'integer', 'difference' => 'integer', ]; } public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logAll() ->logOnlyDirty() ->dontLogEmptyChanges(); } protected function stockQualityLabel(): Attribute { return Attribute::make( get: fn () => $this->stock_quality->label(), ); } #[Scope] protected function good(Builder $query): void { $query->where('stock_quality', ProductStockQuality::GOOD); } #[Scope] protected function reject(Builder $query): void { $query->where('stock_quality', ProductStockQuality::REJECT); } public function productVariant(): BelongsTo { return $this->belongsTo(ProductVariant::class); } public function stokOpname(): BelongsTo { return $this->belongsTo(StokOpname::class); } }