This is an automated email from the ASF dual-hosted git repository.

adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 82641f635 FINERACT-1822: Fix Undo waive loan charge API response 
inconsistency
82641f635 is described below

commit 82641f63570765a356940f94cab8555a82864c48
Author: Adam Saghy <[email protected]>
AuthorDate: Mon Nov 28 17:14:01 2022 +0100

    FINERACT-1822: Fix Undo waive loan charge API response inconsistency
---
 .../api/LoanTransactionsApiResourceSwagger.java    |  2 +-
 .../loanaccount/domain/LoanTransaction.java        | 12 +++++++++
 .../LoanChargeWritePlatformServiceImpl.java        |  7 +++---
 .../ExternalIdSupportIntegrationTest.java          | 19 ++++++++------
 .../common/loans/LoanTransactionHelper.java        | 29 +++++++++++++---------
 5 files changed, 44 insertions(+), 25 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanTransactionsApiResourceSwagger.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanTransactionsApiResourceSwagger.java
index f488692e4..89258bfcb 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanTransactionsApiResourceSwagger.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/api/LoanTransactionsApiResourceSwagger.java
@@ -350,7 +350,7 @@ final class LoanTransactionsApiResourceSwagger {
             @Schema(example = "95174ff9-1a75-4d72-a413-6f9b1cb988b7")
             public String externalId;
             @Schema(example = "28 June 2022")
-            public String date;
+            public LocalDate date;
 
         }
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
index d01f23725..5e348d2b0 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanTransaction.java
@@ -479,6 +479,18 @@ public class LoanTransaction extends 
AbstractAuditableWithUTCDateTimeCustom {
         return this.principalPortion;
     }
 
+    public BigDecimal getInterestPortion() {
+        return this.interestPortion;
+    }
+
+    public BigDecimal getPenaltyChargesPortion() {
+        return this.penaltyChargesPortion;
+    }
+
+    public BigDecimal getFeeChargesPortion() {
+        return this.feeChargesPortion;
+    }
+
     public Money getInterestPortion(final MonetaryCurrency currency) {
         return Money.of(currency, this.interestPortion);
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
index 1a0560806..c187d86dd 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanChargeWritePlatformServiceImpl.java
@@ -364,11 +364,10 @@ public class LoanChargeWritePlatformServiceImpl 
implements LoanChargeWritePlatfo
 
         businessEventNotifierService.notifyPostBusinessEvent(new 
LoanWaiveChargeUndoBusinessEvent(loanCharge));
 
-        // TODO: this needs to be fixed in the future! Principal portion is 
bigdecimal, interest portion is money, ...
         changes.put("principalPortion", loanTransaction.getPrincipalPortion());
-        changes.put("interestPortion", 
loanTransaction.getInterestPortion(loan.getCurrency()));
-        changes.put("feeChargesPortion", 
loanTransaction.getFeeChargesPortion(loan.getCurrency()));
-        changes.put("penaltyChargesPortion", 
loanTransaction.getPenaltyChargesPortion(loan.getCurrency()));
+        changes.put("interestPortion", loanTransaction.getInterestPortion());
+        changes.put("feeChargesPortion", 
loanTransaction.getFeeChargesPortion());
+        changes.put("penaltyChargesPortion", 
loanTransaction.getPenaltyChargesPortion());
         changes.put("outstandingLoanBalance", 
loanTransaction.getOutstandingLoanBalance());
         changes.put("id", loanTransaction.getId());
         changes.put("externalId", loanTransaction.getExternalId());
diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
index f86628906..b98065e48 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/ExternalIdSupportIntegrationTest.java
@@ -44,6 +44,8 @@ import 
org.apache.fineract.client.models.PostLoansLoanIdChargesResponse;
 import org.apache.fineract.client.models.PostLoansLoanIdTransactionsRequest;
 import org.apache.fineract.client.models.PostLoansLoanIdTransactionsResponse;
 import 
org.apache.fineract.client.models.PostLoansLoanIdTransactionsTransactionIdRequest;
+import org.apache.fineract.client.models.PutChargeTransactionChangesRequest;
+import org.apache.fineract.client.models.PutChargeTransactionChangesResponse;
 import org.apache.fineract.client.models.PutLoansLoanIdChargesChargeIdRequest;
 import org.apache.fineract.client.models.PutLoansLoanIdChargesChargeIdResponse;
 import org.apache.fineract.integrationtests.client.IntegrationTest;
@@ -181,13 +183,13 @@ public class ExternalIdSupportIntegrationTest extends 
IntegrationTest {
         assertEquals(waiveChargeExternalIdStr, response.getExternalId());
 
         // Check whether an external id was generated
-        HashMap undoWaiveLoanChargeResult = 
loanTransactionHelper.undoWaiveLoanCharge((long) loanId, 
waiveChargeExternalIdStr);
-        assertEquals(waiveChargeExternalIdStr, 
undoWaiveLoanChargeResult.get("subResourceExternalId"));
+        PutChargeTransactionChangesResponse undoWaiveLoanChargeResult = 
loanTransactionHelper.undoWaiveLoanCharge((long) loanId,
+                waiveChargeExternalIdStr, new 
PutChargeTransactionChangesRequest());
+        assertEquals(waiveChargeExternalIdStr, 
undoWaiveLoanChargeResult.getSubResourceExternalId());
 
         response = loanTransactionHelper.getLoanTransactionDetails((long) 
loanId, waiveChargeExternalIdStr);
         assertEquals(waiveChargeExternalIdStr, response.getExternalId());
-        response = 
loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
-                
Long.valueOf(undoWaiveLoanChargeResult.get("subResourceId").toString()));
+        response = 
loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, 
undoWaiveLoanChargeResult.getSubResourceId());
         assertEquals(waiveChargeExternalIdStr, response.getExternalId());
         response = 
loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, 
waiveChargeExternalIdStr);
         assertEquals(waiveChargeExternalIdStr, response.getExternalId());
@@ -199,8 +201,9 @@ public class ExternalIdSupportIntegrationTest extends 
IntegrationTest {
         assertEquals(penalty1LoanChargeExternalId, 
waiveLoanChargeResult.getResourceExternalId());
 
         // Check whether an external id was generated
-        undoWaiveLoanChargeResult = 
loanTransactionHelper.undoWaiveLoanCharge(loanExternalIdStr, 
waiveLoanChargeResult.getSubResourceId());
-        assertNotNull(undoWaiveLoanChargeResult.get("subResourceExternalId"));
+        undoWaiveLoanChargeResult = 
loanTransactionHelper.undoWaiveLoanCharge(loanExternalIdStr, 
waiveLoanChargeResult.getSubResourceId(),
+                new PutChargeTransactionChangesRequest());
+        assertNotNull(undoWaiveLoanChargeResult.getSubResourceExternalId());
 
         // Check whether an external id was generated
         waiveChargeExternalIdStr = UUID.randomUUID().toString();
@@ -211,8 +214,8 @@ public class ExternalIdSupportIntegrationTest extends 
IntegrationTest {
 
         // Check whether an external id was generated
         undoWaiveLoanChargeResult = 
loanTransactionHelper.undoWaiveLoanCharge(loanExternalIdStr,
-                waiveLoanChargeResult.getSubResourceExternalId());
-        assertEquals(waiveChargeExternalIdStr, 
undoWaiveLoanChargeResult.get("subResourceExternalId"));
+                waiveLoanChargeResult.getSubResourceExternalId(), new 
PutChargeTransactionChangesRequest());
+        assertEquals(waiveChargeExternalIdStr, 
undoWaiveLoanChargeResult.getSubResourceExternalId());
 
         // Check whether an external id was generated
         final PostLoansLoanIdTransactionsResponse repaymentResult = 
loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
diff --git 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java
 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java
index 07616bd0e..39edb4b97 100644
--- 
a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java
+++ 
b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/loans/LoanTransactionHelper.java
@@ -62,6 +62,8 @@ import 
org.apache.fineract.client.models.PostLoansLoanIdResponse;
 import org.apache.fineract.client.models.PostLoansLoanIdTransactionsRequest;
 import org.apache.fineract.client.models.PostLoansLoanIdTransactionsResponse;
 import 
org.apache.fineract.client.models.PostLoansLoanIdTransactionsTransactionIdRequest;
+import org.apache.fineract.client.models.PutChargeTransactionChangesRequest;
+import org.apache.fineract.client.models.PutChargeTransactionChangesResponse;
 import org.apache.fineract.client.models.PutLoansLoanIdChargesChargeIdRequest;
 import org.apache.fineract.client.models.PutLoansLoanIdChargesChargeIdResponse;
 import org.apache.fineract.client.models.PutLoansLoanIdResponse;
@@ -504,25 +506,28 @@ public class LoanTransactionHelper extends 
IntegrationTest {
         return ok(fineract().loanTransactions.executeLoanTransaction(loanId, 
request, "repayment"));
     }
 
-    public HashMap undoWaiveLoanCharge(final Long loanId, final String 
transactionExternalId) {
+    public PutChargeTransactionChangesResponse undoWaiveLoanCharge(final Long 
loanId, final Long transactionId,
+            final PutChargeTransactionChangesRequest request) {
         log.info("--------------------------------- UNDO WAIVE CHARGES FOR 
LOAN --------------------------------");
-        final String TRANSAC_URL = "/fineract-provider/api/v1/loans/" + loanId 
+ "/transactions/external-id/" + transactionExternalId + "?"
-                + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPut(requestSpec, responseSpec, TRANSAC_URL, 
"", "");
+        return ok(fineract().loanTransactions.undoWaiveCharge(loanId, 
transactionId, request));
     }
 
-    public HashMap undoWaiveLoanCharge(final String loanExternalId, final Long 
transactionId) {
+    public PutChargeTransactionChangesResponse undoWaiveLoanCharge(final Long 
loanId, final String transactionExternalId,
+            final PutChargeTransactionChangesRequest request) {
         log.info("--------------------------------- UNDO WAIVE CHARGES FOR 
LOAN --------------------------------");
-        final String TRANSAC_URL = 
"/fineract-provider/api/v1/loans/external-id/" + loanExternalId + 
"/transactions/" + transactionId + "?"
-                + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPut(requestSpec, responseSpec, TRANSAC_URL, 
"", "");
+        return ok(fineract().loanTransactions.undoWaiveCharge1(loanId, 
transactionExternalId, request));
+    }
+
+    public PutChargeTransactionChangesResponse undoWaiveLoanCharge(final 
String loanExternalId, final Long transactionId,
+            final PutChargeTransactionChangesRequest request) {
+        log.info("--------------------------------- UNDO WAIVE CHARGES FOR 
LOAN --------------------------------");
+        return ok(fineract().loanTransactions.undoWaiveCharge2(loanExternalId, 
transactionId, request));
     }
 
-    public HashMap undoWaiveLoanCharge(final String loanExternalId, final 
String transactionExternalId) {
+    public PutChargeTransactionChangesResponse undoWaiveLoanCharge(final 
String loanExternalId, final String transactionExternalId,
+            final PutChargeTransactionChangesRequest request) {
         log.info("--------------------------------- UNDO WAIVE CHARGES FOR 
LOAN --------------------------------");
-        final String TRANSAC_URL = 
"/fineract-provider/api/v1/loans/external-id/" + loanExternalId + 
"/transactions/external-id/"
-                + transactionExternalId + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPut(requestSpec, responseSpec, TRANSAC_URL, 
"", "");
+        return ok(fineract().loanTransactions.undoWaiveCharge3(loanExternalId, 
transactionExternalId, request));
     }
 
     public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final Long 
loanId, final Long loanChargeId,

Reply via email to