L(String.format("found account: %s", acct_name));
lastAccount = profile.tryLoadAccount(db, acct_name);
- if (lastAccount == null) {
+ if (lastAccount == null)
lastAccount = new LedgerAccount(acct_name);
- }
+ else lastAccount.removeAmounts();
profile.storeAccount(db, lastAccount);
// make sure the parent account(s) are present,
String aName = toAppend.pop();
LedgerAccount acc = new LedgerAccount(aName);
acc.setHiddenByStar(lastAccount.isHiddenByStar());
- if (!onlyStarred || !acc.isHiddenByStar())
- accountList.add(acc);
+ if ((!onlyStarred || !acc.isHiddenByStar()) &&
+ acc.isVisible(accountList)) accountList.add(acc);
L(String.format("gap-filling with %s", aName));
accountNames.put(aName, null);
profile.storeAccount(db, acc);
}
}
- if (!onlyStarred || !lastAccount.isHiddenByStar())
+ if ((!onlyStarred || !lastAccount.isHiddenByStar()) &&
+ lastAccount.isVisible(accountList))
accountList.add(lastAccount);
accountNames.put(acct_name, null);
ParsedLedgerAccount parsedAccount = parser.nextAccount();
if (parsedAccount == null) break;
- LedgerAccount acc = new LedgerAccount(parsedAccount.getAname());
+ LedgerAccount acc = profile.tryLoadAccount(db, parsedAccount.getAname());
+ if (acc == null) acc = new LedgerAccount(parsedAccount.getAname());
+ else acc.removeAmounts();
+
profile.storeAccount(db, acc);
for (ParsedBalance b : parsedAccount.getAebalance()) {
profile.storeAccountValue(db, acc.getName(), b.getAcommodity(),
b.getAquantity().asFloat());
}
- accountList.add(acc);
+ if (acc.isVisible(accountList)) accountList.add(acc);
}
throwIfCancelled();