X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionModel.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Fnew_transaction%2FNewTransactionModel.java;h=51bcd306b2da3e6fb50223ecc5f61e7f5dd357dc;hp=d8f387b72696983f1fe9f87d0ae12e0a5b4d1be8;hb=307f2f25fe92a33665958bdf8b051ca846d7922f;hpb=56aa91f941cd17d7c37398bee00e447efe7c7308 diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java index d8f387b7..51bcd306 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/new_transaction/NewTransactionModel.java @@ -482,27 +482,28 @@ public class NewTransactionModel extends ViewModel { if (emptyAmountAccounts.size() > 0) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { emptyAmountAccounts.forEach((currency, accounts) -> { - if (accounts.size() != 1) + final Float balance = emptyAmountAccountBalance.get(currency); + + if (balance != null && !Misc.isZero(balance) && accounts.size() != 1) { throw new RuntimeException(String.format(Locale.US, - "Should not happen: approved transaction has %d accounts for " + - "currency %s", accounts.size(), currency)); - accounts.get(0) - .setAmount(-Objects.requireNonNull( - emptyAmountAccountBalance.get(currency))); + "Should not happen: approved transaction has %d accounts " + + "without amounts for currency '%s'", accounts.size(), currency)); + } + accounts.forEach(acc -> acc.setAmount(balance == null ? 0 : -balance)); }); } else { for (String currency : emptyAmountAccounts.keySet()) { List accounts = Objects.requireNonNull(emptyAmountAccounts.get(currency)); - - if (accounts.size() != 1) + final Float balance = emptyAmountAccountBalance.get(currency); + if (balance != null && !Misc.isZero(balance) && accounts.size() != 1) throw new RuntimeException(String.format(Locale.US, "Should not happen: approved transaction has %d accounts for " + "currency %s", accounts.size(), currency)); - accounts.get(0) - .setAmount(-Objects.requireNonNull( - emptyAmountAccountBalance.get(currency))); + for (LedgerTransactionAccount acc : accounts) { + acc.setAmount(balance == null ? 0 : -balance); + } } } }