diff --git a/financius/src/main/java/com/code44/finance/ui/transactions/TransactionEditFragment.java b/financius/src/main/java/com/code44/finance/ui/transactions/TransactionEditFragment.java index 61931f90..9434474b 100644 --- a/financius/src/main/java/com/code44/finance/ui/transactions/TransactionEditFragment.java +++ b/financius/src/main/java/com/code44/finance/ui/transactions/TransactionEditFragment.java @@ -343,12 +343,15 @@ private void toggleTransactionType() { switch (model.getTransactionType()) { case Expense: model.setTransactionType(TransactionType.Income); + model.setAccountFrom(null); break; case Income: model.setTransactionType(TransactionType.Transfer); + model.setAccountTo(null); break; case Transfer: model.setTransactionType(TransactionType.Expense); + model.setCategory(null); break; } model.setCategory(null); @@ -402,14 +405,15 @@ private boolean canBeConfirmed(Transaction model, boolean showErrors) { switch (model.getTransactionType()) { case Expense: - canBeConfirmed = canBeConfirmed && validateAccountFrom(showErrors); + canBeConfirmed = validateAccountFrom(showErrors) && canBeConfirmed; break; case Income: - canBeConfirmed = canBeConfirmed && validateAccountTo(showErrors); + canBeConfirmed = validateAccountTo(showErrors) && canBeConfirmed; break; case Transfer: - canBeConfirmed = canBeConfirmed && validateAccountFrom(showErrors); - canBeConfirmed = canBeConfirmed && validateAccountTo(showErrors); + canBeConfirmed = validateAccountFrom(showErrors) && canBeConfirmed; + canBeConfirmed = validateAccountTo(showErrors) && canBeConfirmed; + canBeConfirmed = validateAccounts(showErrors) && canBeConfirmed; break; } @@ -445,4 +449,15 @@ private boolean validateAccountTo(boolean showError) { } return true; } + + private boolean validateAccounts(boolean showError) { + if (model.getAccountTo() != null && model.getAccountFrom() != null && model.getAccountTo().hasId() && model.getAccountTo().getId().equals(model.getAccountFrom().getId())) { + if (showError) { + FieldValidationUtils.onError(accountFrom_B); + FieldValidationUtils.onError(accountTo_B); + } + return false; + } + return true; + } }