CashTransactionType::class, 'amount' => 'integer', 'balance_after' => 'integer', ]; } #[Scope] protected function deposit(Builder $query): void { $query->where('type', CashTransactionType::DEPOSIT); } #[Scope] protected function expenseType(Builder $query): void { $query->where('type', CashTransactionType::EXPENSE); } #[Scope] protected function transfer(Builder $query): void { $query->where('type', CashTransactionType::TRANSFER); } #[Scope] protected function withdrawal(Builder $query): void { $query->where('type', CashTransactionType::WITHDRAWAL); } public function cashAccount(): BelongsTo { return $this->belongsTo(CashAccount::class); } public function createdBy(): BelongsTo { return $this->belongsTo(User::class, 'created_by_id'); } public function expense(): HasOne { return $this->hasOne(Expense::class); } public function order(): HasOne { return $this->hasOne(Order::class); } public function reference(): MorphTo { return $this->morphTo(); } }