From 957ae86b34c3fdad6f04c51720686b2177100171 Mon Sep 17 00:00:00 2001 From: Moshe Date: Mon, 26 Jun 2017 16:43:25 +0300 Subject: [PATCH] For transactions that have only 2 splits, re-creating the splits loses all other attributes. Fixes https://github.com/codinguser/gnucash-android/issues/701 --- .../transaction/TransactionFormFragment.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java index 32edecb47..a07ca7121 100644 --- a/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java +++ b/app/src/main/java/org/gnucash/android/ui/transaction/TransactionFormFragment.java @@ -698,7 +698,7 @@ private List extractSplitsFromView(){ BigDecimal amountBigd = mAmountEditText.getValue(); String baseCurrencyCode = mTransactionsDbAdapter.getAccountCurrencyCode(mAccountUID); - Money value = new Money(amountBigd, Commodity.getInstance(baseCurrencyCode)).abs(); + Money value = new Money(amountBigd, Commodity.getInstance(baseCurrencyCode)); Money quantity = new Money(value); String transferAcctUID = getTransferAccountUID(); @@ -719,9 +719,24 @@ private List extractSplitsFromView(){ } } - Split split1 = new Split(value, mAccountUID); + Split split1; + Split split2; + // Try to preserve the other split attributes. + if (mSplitsList.size() >= 2) { + split1 = mSplitsList.get(0); + split1.setValue(value); + split1.setQuantity(value); + split1.setAccountUID(mAccountUID); + + split2 = mSplitsList.get(1); + split2.setValue(value); + split2.setQuantity(quantity); + split2.setAccountUID(transferAcctUID); + } else { + split1 = new Split(value, mAccountUID); + split2 = new Split(value, quantity, transferAcctUID); + } split1.setType(mTransactionTypeSwitch.getTransactionType()); - Split split2 = new Split(value, quantity, transferAcctUID); split2.setType(mTransactionTypeSwitch.getTransactionType().invert()); List splitList = new ArrayList<>();