FINERACT-1926 AssetOwnerTransferDetails added

This commit is contained in:
Peter Bagrij
2023-06-06 17:50:49 +02:00
committed by Adam Saghy
parent ebd1ea2696
commit 6172b62456
14 changed files with 301 additions and 27 deletions
@@ -19,6 +19,8 @@
package org.apache.fineract.integrationtests.investor.externalassetowner;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -124,6 +126,13 @@ public class InitiateExternalAssetOwnerTransferTest {
JsonPath.from(loanDetails).get("netDisbursalAmount").toString());
LoanStatusChecker.verifyLoanIsActive(loanStatusHashMap);
// Add Charge Penalty
Integer penalty = ChargesHelper.createCharges(requestSpec, responseSpec,
ChargesHelper.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, "10", true));
Integer penalty1LoanChargeId = this.loanTransactionHelper.addChargesForLoan(loanID,
LoanTransactionHelper.getSpecifiedDueDateChargesForLoanAsJSON(String.valueOf(penalty), "02 March 2020", "10"));
assertNotNull(penalty1LoanChargeId);
String transferExternalId = UUID.randomUUID().toString();
PostInitiateTransferResponse saleResponse = externalAssetOwnerHelper.initiateTransferByLoanId(loanID.longValue(), "sale",
new PostInitiateTransferRequest().settlementDate("2020-03-02").dateFormat("yyyy-MM-dd").locale("en")
@@ -154,12 +163,14 @@ public class InitiateExternalAssetOwnerTransferTest {
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(1);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.ACTIVE, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(9999, 12, 31), externalTransferData.getEffectiveTo());
validateExternalTransferDataDetailsWithPenalty(externalTransferData);
String buybackTransferExternalId = "36efeb06-d835-48a1-99eb-09bd1d348c1e";
PostInitiateTransferResponse buybackResponse = externalAssetOwnerHelper.initiateTransferByLoanId(loanID.longValue(), "buyback",
@@ -177,18 +188,21 @@ public class InitiateExternalAssetOwnerTransferTest {
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(1);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.ACTIVE, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(9999, 12, 31), externalTransferData.getEffectiveTo());
validateExternalTransferDataDetailsWithPenalty(externalTransferData);
externalTransferData = retrieveResponse.getContent().get(2);
assertEquals(buybackTransferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.BUYBACK, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(9999, 12, 31), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, LocalDate.of(2020, 3, 4));
@@ -202,18 +216,21 @@ public class InitiateExternalAssetOwnerTransferTest {
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(1);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.ACTIVE, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveTo());
validateExternalTransferDataDetailsWithPenalty(externalTransferData);
externalTransferData = retrieveResponse.getContent().get(2);
assertEquals(buybackTransferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.BUYBACK, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 3), externalTransferData.getEffectiveTo());
validateExternalTransferDataDetailsWithPenalty(externalTransferData);
} finally {
requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
@@ -223,6 +240,16 @@ public class InitiateExternalAssetOwnerTransferTest {
}
}
private static void validateExternalTransferDataDetailsWithPenalty(ExternalTransferData externalTransferData) {
assertNotNull(externalTransferData.getDetails());
assertEquals(new BigDecimal("15767.420000"), externalTransferData.getDetails().getTotalOutstanding());
assertEquals(new BigDecimal("15000.000000"), externalTransferData.getDetails().getTotalPrincipalOutstanding());
assertEquals(new BigDecimal("757.420000"), externalTransferData.getDetails().getTotalInterestOutstanding());
assertEquals(new BigDecimal("10.000000"), externalTransferData.getDetails().getTotalPenaltyChargesOutstanding());
assertEquals(new BigDecimal("0.000000"), externalTransferData.getDetails().getTotalFeeChargesOutstanding());
assertEquals(new BigDecimal("0.000000"), externalTransferData.getDetails().getTotalOverpaid());
}
@Test
public void saleIsNotAllowedWhenTransferIsAlreadyPending() {
try {
@@ -386,12 +413,14 @@ public class InitiateExternalAssetOwnerTransferTest {
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(9999, 12, 31), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(1);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.BUYBACK, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(9999, 12, 31), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, LocalDate.of(2020, 3, 3));
final String jobName = "Loan COB";
@@ -405,24 +434,28 @@ public class InitiateExternalAssetOwnerTransferTest {
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(1);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.BUYBACK, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(2);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.CANCELLED, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
externalTransferData = retrieveResponse.getContent().get(3);
assertEquals(transferExternalId, externalTransferData.getTransferExternalId());
assertEquals(ExternalTransferData.StatusEnum.CANCELLED, externalTransferData.getStatus());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getSettlementDate());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveFrom());
assertEquals(LocalDate.of(2020, 3, 2), externalTransferData.getEffectiveTo());
assertNull(externalTransferData.getDetails());
} finally {
requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());