'integer', 'reject_stock' => 'integer', 'retail_stock' => 'integer', ]; } protected function formattedName(): Attribute { return Attribute::make( get: fn () => ucfirst($this->name), ); } public function orderItems(): HasMany { return $this->hasMany(OrderItem::class); } public function product(): BelongsTo { return $this->belongsTo(Product::class); } public function productPrices(): HasMany { return $this->hasMany(ProductPrice::class, 'variant_id'); } public function restockItems(): HasMany { return $this->hasMany(RestockItem::class); } public function retailStockHistories(): HasMany { return $this->hasMany(RetailStockHistory::class); } public function stokOpnameItems(): HasMany { return $this->hasMany(StokOpnameItem::class); } public function stockMutations(): HasMany { return $this->hasMany(StockMutation::class, 'stockable_id') ->where('stockable_type', self::class); } }