belongsTo('App\Models\Setting\Tax')->withDefault(['name' => trans('general.na'), 'rate' => 0]); } public function transaction() { return $this->belongsTo('App\Models\Banking\Transaction')->withDefault(['name' => trans('general.na')]); } public function scopeType(Builder $query, string $type) { return $query->where($this->qualifyColumn('type'), '=', $type); } public function scopeIncome(Builder $query) { return $query->where($this->qualifyColumn('type'), '=', Transaction::INCOME_TYPE); } public function scopeIncomeRecurring(Builder $query): Builder { return $query->where($this->qualifyColumn('type'), '=', Transaction::INCOME_RECURRING_TYPE) ->whereHas('document.recurring', function (Builder $query) { $query->whereNull('deleted_at'); }); } public function scopeExpense(Builder $query) { return $query->where($this->qualifyColumn('type'), '=', Transaction::EXPENSE_TYPE); } public function scopeExpenseRecurring(Builder $query): Builder { return $query->where($this->qualifyColumn('type'), '=', Transaction::EXPENSE_RECURRING_TYPE) ->whereHas('document.recurring', function (Builder $query) { $query->whereNull('deleted_at'); }); } }