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,