FINERACT-1822: Fix Undo waive loan charge API response inconsistency

This commit is contained in:
Adam Saghy
2022-11-28 21:26:19 +01:00
parent 66aab8d157
commit 82641f6357
5 changed files with 44 additions and 25 deletions
@@ -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;
}
@@ -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);
}
@@ -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());
@@ -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,
@@ -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 HashMap undoWaiveLoanCharge(final String loanExternalId, final String transactionExternalId) {
public PutChargeTransactionChangesResponse undoWaiveLoanCharge(final String loanExternalId, final Long transactionId,
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.undoWaiveCharge2(loanExternalId, transactionId, request));
}
public PutChargeTransactionChangesResponse undoWaiveLoanCharge(final String loanExternalId, final String transactionExternalId,
final PutChargeTransactionChangesRequest request) {
log.info("--------------------------------- UNDO WAIVE CHARGES FOR LOAN --------------------------------");
return ok(fineract().loanTransactions.undoWaiveCharge3(loanExternalId, transactionExternalId, request));
}
public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final Long loanId, final Long loanChargeId,