JournalEntryType::class, 'amount' => MoneyCast::class, ]; public function company(): BelongsTo { return $this->belongsTo(FilamentCompanies::companyModel(), 'company_id'); } public function account(): BelongsTo { return $this->belongsTo(Account::class, 'account_id'); } public function transaction(): BelongsTo { return $this->belongsTo(Transaction::class, 'transaction_id'); } public function bankAccount(): BelongsTo { return $this->account()->where('accountable_type', BankAccount::class); } public function createdBy(): BelongsTo { return $this->belongsTo(FilamentCompanies::userModel(), 'created_by'); } public function updatedBy(): BelongsTo { return $this->belongsTo(FilamentCompanies::userModel(), 'updated_by'); } public function isUncategorized(): bool { return $this->account->isUncategorized(); } public function scopeDebit(Builder $query): Builder { return $query->where('type', JournalEntryType::Debit); } public function scopeCredit(Builder $query): Builder { return $query->where('type', JournalEntryType::Credit); } protected static function newFactory(): Factory { return JournalEntryFactory::new(); } }