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);

Reply via email to