This is an automated email from the ASF dual-hosted git repository.
manojvm pushed a commit to branch 1.8.1
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/1.8.1 by this push:
new f3ba438bd FINERACT-1755:withdrawal fee is not considered for interest
calculation (#2639)
f3ba438bd is described below
commit f3ba438bd7bf60f5a55ab549379d1abe3039a431
Author: logoutdhaval <[email protected]>
AuthorDate: Fri Oct 7 13:24:06 2022 +0530
FINERACT-1755:withdrawal fee is not considered for interest calculation
(#2639)
---
.../data/SavingsAccountTransactionEnumData.java | 6 +--
.../SavingsInterestPostingJobIntegrationTest.java | 45 +++++++++++++++++++++-
2 files changed, 47 insertions(+), 4 deletions(-)
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java
index 46157fcc2..510819cd8 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountTransactionEnumData.java
@@ -165,15 +165,15 @@ public class SavingsAccountTransactionEnumData implements
Serializable {
}
public boolean isAnnualFee() {
- return
this.value.equals(SavingsAccountTransactionType.ANNUAL_FEE.getValue().toString());
+ return
Long.valueOf(SavingsAccountTransactionType.ANNUAL_FEE.getValue()).equals(this.id);
}
public boolean isPayCharge() {
- return
this.value.equals(SavingsAccountTransactionType.PAY_CHARGE.getValue().toString());
+ return
Long.valueOf(SavingsAccountTransactionType.PAY_CHARGE.getValue()).equals(this.id);
}
public boolean isWithdrawalFee() {
- return
this.value.equals(SavingsAccountTransactionType.WITHDRAWAL_FEE.getValue().toString());
+ return
Long.valueOf(SavingsAccountTransactionType.WITHDRAWAL_FEE.getValue()).equals(this.id);
}
}
diff --git
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingJobIntegrationTest.java
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingJobIntegrationTest.java
index 3bd89a308..179406bd4 100644
---
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingJobIntegrationTest.java
+++
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/SavingsInterestPostingJobIntegrationTest.java
@@ -215,7 +215,31 @@ public class SavingsInterestPostingJobIntegrationTest {
for (Map.Entry<String, Object> entry :
interestPostingTransaction.entrySet()) {
LOG.info("{} - {}", entry.getKey(), entry.getValue().toString());
}
- assertEquals("800.4932",
interestPostingTransaction.get("runningBalance").toString(), "Equality check
for Balance");
+ assertEquals("800.4384",
interestPostingTransaction.get("runningBalance").toString(), "Equality check
for Balance");
+ }
+
+ @Test
+ public void
testAccountBalanceWithWithdrawalFeeAfterInterestPostingJobInOverdraftAccount() {
+ final String startDate = "21 June 2022";
+ final String jobName = "Post Interest For Savings";
+ final Integer clientID = ClientHelper.createClient(this.requestSpec,
this.responseSpec, startDate);
+ Assertions.assertNotNull(clientID);
+
+ final Integer savingsId =
createOverdraftSavingsAccountDailyPostingWithCharge(clientID, startDate);
+
+ this.savingsAccountHelper.withdrawalFromSavingsAccount(savingsId,
"1000", startDate, CommonConstants.RESPONSE_RESOURCE_ID);
+ HashMap summary =
this.savingsAccountHelper.getSavingsSummary(savingsId);
+ Float balance = Float.parseFloat("-1100.0");
+ assertEquals(balance, summary.get("accountBalance"), "Verifying
account balance is -1100");
+
+ this.scheduleJobHelper.executeAndAwaitJob(jobName);
+ Object transactionObj =
this.savingsAccountHelper.getSavingsDetails(savingsId, "transactions");
+ ArrayList<HashMap<String, Object>> transactions =
(ArrayList<HashMap<String, Object>>) transactionObj;
+ HashMap<String, Object> interestPostingTransaction =
transactions.get(transactions.size() - 3);
+ for (Map.Entry<String, Object> entry :
interestPostingTransaction.entrySet()) {
+ LOG.info("{} - {}", entry.getKey(), entry.getValue().toString());
+ }
+ assertEquals("-1100.3014",
interestPostingTransaction.get("runningBalance").toString(), "Equality check
for Balance");
}
private Integer createSavingsAccountDailyPosting(final Integer clientID,
final String startDate) {
@@ -263,6 +287,25 @@ public class SavingsInterestPostingJobIntegrationTest {
return savingsId;
}
+ private Integer createOverdraftSavingsAccountDailyPostingWithCharge(final
Integer clientID, final String startDate) {
+ final Integer savingsProductID =
createSavingsProductDailyPostingOverdraft();
+ Assertions.assertNotNull(savingsProductID);
+ final Integer savingsId =
this.savingsAccountHelper.applyForSavingsApplicationOnDate(clientID,
savingsProductID,
+ ACCOUNT_TYPE_INDIVIDUAL, startDate);
+ Assertions.assertNotNull(savingsId);
+
+ final Integer withdrawalChargeId =
ChargesHelper.createCharges(this.requestSpec, this.responseSpec,
+ ChargesHelper.getSavingsWithdrawalFeeJSON());
+ Assertions.assertNotNull(withdrawalChargeId);
+
+ this.savingsAccountHelper.addChargesForSavings(savingsId,
withdrawalChargeId, false);
+ HashMap savingsStatusHashMap =
this.savingsAccountHelper.approveSavingsOnDate(savingsId, startDate);
+ SavingsStatusChecker.verifySavingsIsApproved(savingsStatusHashMap);
+ savingsStatusHashMap =
this.savingsAccountHelper.activateSavingsAccount(savingsId, startDate);
+ SavingsStatusChecker.verifySavingsIsActive(savingsStatusHashMap);
+ return savingsId;
+ }
+
private Integer createSavingsAccountDailyPostingOverdraft(final Integer
clientID, final String startDate) {
final Integer savingsProductID =
createSavingsProductDailyPostingOverdraft();
Assertions.assertNotNull(savingsProductID);