hasMany(Journal::class); } /** * Get all of the posts for the country. */ public function journal_transctions() { return $this->hasManyThrough(JournalTransaction::class, Journal::class); } /** * @throws \UnexpectedValueException * @throws \InvalidArgumentException */ public function getCurrentBalance(): Money { if ($this->type === 'asset' || $this->type === 'expense') { $balance = $this->journal_transctions->sum('debit') - $this->journal_transctions->sum('credit'); } else { $balance = $this->journal_transctions->sum('credit') - $this->journal_transctions->sum('debit'); } return new Money($balance); } /** * @throws \UnexpectedValueException * @throws \InvalidArgumentException */ public function getCurrentBalanceInDollars() { return $this->getCurrentBalance()->getValue(); } }