FINERACT-1760: Enhanced external id support for loan charges

This commit is contained in:
Adam Saghy
2022-11-28 12:02:00 +01:00
committed by Arnold Gálovics
parent 2f4dcbdd6c
commit 25c0b6a08d
16 changed files with 879 additions and 296 deletions
@@ -30,14 +30,22 @@ import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import org.apache.fineract.client.models.DeleteLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.GetLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.GetLoansLoanIdChargesTemplateResponse;
import org.apache.fineract.client.models.GetLoansLoanIdTransactionsTransactionIdResponse;
import org.apache.fineract.client.models.PostClientsResponse;
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdRequest;
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.PostLoansLoanIdChargesRequest;
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.PutLoansLoanIdChargesChargeIdRequest;
import org.apache.fineract.client.models.PutLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.integrationtests.client.IntegrationTest;
import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.GlobalConfigurationHelper;
@@ -113,11 +121,38 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
LocalDate targetDate = LocalDate.of(2022, 9, 7);
final String penaltyCharge1AddedDate = dateFormatter.format(targetDate);
String penalty1LoanChargeExternalId = UUID.randomUUID().toString();
Integer penalty1LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanId,
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), penaltyCharge1AddedDate, "10"));
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), penaltyCharge1AddedDate, "10",
penalty1LoanChargeExternalId));
Integer penalty2LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanId,
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), penaltyCharge1AddedDate, "10"));
// Get loan charges
List<GetLoansLoanIdChargesChargeIdResponse> loanChargesResult = loanTransactionHelper.getLoanCharges((long) loanId);
assertEquals(penalty1LoanChargeExternalId, loanChargesResult.get(0).getExternalId());
loanChargesResult = loanTransactionHelper.getLoanCharges(loanExternalIdStr);
assertEquals(penalty1LoanChargeExternalId, loanChargesResult.get(0).getExternalId());
// Get loan charge template
GetLoansLoanIdChargesTemplateResponse loanChargeTemplateResult = loanTransactionHelper.getLoanChargeTemplate((long) loanId);
assertNotNull(loanChargeTemplateResult);
loanChargeTemplateResult = loanTransactionHelper.getLoanChargeTemplate(loanExternalIdStr);
assertNotNull(loanChargeTemplateResult);
// Get loan charge
GetLoansLoanIdChargesChargeIdResponse loanChargeResult = loanTransactionHelper.getLoanCharge((long) loanId,
(long) penalty1LoanChargeId);
assertEquals(penalty1LoanChargeExternalId, loanChargeResult.getExternalId());
loanChargeResult = loanTransactionHelper.getLoanCharge(loanExternalIdStr, (long) penalty1LoanChargeId);
assertEquals(penalty1LoanChargeExternalId, loanChargeResult.getExternalId());
loanChargeResult = loanTransactionHelper.getLoanCharge((long) loanId, penalty1LoanChargeExternalId);
assertEquals(penalty1LoanChargeExternalId, loanChargeResult.getExternalId());
loanChargeResult = loanTransactionHelper.getLoanCharge(loanExternalIdStr, penalty1LoanChargeExternalId);
assertEquals(penalty1LoanChargeExternalId, loanChargeResult.getExternalId());
PostLoansLoanIdChargesResponse penalty2Result = this.loanTransactionHelper.addLoanCharge(loanExternalIdStr,
new PostLoansLoanIdChargesRequest().chargeId((long) penalty).amount(10.0).dueDate(penaltyCharge1AddedDate)
.dateFormat("dd MMMM yyyy").locale("en"));
assertNotNull(penalty2Result.getResourceExternalId());
// Check whether we can fetch transaction templates with proper result http code (HTTP 200..300)
ok(fineract().loanTransactions.retrieveTransactionTemplate1(loanExternalIdStr, "repayment", null, null, null));
@@ -135,6 +170,7 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
PostLoansLoanIdChargesChargeIdResponse waiveLoanChargeResult = loanTransactionHelper.waiveLoanCharge((long) loanId,
(long) penalty1LoanChargeId, new PostLoansLoanIdChargesChargeIdRequest().externalId(waiveChargeExternalIdStr));
assertEquals(waiveChargeExternalIdStr, waiveLoanChargeResult.getSubResourceExternalId());
assertEquals(penalty1LoanChargeExternalId, waiveLoanChargeResult.getResourceExternalId());
GetLoansLoanIdTransactionsTransactionIdResponse response = loanTransactionHelper.getLoanTransactionDetails((long) loanId,
waiveChargeExternalIdStr);
@@ -157,9 +193,10 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
assertEquals(waiveChargeExternalIdStr, response.getExternalId());
// Check whether an external id was generated
waiveLoanChargeResult = loanTransactionHelper.waiveLoanCharge((long) loanId, (long) penalty1LoanChargeId,
waiveLoanChargeResult = loanTransactionHelper.waiveLoanCharge(loanExternalIdStr, (long) penalty1LoanChargeId,
new PostLoansLoanIdChargesChargeIdRequest());
assertNotNull(waiveLoanChargeResult.getSubResourceExternalId());
assertEquals(penalty1LoanChargeExternalId, waiveLoanChargeResult.getResourceExternalId());
// Check whether an external id was generated
undoWaiveLoanChargeResult = loanTransactionHelper.undoWaiveLoanCharge(loanExternalIdStr, waiveLoanChargeResult.getSubResourceId());
@@ -167,9 +204,10 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
// Check whether an external id was generated
waiveChargeExternalIdStr = UUID.randomUUID().toString();
waiveLoanChargeResult = loanTransactionHelper.waiveLoanCharge((long) loanId, (long) penalty1LoanChargeId,
waiveLoanChargeResult = loanTransactionHelper.waiveLoanCharge(loanExternalIdStr, penalty1LoanChargeExternalId,
new PostLoansLoanIdChargesChargeIdRequest().externalId(waiveChargeExternalIdStr));
assertEquals(waiveChargeExternalIdStr, waiveLoanChargeResult.getSubResourceExternalId());
assertEquals(penalty1LoanChargeExternalId, waiveLoanChargeResult.getResourceExternalId());
// Check whether an external id was generated
undoWaiveLoanChargeResult = loanTransactionHelper.undoWaiveLoanCharge(loanExternalIdStr,
@@ -389,7 +427,73 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
final HashMap loanWithInterest = this.loanTransactionHelper.getLoanId(loanApplicationJSON, "");
Integer loanWithInterestId = (Integer) loanWithInterest.get("resourceId");
String chargeExternalId = UUID.randomUUID().toString();
PostLoansLoanIdChargesResponse loanChargeForApprovedLoanResult = this.loanTransactionHelper.addLoanCharge(loanExternalIdStr,
new PostLoansLoanIdChargesRequest().externalId(chargeExternalId).amount(1.0).chargeId((long) penalty)
.dateFormat("dd MMMM yyyy").locale("en").dueDate(formattedDate));
PutLoansLoanIdChargesChargeIdResponse updatedLoanChargeForApprovedLoanResult = this.loanTransactionHelper.updateLoanCharge(
(long) loanWithInterestId, loanChargeForApprovedLoanResult.getResourceId(),
new PutLoansLoanIdChargesChargeIdRequest().amount(2.0));
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), updatedLoanChargeForApprovedLoanResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(),
updatedLoanChargeForApprovedLoanResult.getResourceExternalId());
DeleteLoansLoanIdChargesChargeIdResponse deleteLoanChargeResult = this.loanTransactionHelper
.deleteLoanCharge((long) loanWithInterestId, loanChargeForApprovedLoanResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), deleteLoanChargeResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(), deleteLoanChargeResult.getResourceExternalId());
chargeExternalId = UUID.randomUUID().toString();
loanChargeForApprovedLoanResult = this.loanTransactionHelper.addLoanCharge(loanExternalIdStr,
new PostLoansLoanIdChargesRequest().externalId(chargeExternalId).amount(1.0).chargeId((long) penalty)
.dateFormat("dd MMMM yyyy").locale("en").dueDate(formattedDate));
updatedLoanChargeForApprovedLoanResult = this.loanTransactionHelper.updateLoanCharge((long) loanWithInterestId,
loanChargeForApprovedLoanResult.getResourceExternalId(), new PutLoansLoanIdChargesChargeIdRequest().amount(1.0));
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), updatedLoanChargeForApprovedLoanResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(),
updatedLoanChargeForApprovedLoanResult.getResourceExternalId());
deleteLoanChargeResult = this.loanTransactionHelper.deleteLoanCharge((long) loanWithInterestId,
loanChargeForApprovedLoanResult.getResourceExternalId());
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), deleteLoanChargeResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(), deleteLoanChargeResult.getResourceExternalId());
chargeExternalId = UUID.randomUUID().toString();
loanChargeForApprovedLoanResult = this.loanTransactionHelper.addLoanCharge(loanExternalIdStr,
new PostLoansLoanIdChargesRequest().externalId(chargeExternalId).amount(1.0).chargeId((long) penalty)
.dateFormat("dd MMMM yyyy").locale("en").dueDate(formattedDate));
updatedLoanChargeForApprovedLoanResult = this.loanTransactionHelper.updateLoanCharge(loanExternalIdStr,
loanChargeForApprovedLoanResult.getResourceId(), new PutLoansLoanIdChargesChargeIdRequest().amount(1.0));
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), updatedLoanChargeForApprovedLoanResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(),
updatedLoanChargeForApprovedLoanResult.getResourceExternalId());
deleteLoanChargeResult = this.loanTransactionHelper.deleteLoanCharge(loanExternalIdStr,
loanChargeForApprovedLoanResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), deleteLoanChargeResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(), deleteLoanChargeResult.getResourceExternalId());
chargeExternalId = UUID.randomUUID().toString();
loanChargeForApprovedLoanResult = this.loanTransactionHelper.addLoanCharge(loanExternalIdStr,
new PostLoansLoanIdChargesRequest().externalId(chargeExternalId).amount(1.0).chargeId((long) penalty)
.dateFormat("dd MMMM yyyy").locale("en").dueDate(formattedDate));
updatedLoanChargeForApprovedLoanResult = this.loanTransactionHelper.updateLoanCharge(loanExternalIdStr,
loanChargeForApprovedLoanResult.getResourceExternalId(), new PutLoansLoanIdChargesChargeIdRequest().amount(2.0));
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), updatedLoanChargeForApprovedLoanResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(),
updatedLoanChargeForApprovedLoanResult.getResourceExternalId());
deleteLoanChargeResult = this.loanTransactionHelper.deleteLoanCharge(loanExternalIdStr,
loanChargeForApprovedLoanResult.getResourceExternalId());
assertEquals(loanChargeForApprovedLoanResult.getResourceId(), deleteLoanChargeResult.getResourceId());
assertEquals(loanChargeForApprovedLoanResult.getResourceExternalId(), deleteLoanChargeResult.getResourceExternalId());
this.loanTransactionHelper.approveLoan(formattedDate, loanWithInterestId);
final HashMap disbursedLoanWithInterestResult = this.loanTransactionHelper.disburseLoan(formattedDate, loanWithInterestId, "1000",
null);
// Check whether an external id was generated
@@ -397,14 +501,16 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
LocalDate aMonthBeforePlus3Days = aMonthBefore.plusDays(3);
formattedDate = dateFormatter.format(aMonthBeforePlus3Days);
Integer penalty3LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanWithInterestId,
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), formattedDate, "10"));
String penalty3LoanChargeExternalId = UUID.randomUUID().toString();
Integer penalty3LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanWithInterestId, LoanTransactionHelper
.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), formattedDate, "10", penalty3LoanChargeExternalId));
Integer penalty4LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanWithInterestId,
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty2), formattedDate, "1000"));
Integer penalty5LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanWithInterestId,
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty2), formattedDate, "1000"));
String penalty5LoanChargeExternalId = UUID.randomUUID().toString();
Integer penalty5LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanWithInterestId, LoanTransactionHelper
.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty2), formattedDate, "1000", penalty5LoanChargeExternalId));
// Check whether an external id was generated
final PostLoansLoanIdTransactionsResponse waiveInterestResult = loanTransactionHelper.makeWaiveInterest(loanExternalIdStr,
@@ -520,6 +626,7 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
(long) penalty3LoanChargeId,
new PostLoansLoanIdChargesChargeIdRequest().externalId(chargeAdjustmentExternalIdStr).amount(1.0).locale("en"));
assertEquals(chargeAdjustmentExternalIdStr, chargeAdjustmentResult.getSubResourceExternalId());
assertEquals(penalty3LoanChargeExternalId, chargeAdjustmentResult.getResourceExternalId());
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, chargeAdjustmentExternalIdStr);
assertEquals(chargeAdjustmentExternalIdStr, response.getExternalId());
@@ -529,23 +636,27 @@ public class ExternalIdSupportIntegrationTest extends IntegrationTest {
assertEquals(chargeAdjustmentExternalIdStr, response.getExternalId());
// Check whether an external id was generated
chargeAdjustmentResult = loanTransactionHelper.chargeAdjustment((long) loanWithInterestId, (long) penalty3LoanChargeId,
chargeAdjustmentResult = loanTransactionHelper.chargeAdjustment(loanExternalIdStr, penalty3LoanChargeExternalId,
new PostLoansLoanIdChargesChargeIdRequest().amount(1.0).locale("en"));
assertNotNull(chargeAdjustmentResult.getSubResourceExternalId());
assertEquals(penalty3LoanChargeExternalId, chargeAdjustmentResult.getResourceExternalId());
HashMap payChargeResult = this.loanTransactionHelper.payChargesForLoan(loanWithInterestId, penalty4LoanChargeId,
LoanTransactionHelper.getPayChargeJSON(formattedDate, null), "");
assertNotNull(payChargeResult.get("subResourceExternalId"));
PostLoansLoanIdChargesChargeIdResponse payChargeResult = this.loanTransactionHelper.payLoanCharge(loanExternalIdStr,
(long) penalty4LoanChargeId,
new PostLoansLoanIdChargesChargeIdRequest().locale("en").dateFormat("dd MMMM yyyy").transactionDate(formattedDate));
assertNotNull(payChargeResult.getSubResourceExternalId());
assertNotNull(payChargeResult.getResourceExternalId());
String payChargeExternalIdStr = UUID.randomUUID().toString();
payChargeResult = this.loanTransactionHelper.payChargesForLoan(loanWithInterestId, penalty5LoanChargeId,
LoanTransactionHelper.getPayChargeJSON(formattedDate, null, payChargeExternalIdStr), "");
assertEquals(payChargeExternalIdStr, payChargeResult.get("subResourceExternalId"));
payChargeResult = this.loanTransactionHelper.payLoanCharge(loanExternalIdStr, penalty5LoanChargeExternalId,
new PostLoansLoanIdChargesChargeIdRequest().locale("en").dateFormat("dd MMMM yyyy").transactionDate(formattedDate)
.externalId(payChargeExternalIdStr));
assertEquals(payChargeExternalIdStr, payChargeResult.getSubResourceExternalId());
assertEquals(penalty5LoanChargeExternalId, payChargeResult.getResourceExternalId());
response = loanTransactionHelper.getLoanTransactionDetails((long) loanWithInterestId, payChargeExternalIdStr);
assertEquals(payChargeExternalIdStr, response.getExternalId());
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr,
Long.valueOf(payChargeResult.get("subResourceId").toString()));
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, payChargeResult.getSubResourceId());
assertEquals(payChargeExternalIdStr, response.getExternalId());
response = loanTransactionHelper.getLoanTransactionDetails(loanExternalIdStr, payChargeExternalIdStr);
assertEquals(payChargeExternalIdStr, response.getExternalId());
@@ -42,8 +42,11 @@ import java.util.Map;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import lombok.extern.slf4j.Slf4j;
import org.apache.fineract.client.models.DeleteLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.GetDelinquencyTagHistoryResponse;
import org.apache.fineract.client.models.GetLoanProductsProductIdResponse;
import org.apache.fineract.client.models.GetLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.GetLoansLoanIdChargesTemplateResponse;
import org.apache.fineract.client.models.GetLoansLoanIdCollectionData;
import org.apache.fineract.client.models.GetLoansLoanIdRepaymentPeriod;
import org.apache.fineract.client.models.GetLoansLoanIdRepaymentSchedule;
@@ -53,11 +56,14 @@ import org.apache.fineract.client.models.GetLoansLoanIdTransactionsTransactionId
import org.apache.fineract.client.models.GetPaymentTypesResponse;
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdRequest;
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.PostLoansLoanIdChargesRequest;
import org.apache.fineract.client.models.PostLoansLoanIdChargesResponse;
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.PutLoansLoanIdChargesChargeIdRequest;
import org.apache.fineract.client.models.PutLoansLoanIdChargesChargeIdResponse;
import org.apache.fineract.client.models.PutLoansLoanIdResponse;
import org.apache.fineract.client.util.JSON;
import org.apache.fineract.integrationtests.client.IntegrationTest;
@@ -254,6 +260,22 @@ public class LoanTransactionHelper extends IntegrationTest {
return Utils.performServerGet(requestSpec, responseSpec, GET_LOAN_CHARGES_URL, "");
}
public List<GetLoansLoanIdChargesChargeIdResponse> getLoanCharges(final Long loanId) {
return ok(fineract().loanCharges.retrieveAllLoanCharges(loanId));
}
public List<GetLoansLoanIdChargesChargeIdResponse> getLoanCharges(final String loanExternalId) {
return ok(fineract().loanCharges.retrieveAllLoanCharges1(loanExternalId));
}
public GetLoansLoanIdChargesTemplateResponse getLoanChargeTemplate(final Long loanId) {
return ok(fineract().loanCharges.retrieveTemplate8(loanId));
}
public GetLoansLoanIdChargesTemplateResponse getLoanChargeTemplate(final String loanExternalId) {
return ok(fineract().loanCharges.retrieveTemplate9(loanExternalId));
}
public List getRepaymentTemplate(final Integer loanId) {
final String GET_REPAYMENTS_URL = "/fineract-provider/api/v1/loans/" + loanId + "/transactions/template?command=repayment&"
+ Utils.TENANT_IDENTIFIER;
@@ -503,9 +525,24 @@ public class LoanTransactionHelper extends IntegrationTest {
return Utils.performServerPut(requestSpec, responseSpec, TRANSAC_URL, "", "");
}
public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final Long loanId, final Long chargeId,
public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final Long loanId, final Long loanChargeId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge1(loanId, chargeId, request, "waive"));
return ok(fineract().loanCharges.executeLoanCharge2(loanId, loanChargeId, request, "waive"));
}
public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final String loanExternalId, final Long loanChargeId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge4(loanExternalId, loanChargeId, request, "waive"));
}
public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final Long loanId, final String loanChargeExternalId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge3(loanId, loanChargeExternalId, request, "waive"));
}
public PostLoansLoanIdChargesChargeIdResponse waiveLoanCharge(final String loanExternalId, final String loanChargeExternalId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge5(loanExternalId, loanChargeExternalId, request, "waive"));
}
public PostLoansLoanIdTransactionsResponse makeLoanRepayment(final String loanExternalId,
@@ -674,6 +711,14 @@ public class LoanTransactionHelper extends IntegrationTest {
getWithdrawLoanApplicationBodyAsJSON(date));
}
public PostLoansLoanIdChargesResponse addLoanCharge(final Long loanId, final PostLoansLoanIdChargesRequest request) {
return ok(fineract().loanCharges.executeLoanCharge(loanId, request, ""));
}
public PostLoansLoanIdChargesResponse addLoanCharge(final String loanExternalId, final PostLoansLoanIdChargesRequest request) {
return ok(fineract().loanCharges.executeLoanCharge1(loanExternalId, request, ""));
}
public Integer addChargesForLoan(final Integer loanId, final String request) {
log.info("--------------------------------- ADD CHARGES FOR LOAN --------------------------------");
final String ADD_CHARGES_URL = LOAN_ACCOUNT_URL + "/" + loanId + "/charges?" + Utils.TENANT_IDENTIFIER;
@@ -710,6 +755,42 @@ public class LoanTransactionHelper extends IntegrationTest {
return (Integer) response.get("resourceId");
}
public PutLoansLoanIdChargesChargeIdResponse updateLoanCharge(final Long loanId, final Long loanChargeId,
final PutLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.updateLoanCharge(loanId, loanChargeId, request));
}
public PutLoansLoanIdChargesChargeIdResponse updateLoanCharge(final Long loanId, final String loanChargeExternalId,
final PutLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.updateLoanCharge1(loanId, loanChargeExternalId, request));
}
public PutLoansLoanIdChargesChargeIdResponse updateLoanCharge(final String loanExternalId, final Long loanChargeId,
final PutLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.updateLoanCharge2(loanExternalId, loanChargeId, request));
}
public PutLoansLoanIdChargesChargeIdResponse updateLoanCharge(final String loanExternalId, final String loanChargeExternalId,
final PutLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.updateLoanCharge3(loanExternalId, loanChargeExternalId, request));
}
public DeleteLoansLoanIdChargesChargeIdResponse deleteLoanCharge(final Long loanId, final Long loanChargeId) {
return ok(fineract().loanCharges.deleteLoanCharge(loanId, loanChargeId));
}
public DeleteLoansLoanIdChargesChargeIdResponse deleteLoanCharge(final Long loanId, final String loanChargeExternalId) {
return ok(fineract().loanCharges.deleteLoanCharge1(loanId, loanChargeExternalId));
}
public DeleteLoansLoanIdChargesChargeIdResponse deleteLoanCharge(final String loanExternalId, final Long loanChargeId) {
return ok(fineract().loanCharges.deleteLoanCharge2(loanExternalId, loanChargeId));
}
public DeleteLoansLoanIdChargesChargeIdResponse deleteLoanCharge(final String loanExternalId, final String loanChargeExternalId) {
return ok(fineract().loanCharges.deleteLoanCharge3(loanExternalId, loanChargeExternalId));
}
public Integer deleteChargesForLoan(final Integer loanId, final Integer loanchargeId) {
log.info("--------------------------------- DELETE CHARGES FOR LOAN --------------------------------");
final String DELETE_CHARGES_URL = "/fineract-provider/api/v1/loans/" + loanId + "/charges/" + loanchargeId + "?"
@@ -735,7 +816,12 @@ public class LoanTransactionHelper extends IntegrationTest {
public PostLoansLoanIdChargesChargeIdResponse chargeAdjustment(final Long loanId, final Long chargeId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge1(loanId, chargeId, request, "adjustment"));
return ok(fineract().loanCharges.executeLoanCharge2(loanId, chargeId, request, "adjustment"));
}
public PostLoansLoanIdChargesChargeIdResponse chargeAdjustment(final String loanExternalId, final String loanChargeExternalId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge5(loanExternalId, loanChargeExternalId, request, "adjustment"));
}
public Integer undoWaiveChargesForLoanReturnResourceId(final Integer loanId, final Integer transactionId, final String body) {
@@ -754,11 +840,19 @@ public class LoanTransactionHelper extends IntegrationTest {
return (Integer) response.get("resourceId");
}
public HashMap payChargesForLoan(final Integer loanId, final Integer loanchargeId, final String json, final String responseAttribute) {
log.info("--------------------------------- WAIVE CHARGES FOR LOAN --------------------------------");
final String CHARGES_URL = "/fineract-provider/api/v1/loans/" + loanId + "/charges/" + loanchargeId + "?command=pay&"
+ Utils.TENANT_IDENTIFIER;
return Utils.performServerPost(requestSpec, responseSpec, CHARGES_URL, json, responseAttribute);
public PostLoansLoanIdChargesChargeIdResponse payLoanCharge(final Long loanId, final Long loanChargeId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge2(loanId, loanChargeId, request, "pay"));
}
public PostLoansLoanIdChargesChargeIdResponse payLoanCharge(final String loanExternalId, final Long loanChargeId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge4(loanExternalId, loanChargeId, request, "pay"));
}
public PostLoansLoanIdChargesChargeIdResponse payLoanCharge(final String loanExternalId, final String loanChargeExternalId,
final PostLoansLoanIdChargesChargeIdRequest request) {
return ok(fineract().loanCharges.executeLoanCharge5(loanExternalId, loanChargeExternalId, request, "pay"));
}
public ArrayList<HashMap> getLoanTransactionDetails(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
@@ -774,6 +868,22 @@ public class LoanTransactionHelper extends IntegrationTest {
return Utils.performServerGet(requestSpec, responseSpec, GET_LOAN_CHARGES_URL, "");
}
public GetLoansLoanIdChargesChargeIdResponse getLoanCharge(final Long loanId, final Long loanChargeId) {
return ok(fineract().loanCharges.retrieveLoanCharge(loanId, loanChargeId));
}
public GetLoansLoanIdChargesChargeIdResponse getLoanCharge(final String loanExternalId, final Long loanChargeId) {
return ok(fineract().loanCharges.retrieveLoanCharge2(loanExternalId, loanChargeId));
}
public GetLoansLoanIdChargesChargeIdResponse getLoanCharge(final Long loanId, final String loanChargeExternalId) {
return ok(fineract().loanCharges.retrieveLoanCharge1(loanId, loanChargeExternalId));
}
public GetLoansLoanIdChargesChargeIdResponse getLoanCharge(final String loanExternalId, final String loanChargeExternalId) {
return ok(fineract().loanCharges.retrieveLoanCharge3(loanExternalId, loanChargeExternalId));
}
public Object getLoanTransactionDetails(final Integer loanId, final Integer txnId, final String param) {
final String GET_LOAN_CHARGES_URL = "/fineract-provider/api/v1/loans/" + loanId + "/transactions/" + txnId + "?"
+ Utils.TENANT_IDENTIFIER;
@@ -997,16 +1107,24 @@ public class LoanTransactionHelper extends IntegrationTest {
}
public static String getSpecifiedDueDateChargesForLoanAsJSON(final String chargeId) {
return getSpecifiedDueDateChargesForLoanAsJSON(chargeId, "12 January 2013", "100");
return getSpecifiedDueDateChargesForLoanAsJSON(chargeId, "12 January 2013", "100", null);
}
public static String getSpecifiedDueDateChargesForLoanAsJSON(final String chargeId, final String dueDate, final String amount) {
return getSpecifiedDueDateChargesForLoanAsJSON(chargeId, dueDate, amount, null);
}
public static String getSpecifiedDueDateChargesForLoanAsJSON(final String chargeId, final String dueDate, final String amount,
final String externalId) {
final HashMap<String, String> map = new HashMap<>();
map.put("locale", "en_GB");
map.put("dateFormat", "dd MMMM yyyy");
map.put("amount", amount);
map.put("dueDate", dueDate);
map.put("chargeId", chargeId);
if (externalId != null) {
map.put("externalId", externalId);
}
String json = new Gson().toJson(map);
log.info("{}", json);
return json;