addProperty($object->id); $cache->addProperty(get_class($object)); $cache->addProperty($start); $cache->addProperty($end); $cache->addProperty($accounts); $cache->addProperty('balanceInPeriodList'); $ids = []; /** @var Account $account */ foreach ($accounts as $account) { $ids[] = $account->id; } if ($cache->has()) { return $cache->get(); // @codeCoverageIgnore } $sum = $object->transactionjournals() ->transactionTypes([TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::OPENING_BALANCE]) ->before($end) ->leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') ->leftJoin('accounts', 'accounts.id', '=', 'transactions.account_id') ->whereIn('accounts.id', $ids) ->after($start) ->get(['transaction_journals.*'])->sum('amount'); $cache->store($sum); return $sum; } }