'boolean', ]; protected static function booted(): void { static::addGlobalScope(new CurrentCompanyScope); } public static function getCategoryTypes(): array { return [ 'expense' => 'Expense', 'income' => 'Income', 'item' => 'Item', 'other' => 'Other', ]; } public function company(): BelongsTo { return $this->belongsTo(FilamentCompanies::companyModel(), 'company_id'); } public function defaultIncomeCategory(): HasOne { return $this->hasOne(DefaultSetting::class, 'income_category_id'); } public function defaultExpenseCategory(): HasOne { return $this->hasOne(DefaultSetting::class, 'expense_category_id'); } public function createdBy(): BelongsTo { return $this->belongsTo(FilamentCompanies::userModel(), 'created_by'); } public function updatedBy(): BelongsTo { return $this->belongsTo(FilamentCompanies::userModel(), 'updated_by'); } public function items(): HasMany { return $this->hasMany(Item::class); } public function documents(): HasMany { return $this->hasMany(Document::class); } public function bills(): HasMany { return $this->documents()->where('type', 'bill'); } public function invoices(): HasMany { return $this->documents()->where('type', 'invoice'); } protected static function newFactory(): Factory { return CategoryFactory::new(); } }