James Cole
2024-09-28 18:18:53 +02:00
parent cc7c6e02c5
commit dbf3d24ae7

View File

@@ -87,19 +87,19 @@ class AccountBalanceCalculator
Log::debug(sprintf('getLatestBalance: notBefore date is "%s", calculating', $notBefore->format('Y-m-d'))); Log::debug(sprintf('getLatestBalance: notBefore date is "%s", calculating', $notBefore->format('Y-m-d')));
$query = Transaction::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id') $query = Transaction::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'transactions.transaction_journal_id')
->whereNull('transactions.deleted_at') ->whereNull('transactions.deleted_at')
->where('transaction_journals.transaction_currency_id', $currencyId) ->where('transaction_journals.transaction_currency_id', $currencyId)
->whereNull('transaction_journals.deleted_at') ->whereNull('transaction_journals.deleted_at')
// this order is the same as GroupCollector, but in the exact reverse. // this order is the same as GroupCollector
->orderBy('transaction_journals.date', 'asc') ->orderBy('transaction_journals.date', 'DESC')
->orderBy('transaction_journals.order', 'desc') ->orderBy('transaction_journals.order', 'ASC')
->orderBy('transaction_journals.id', 'asc') ->orderBy('transaction_journals.id', 'DESC')
->orderBy('transaction_journals.description', 'asc') ->orderBy('transaction_journals.description', 'DESC')
->orderBy('transactions.amount', 'asc') ->orderBy('transactions.amount', 'DESC')
->where('transactions.account_id', $accountId); ->where('transactions.account_id', $accountId);
$notBefore->startOfDay(); $notBefore->startOfDay();
$query->where('transaction_journals.date', '<', $notBefore); $query->where('transaction_journals.date', '<', $notBefore);
$first = $query->first(['transactions.id', 'transactions.balance_dirty', 'transactions.transaction_currency_id', 'transaction_journals.date', 'transactions.account_id', 'transactions.amount','transactions.balance_after']); $first = $query->first(['transactions.id', 'transactions.balance_dirty', 'transactions.transaction_currency_id', 'transaction_journals.date', 'transactions.account_id', 'transactions.amount', 'transactions.balance_after']);
$balance = $first->balance_after ?? '0'; $balance = $first->balance_after ?? '0';
Log::debug(sprintf('getLatestBalance: found balance: %s in transaction #%d', $balance, $first->id ?? 0)); Log::debug(sprintf('getLatestBalance: found balance: %s in transaction #%d', $balance, $first->id ?? 0));
return $balance; return $balance;
@@ -129,7 +129,7 @@ class AccountBalanceCalculator
private function optimizedCalculation(Collection $accounts, ?Carbon $notBefore = null): void private function optimizedCalculation(Collection $accounts, ?Carbon $notBefore = null): void
{ {
Log::debug('start of optimizedCalculation'); Log::debug('start of optimizedCalculation');
if(false === config('firefly.feature_flags.running_balance_column')) { if (false === config('firefly.feature_flags.running_balance_column')) {
Log::debug('optimizedCalculation is disabled, return.'); Log::debug('optimizedCalculation is disabled, return.');
return; return;
} }