diff --git a/src/view/AccountPanel.cpp b/src/view/AccountPanel.cpp index 6960eb1..756d93c 100644 --- a/src/view/AccountPanel.cpp +++ b/src/view/AccountPanel.cpp @@ -1153,6 +1153,7 @@ void AccountPanel::OnUpdateNextMonths() last_year = _curYear; } + // Compute deltas for (i=0; i<(int)user->_accounts.size(); i++) { deltas[i] = _kiss->GetAccountAmount(user->_accounts[i].id, _curMonth, _curYear); @@ -1171,7 +1172,8 @@ void AccountPanel::OnUpdateNextMonths() deltas[i] -= amount; - account_updated++; + if (deltas[i]) + account_updated++; } if (!account_updated) @@ -1180,6 +1182,7 @@ void AccountPanel::OnUpdateNextMonths() last_month = _curMonth; last_year = _curYear; + // Apply deltas while (1) { account_updated = 0; @@ -1192,6 +1195,19 @@ void AccountPanel::OnUpdateNextMonths() else last_month++; + for (i=0; i<(int)user->_accounts.size(); i++) + { + if (deltas[i] == 0.0) continue; + + _kiss->CalcAccountAmount(user->_accounts[i].id, last_month, last_year, &had_values); + if (had_values) + account_updated++; + } + + if (!account_updated) break; + + account_updated = 0; + for (i=0; i<(int)user->_accounts.size(); i++) { if (deltas[i] == 0.0) continue;