MIFOSX-1554 : added min balance check only for withdrawal transactions
This commit is contained in:
+3
-2
@@ -845,18 +845,19 @@ public class SavingsAccount extends AbstractPersistable<Long> {
|
||||
public void validateAccountBalanceDoesNotBecomeNegative(final BigDecimal transactionAmount, final boolean isWithdrawBalance) {
|
||||
final List<SavingsAccountTransaction> transactionsSortedByDate = retreiveListOfTransactions();
|
||||
Money runningBalance = Money.zero(this.currency);
|
||||
|
||||
for (final SavingsAccountTransaction transaction : transactionsSortedByDate) {
|
||||
if (transaction.isNotReversed() && transaction.isCredit()) {
|
||||
runningBalance = runningBalance.plus(transaction.getAmount(this.currency));
|
||||
} else if (transaction.isNotReversed() && transaction.isDebit()) {
|
||||
runningBalance = runningBalance.minus(transaction.getAmount(this.currency));
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
||||
final BigDecimal withdrawalFee = null;
|
||||
// deal with potential minRequiredBalance and
|
||||
// enforceMinRequiredBalance
|
||||
if (!isWithdrawBalance && this.minRequiredBalance != null && this.enforceMinRequiredBalance) {
|
||||
if (!isWithdrawBalance && this.minRequiredBalance != null && this.enforceMinRequiredBalance && transaction.isWithdrawal()) {
|
||||
if (runningBalance.minus(this.minRequiredBalance).isLessThanZero()) { throw new InsufficientAccountBalanceException(
|
||||
"transactionAmount", getAccountBalance(), withdrawalFee, transactionAmount); }
|
||||
}
|
||||
|
||||
+9
-2
@@ -226,9 +226,16 @@ public class SavingsAccountAssembler {
|
||||
boolean enforceMinRequiredBalance = false;
|
||||
if (command.parameterExists(enforceMinRequiredBalanceParamName)) {
|
||||
enforceMinRequiredBalance = command.booleanPrimitiveValueOfParameterNamed(enforceMinRequiredBalanceParamName);
|
||||
} else {
|
||||
enforceMinRequiredBalance = product.isMinRequiredBalanceEnforced();
|
||||
}
|
||||
|
||||
BigDecimal minRequiredBalance = null;
|
||||
if (command.parameterExists(overdraftLimitParamName)) {
|
||||
minRequiredBalance = command.bigDecimalValueOfParameterNamedDefaultToNullIfZero(minRequiredBalanceParamName);
|
||||
} else {
|
||||
minRequiredBalance = product.minRequiredBalance();
|
||||
}
|
||||
|
||||
final BigDecimal minRequiredBalance = command.bigDecimalValueOfParameterNamedDefaultToNullIfZero(minRequiredBalanceParamName);
|
||||
|
||||
final SavingsAccount account = SavingsAccount.createNewApplicationForSubmittal(client, group, product, fieldOfficer, accountNo,
|
||||
externalId, accountType, submittedOnDate, submittedBy, interestRate, interestCompoundingPeriodType,
|
||||
|
||||
Reference in New Issue
Block a user