FINERACT-2181: fix api double values in loan definitions

This commit is contained in:
mark.vituska
2025-05-27 10:02:25 +02:00
committed by Adam Saghy
parent a40c0d4703
commit c89ec910d8
65 changed files with 1669 additions and 3133 deletions
@@ -31,6 +31,7 @@ import org.apache.fineract.client.models.PostLoanProductsRequest;
import org.apache.fineract.client.models.PostLoanProductsResponse;
import org.apache.fineract.client.models.PostLoansLoanIdChargesChargeIdRequest;
import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.Utils;
import org.apache.fineract.integrationtests.common.loans.LoanTestLifecycleExtension;
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleProcessingType;
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType;
@@ -72,7 +73,7 @@ public class AdvancedPaymentAllocationWaiveLoanCharges extends BaseLoanIntegrati
Assertions.assertNotNull(waiveTransaction.getLoanChargePaidByList());
Assertions.assertEquals(1, waiveTransaction.getLoanChargePaidByList().size());
Assertions.assertEquals(loanChargeId, waiveTransaction.getLoanChargePaidByList().get(0).getChargeId());
Assertions.assertEquals(50.0, waiveTransaction.getLoanChargePaidByList().get(0).getAmount());
Assertions.assertEquals(50.0, Utils.getDoubleValue(waiveTransaction.getLoanChargePaidByList().get(0).getAmount()));
});
}
@@ -105,7 +106,7 @@ public class AdvancedPaymentAllocationWaiveLoanCharges extends BaseLoanIntegrati
Assertions.assertNotNull(waiveTransaction.getLoanChargePaidByList());
Assertions.assertEquals(1, waiveTransaction.getLoanChargePaidByList().size());
Assertions.assertEquals(loanChargeId, waiveTransaction.getLoanChargePaidByList().get(0).getChargeId());
Assertions.assertEquals(50.0, waiveTransaction.getLoanChargePaidByList().get(0).getAmount());
Assertions.assertEquals(50.0, Utils.getDoubleValue(waiveTransaction.getLoanChargePaidByList().get(0).getAmount()));
});
}
@@ -143,7 +144,7 @@ public class AdvancedPaymentAllocationWaiveLoanCharges extends BaseLoanIntegrati
Assertions.assertNotNull(waiveTransaction.getLoanChargePaidByList());
Assertions.assertEquals(1, waiveTransaction.getLoanChargePaidByList().size());
Assertions.assertEquals(loanChargeId, waiveTransaction.getLoanChargePaidByList().get(0).getChargeId());
Assertions.assertEquals(50.0, waiveTransaction.getLoanChargePaidByList().get(0).getAmount());
Assertions.assertEquals(50.0, Utils.getDoubleValue(waiveTransaction.getLoanChargePaidByList().get(0).getAmount()));
addRepaymentForLoan(loanId, 200.0, "03 January 2023");
@@ -5435,9 +5435,9 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
GetLoansLoanIdTransactions replayedTransaction = loanDetails.getTransactions().stream()
.filter(t -> externalId.equals(t.getExternalId())).findFirst().get();
assertEquals(10.0, replayedTransaction.getAmount());
assertEquals(5.0, replayedTransaction.getPenaltyChargesPortion());
assertEquals(5.0, replayedTransaction.getPrincipalPortion());
assertEquals(10.0, Utils.getDoubleValue(replayedTransaction.getAmount()));
assertEquals(5.0, Utils.getDoubleValue(replayedTransaction.getPenaltyChargesPortion()));
assertEquals(5.0, Utils.getDoubleValue(replayedTransaction.getPrincipalPortion()));
assertEquals("loanTransactionType.chargeAdjustment", replayedTransaction.getType().getCode());
assertEquals(externalId, replayedTransaction.getExternalId());
@@ -5549,10 +5549,10 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
GetLoansLoanIdResponse loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
List<GetLoansLoanIdRepaymentPeriod> loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(0.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(0.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(1000.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(1000.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
LocalDate targetDate = LocalDate.of(2022, 9, 7);
final String penaltyCharge1AddedDate = DATE_TIME_FORMATTER.format(targetDate);
@@ -5564,9 +5564,9 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
List<GetLoansLoanIdTransactions> transactions = loanDetails.getTransactions();
assertEquals(10.0, transactions.get(1).getAmount());
assertEquals(10.0, Utils.getDoubleValue(transactions.get(1).getAmount()));
assertTrue(transactions.get(1).getType().getAccrual());
assertEquals(10.0, transactions.get(1).getPenaltyChargesPortion());
assertEquals(10.0, Utils.getDoubleValue(transactions.get(1).getPenaltyChargesPortion()));
Long accrualTransactionId = transactions.get(1).getId();
List<HashMap> journalEntries = JOURNAL_ENTRY_HELPER.getJournalEntriesByTransactionId("L" + accrualTransactionId);
@@ -5579,15 +5579,15 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(1010.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(1010.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(1010.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(1010.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
GetLoansLoanIdSummary loanSummary = loanDetails.getSummary();
assertEquals(10.0, loanSummary.getPenaltyChargesCharged());
assertEquals(10.0, loanSummary.getPenaltyChargesOutstanding());
assertEquals(1010.0, loanSummary.getTotalOutstanding());
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesCharged()));
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesOutstanding()));
assertEquals(1010.0, Utils.getDoubleValue(loanSummary.getTotalOutstanding()));
String externalId = UUID.randomUUID().toString();
PostLoansLoanIdChargesChargeIdResponse chargeAdjustmentResponse = LOAN_TRANSACTION_HELPER.chargeAdjustment((long) loanID,
@@ -5597,23 +5597,23 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesPaid());
assertEquals(0.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(1010.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(1000.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(10.0, loanSchedulePeriods.get(1).getTotalPaidForPeriod());
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(1010.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalPaidForPeriod()));
loanSummary = loanDetails.getSummary();
assertEquals(10.0, loanSummary.getPenaltyChargesCharged());
assertEquals(0.0, loanSummary.getPenaltyChargesOutstanding());
assertEquals(10.0, loanSummary.getPenaltyChargesPaid());
assertEquals(1000.0, loanSummary.getTotalOutstanding());
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesCharged()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesOutstanding()));
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesPaid()));
assertEquals(1000.0, Utils.getDoubleValue(loanSummary.getTotalOutstanding()));
transactions = loanDetails.getTransactions();
assertEquals(10.0, transactions.get(2).getAmount());
assertEquals(10.0, Utils.getDoubleValue(transactions.get(2).getAmount()));
assertTrue(transactions.get(2).getType().getChargeAdjustment());
assertEquals(10.0, transactions.get(2).getPenaltyChargesPortion());
assertEquals(10.0, Utils.getDoubleValue(transactions.get(2).getPenaltyChargesPortion()));
Long chargeAdjustmentTransactionId = transactions.get(2).getId();
journalEntries = JOURNAL_ENTRY_HELPER.getJournalEntriesByTransactionId("L" + chargeAdjustmentTransactionId);
@@ -5654,9 +5654,9 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
transactions = loanDetails.getTransactions();
assertEquals(3.0, transactions.get(2).getAmount());
assertEquals(3.0, Utils.getDoubleValue(transactions.get(2).getAmount()));
assertTrue(transactions.get(2).getType().getAccrual());
assertEquals(3.0, transactions.get(2).getFeeChargesPortion());
assertEquals(3.0, Utils.getDoubleValue(transactions.get(2).getFeeChargesPortion()));
assertTrue(StringUtils.isNotBlank(transactions.get(2).getExternalId()));
accrualTransactionId = transactions.get(2).getId();
@@ -5670,19 +5670,19 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesDue());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesOutstanding());
assertEquals(1013.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(1013.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesDue()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesOutstanding()));
assertEquals(1013.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(1013.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
loanSummary = loanDetails.getSummary();
assertEquals(10.0, loanSummary.getPenaltyChargesCharged());
assertEquals(10.0, loanSummary.getPenaltyChargesOutstanding());
assertEquals(3.0, loanSummary.getFeeChargesCharged());
assertEquals(3.0, loanSummary.getFeeChargesOutstanding());
assertEquals(1013.0, loanSummary.getTotalOutstanding());
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesCharged()));
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesCharged()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesOutstanding()));
assertEquals(1013.0, Utils.getDoubleValue(loanSummary.getTotalOutstanding()));
LOAN_TRANSACTION_HELPER.makeLoanRepayment((long) loanID, new PostLoansLoanIdTransactionsRequest().dateFormat(DATETIME_PATTERN)
.transactionDate("11 September 2022").locale("en").transactionAmount(5.0));
@@ -5695,37 +5695,37 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(7.0, loanSchedulePeriods.get(1).getPenaltyChargesPaid());
assertEquals(3.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesDue());
assertEquals(0.0, loanSchedulePeriods.get(1).getFeeChargesPaid());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesOutstanding());
assertEquals(1000.0, loanSchedulePeriods.get(1).getPrincipalDue());
assertEquals(0.0, loanSchedulePeriods.get(1).getPrincipalPaid());
assertEquals(1000.0, loanSchedulePeriods.get(1).getPrincipalOutstanding());
assertEquals(1013.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(1006.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(7.0, loanSchedulePeriods.get(1).getTotalPaidForPeriod());
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(7.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesPaid()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesDue()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesPaid()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesOutstanding()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalDue()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalPaid()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalOutstanding()));
assertEquals(1013.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(1006.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
assertEquals(7.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalPaidForPeriod()));
loanSummary = loanDetails.getSummary();
assertEquals(10.0, loanSummary.getPenaltyChargesCharged());
assertEquals(3.0, loanSummary.getPenaltyChargesOutstanding());
assertEquals(7.0, loanSummary.getPenaltyChargesPaid());
assertEquals(3.0, loanSummary.getFeeChargesCharged());
assertEquals(3.0, loanSummary.getFeeChargesOutstanding());
assertEquals(0.0, loanSummary.getFeeChargesPaid());
assertEquals(1000.0, loanSummary.getPrincipalOutstanding());
assertEquals(0.0, loanSummary.getPrincipalPaid());
assertEquals(7.0, loanSummary.getTotalRepayment());
assertEquals(1006.0, loanSummary.getTotalOutstanding());
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesCharged()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesOutstanding()));
assertEquals(7.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesPaid()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesCharged()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getFeeChargesPaid()));
assertEquals(1000.0, Utils.getDoubleValue(loanSummary.getPrincipalOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getPrincipalPaid()));
assertEquals(7.0, Utils.getDoubleValue(loanSummary.getTotalRepayment()));
assertEquals(1006.0, Utils.getDoubleValue(loanSummary.getTotalOutstanding()));
transactions = loanDetails.getTransactions();
assertEquals(2.0, transactions.get(5).getAmount());
assertEquals(2.0, Utils.getDoubleValue(transactions.get(5).getAmount()));
assertTrue(transactions.get(4).getType().getChargeAdjustment());
assertEquals(2.0, transactions.get(5).getPenaltyChargesPortion());
assertEquals(0.0, transactions.get(5).getFeeChargesPortion());
assertEquals(0.0, transactions.get(5).getPrincipalPortion());
assertEquals(2.0, Utils.getDoubleValue(transactions.get(5).getPenaltyChargesPortion()));
assertEquals(0.0, Utils.getDoubleValue(transactions.get(5).getFeeChargesPortion()));
assertEquals(0.0, Utils.getDoubleValue(transactions.get(5).getPrincipalPortion()));
chargeAdjustmentTransactionId = transactions.get(5).getId();
journalEntries = JOURNAL_ENTRY_HELPER.getJournalEntriesByTransactionId("L" + chargeAdjustmentTransactionId);
@@ -5744,37 +5744,37 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesPaid());
assertEquals(0.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesDue());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesPaid());
assertEquals(0.0, loanSchedulePeriods.get(1).getFeeChargesOutstanding());
assertEquals(1000.0, loanSchedulePeriods.get(1).getPrincipalDue());
assertEquals(1.0, loanSchedulePeriods.get(1).getPrincipalPaid());
assertEquals(999.0, loanSchedulePeriods.get(1).getPrincipalOutstanding());
assertEquals(1013.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(999.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(14.0, loanSchedulePeriods.get(1).getTotalPaidForPeriod());
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesDue()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesOutstanding()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalDue()));
assertEquals(1.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalPaid()));
assertEquals(999.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalOutstanding()));
assertEquals(1013.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(999.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
assertEquals(14.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalPaidForPeriod()));
loanSummary = loanDetails.getSummary();
assertEquals(10.0, loanSummary.getPenaltyChargesCharged());
assertEquals(0.0, loanSummary.getPenaltyChargesOutstanding());
assertEquals(10.0, loanSummary.getPenaltyChargesPaid());
assertEquals(3.0, loanSummary.getFeeChargesCharged());
assertEquals(0.0, loanSummary.getFeeChargesOutstanding());
assertEquals(3.0, loanSummary.getFeeChargesPaid());
assertEquals(999.0, loanSummary.getPrincipalOutstanding());
assertEquals(1.0, loanSummary.getPrincipalPaid());
assertEquals(14.0, loanSummary.getTotalRepayment());
assertEquals(999.0, loanSummary.getTotalOutstanding());
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesCharged()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesOutstanding()));
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesPaid()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesCharged()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getFeeChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesPaid()));
assertEquals(999.0, Utils.getDoubleValue(loanSummary.getPrincipalOutstanding()));
assertEquals(1.0, Utils.getDoubleValue(loanSummary.getPrincipalPaid()));
assertEquals(14.0, Utils.getDoubleValue(loanSummary.getTotalRepayment()));
assertEquals(999.0, Utils.getDoubleValue(loanSummary.getTotalOutstanding()));
transactions = loanDetails.getTransactions();
assertEquals(7.0, transactions.get(6).getAmount());
assertEquals(7.0, Utils.getDoubleValue(transactions.get(6).getAmount()));
assertTrue(transactions.get(6).getType().getChargeAdjustment());
assertEquals(3.0, transactions.get(6).getPenaltyChargesPortion());
assertEquals(3.0, transactions.get(6).getFeeChargesPortion());
assertEquals(1.0, transactions.get(6).getPrincipalPortion());
assertEquals(3.0, Utils.getDoubleValue(transactions.get(6).getPenaltyChargesPortion()));
assertEquals(3.0, Utils.getDoubleValue(transactions.get(6).getFeeChargesPortion()));
assertEquals(1.0, Utils.getDoubleValue(transactions.get(6).getPrincipalPortion()));
chargeAdjustmentTransactionId = transactions.get(6).getId();
journalEntries = JOURNAL_ENTRY_HELPER.getJournalEntriesByTransactionId("L" + chargeAdjustmentTransactionId);
@@ -5810,37 +5810,37 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanSchedulePeriods = loanDetails.getRepaymentSchedule().getPeriods();
assertEquals(2, loanSchedulePeriods.size());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesDue());
assertEquals(10.0, loanSchedulePeriods.get(1).getPenaltyChargesPaid());
assertEquals(0.0, loanSchedulePeriods.get(1).getPenaltyChargesOutstanding());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesDue());
assertEquals(3.0, loanSchedulePeriods.get(1).getFeeChargesPaid());
assertEquals(0.0, loanSchedulePeriods.get(1).getFeeChargesOutstanding());
assertEquals(1000.0, loanSchedulePeriods.get(1).getPrincipalDue());
assertEquals(1000.0, loanSchedulePeriods.get(1).getPrincipalPaid());
assertEquals(0.0, loanSchedulePeriods.get(1).getPrincipalOutstanding());
assertEquals(1013.0, loanSchedulePeriods.get(1).getTotalDueForPeriod());
assertEquals(0.0, loanSchedulePeriods.get(1).getTotalOutstandingForPeriod());
assertEquals(1013.0, loanSchedulePeriods.get(1).getTotalPaidForPeriod());
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesDue()));
assertEquals(10.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPenaltyChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesDue()));
assertEquals(3.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getFeeChargesOutstanding()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalDue()));
assertEquals(1000.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getPrincipalOutstanding()));
assertEquals(1013.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalDueForPeriod()));
assertEquals(0.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalOutstandingForPeriod()));
assertEquals(1013.0, Utils.getDoubleValue(loanSchedulePeriods.get(1).getTotalPaidForPeriod()));
loanSummary = loanDetails.getSummary();
assertEquals(10.0, loanSummary.getPenaltyChargesCharged());
assertEquals(0.0, loanSummary.getPenaltyChargesOutstanding());
assertEquals(10.0, loanSummary.getPenaltyChargesPaid());
assertEquals(3.0, loanSummary.getFeeChargesCharged());
assertEquals(0.0, loanSummary.getFeeChargesOutstanding());
assertEquals(3.0, loanSummary.getFeeChargesPaid());
assertEquals(0.0, loanSummary.getPrincipalOutstanding());
assertEquals(1000.0, loanSummary.getPrincipalPaid());
assertEquals(1013.0, loanSummary.getTotalRepayment());
assertEquals(0.0, loanSummary.getTotalOutstanding());
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesCharged()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesOutstanding()));
assertEquals(10.0, Utils.getDoubleValue(loanSummary.getPenaltyChargesPaid()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesCharged()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getFeeChargesOutstanding()));
assertEquals(3.0, Utils.getDoubleValue(loanSummary.getFeeChargesPaid()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getPrincipalOutstanding()));
assertEquals(1000.0, Utils.getDoubleValue(loanSummary.getPrincipalPaid()));
assertEquals(1013.0, Utils.getDoubleValue(loanSummary.getTotalRepayment()));
assertEquals(0.0, Utils.getDoubleValue(loanSummary.getTotalOutstanding()));
transactions = loanDetails.getTransactions();
assertEquals(1.0, transactions.get(8).getAmount());
assertEquals(1.0, Utils.getDoubleValue(transactions.get(8).getAmount()));
assertTrue(transactions.get(8).getType().getChargeAdjustment());
assertEquals(0.0, transactions.get(8).getPenaltyChargesPortion());
assertEquals(0.0, transactions.get(8).getFeeChargesPortion());
assertEquals(1.0, transactions.get(8).getPrincipalPortion());
assertEquals(0.0, Utils.getDoubleValue(transactions.get(8).getPenaltyChargesPortion()));
assertEquals(0.0, Utils.getDoubleValue(transactions.get(8).getFeeChargesPortion()));
assertEquals(1.0, Utils.getDoubleValue(transactions.get(8).getPrincipalPortion()));
chargeAdjustmentTransactionId = transactions.get(8).getId();
journalEntries = JOURNAL_ENTRY_HELPER.getJournalEntriesByTransactionId("L" + chargeAdjustmentTransactionId);
@@ -5860,12 +5860,12 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
transactions = loanDetails.getTransactions();
assertEquals(1.0, transactions.get(9).getAmount());
assertEquals(1.0, Utils.getDoubleValue(transactions.get(9).getAmount()));
assertTrue(transactions.get(9).getType().getChargeAdjustment());
assertEquals(0.0, transactions.get(9).getPenaltyChargesPortion());
assertEquals(0.0, transactions.get(9).getFeeChargesPortion());
assertEquals(0.0, transactions.get(9).getPrincipalPortion());
assertEquals(1.0, transactions.get(9).getOverpaymentPortion());
assertEquals(0.0, Utils.getDoubleValue(transactions.get(9).getPenaltyChargesPortion()));
assertEquals(0.0, Utils.getDoubleValue(transactions.get(9).getFeeChargesPortion()));
assertEquals(0.0, Utils.getDoubleValue(transactions.get(9).getPrincipalPortion()));
assertEquals(1.0, Utils.getDoubleValue(transactions.get(9).getOverpaymentPortion()));
chargeAdjustmentTransactionId = transactions.get(9).getId();
journalEntries = JOURNAL_ENTRY_HELPER.getJournalEntriesByTransactionId("L" + chargeAdjustmentTransactionId);
@@ -6227,7 +6227,7 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
GetLoansLoanIdResponse loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertTrue(loanDetails.getStatus().getActive());
assertEquals(2000.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(2000.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
assertFalse(loanDetails.getChargedOff());
assertNull(loanDetails.getSummary().getChargeOffReasonId());
assertNull(loanDetails.getSummary().getChargeOffReason());
@@ -6253,7 +6253,7 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertTrue(loanDetails.getStatus().getActive());
assertEquals(2003.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(2003.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
assertTrue(loanDetails.getChargedOff());
assertEquals((long) chargeOffReasonId, loanDetails.getSummary().getChargeOffReasonId());
assertEquals(randomText, loanDetails.getSummary().getChargeOffReason());
@@ -6264,9 +6264,9 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
GetLoansLoanIdTransactions chargeOffTransaction = loanDetails.getTransactions().get(loanDetails.getTransactions().size() - 1);
assertEquals(2003.0, chargeOffTransaction.getAmount());
assertEquals(2000.0, chargeOffTransaction.getPrincipalPortion());
assertEquals(3.0, chargeOffTransaction.getPenaltyChargesPortion());
assertEquals(2003.0, Utils.getDoubleValue(chargeOffTransaction.getAmount()));
assertEquals(2000.0, Utils.getDoubleValue(chargeOffTransaction.getPrincipalPortion()));
assertEquals(3.0, Utils.getDoubleValue(chargeOffTransaction.getPenaltyChargesPortion()));
exception = assertThrows(CallFailedRuntimeException.class, () -> {
errorLoanTransactionHelper.chargeOffLoan((long) loanID,
@@ -6333,8 +6333,8 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
chargeOffTransaction = loanDetails.getTransactions().get(loanDetails.getTransactions().size() - 1);
assertEquals(1998.0, chargeOffTransaction.getAmount());
assertEquals(1998.0, chargeOffTransaction.getPrincipalPortion());
assertEquals(1998.0, Utils.getDoubleValue(chargeOffTransaction.getAmount()));
assertEquals(1998.0, Utils.getDoubleValue(chargeOffTransaction.getPrincipalPortion()));
LOAN_TRANSACTION_HELPER.makeLoanRepayment((long) loanID, new PostLoansLoanIdTransactionsRequest().dateFormat(DATETIME_PATTERN)
.transactionDate("07 September 2022").locale("en").transactionAmount(5.0));
@@ -6531,23 +6531,23 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
GetLoansLoanIdResponse loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(300.0, loanDetails.getTotalOverpaid());
assertEquals(300.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
assertEquals(500.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertEquals(10.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(10.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertEquals(400.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(400.0, loanDetails.getTransactions().get(3).getPrincipalPortion());
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 6), loanDetails.getTransactions().get(3).getDate());
assertEquals(390.0, loanDetails.getTransactions().get(4).getAmount());
assertEquals(90.0, loanDetails.getTransactions().get(4).getPrincipalPortion());
assertEquals(300.0, loanDetails.getTransactions().get(4).getOverpaymentPortion());
assertEquals(390.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getAmount()));
assertEquals(90.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getPrincipalPortion()));
assertEquals(300.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getTransactions().get(4).getDate());
LOAN_TRANSACTION_HELPER.reverseLoanTransaction((long) loanID, loanDetails.getTransactions().get(2).getId(),
@@ -6556,24 +6556,24 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(290.0, loanDetails.getTotalOverpaid());
assertEquals(290.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
assertEquals(500.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertEquals(10.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(10.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertTrue(loanDetails.getTransactions().get(2).getManuallyReversed());
assertEquals(400.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(400.0, loanDetails.getTransactions().get(3).getPrincipalPortion());
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 6), loanDetails.getTransactions().get(3).getDate());
assertEquals(390.0, loanDetails.getTransactions().get(4).getAmount());
assertEquals(100.0, loanDetails.getTransactions().get(4).getPrincipalPortion());
assertEquals(290.0, loanDetails.getTransactions().get(4).getOverpaymentPortion());
assertEquals(390.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getAmount()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getPrincipalPortion()));
assertEquals(290.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getTransactions().get(4).getDate());
LOAN_TRANSACTION_HELPER.reverseLoanTransaction((long) loanID, loanDetails.getTransactions().get(1).getId(),
@@ -6582,53 +6582,53 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(210.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(210.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
assertEquals(500.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertTrue(loanDetails.getTransactions().get(2).getManuallyReversed());
assertEquals(10.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(10.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertTrue(loanDetails.getTransactions().get(2).getManuallyReversed());
assertEquals(400.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(400.0, loanDetails.getTransactions().get(3).getPrincipalPortion());
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 6), loanDetails.getTransactions().get(3).getDate());
assertEquals(390.0, loanDetails.getTransactions().get(4).getAmount());
assertEquals(390.0, loanDetails.getTransactions().get(4).getPrincipalPortion());
assertEquals(390.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getAmount()));
assertEquals(390.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getTransactions().get(4).getDate());
LOAN_TRANSACTION_HELPER.makeRepayment("04 September 2022", Float.parseFloat("500"), loanID);
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(290.0, loanDetails.getTotalOverpaid());
assertEquals(290.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
assertEquals(500.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertTrue(loanDetails.getTransactions().get(1).getManuallyReversed());
assertEquals(500.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(2).getDate());
assertEquals(10.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(10.0, loanDetails.getTransactions().get(3).getPrincipalPortion());
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(3).getDate());
assertTrue(loanDetails.getTransactions().get(3).getManuallyReversed());
assertEquals(400.0, loanDetails.getTransactions().get(4).getAmount());
assertEquals(400.0, loanDetails.getTransactions().get(4).getPrincipalPortion());
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getAmount()));
assertEquals(400.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 6), loanDetails.getTransactions().get(4).getDate());
assertEquals(390.0, loanDetails.getTransactions().get(5).getAmount());
assertEquals(100.0, loanDetails.getTransactions().get(5).getPrincipalPortion());
assertEquals(290.0, loanDetails.getTransactions().get(5).getOverpaymentPortion());
assertEquals(390.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getAmount()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getPrincipalPortion()));
assertEquals(290.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getTransactions().get(5).getDate());
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID,
@@ -6672,7 +6672,7 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
LOAN_TRANSACTION_HELPER.makeRepayment("05 September 2022", Float.parseFloat("1100"), loanID);
GetLoansLoanIdResponse loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(200.0, loanDetails.getTotalOverpaid());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
assertTrue(loanDetails.getStatus().getOverpaid());
LOAN_TRANSACTION_HELPER.makeCreditBalanceRefund((long) loanID, new PostLoansLoanIdTransactionsRequest().transactionAmount(200.0)
@@ -6682,21 +6682,21 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
assertTrue(loanDetails.getStatus().getClosedObligationsMet());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(1000, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue()));
assertEquals(100.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(100.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertEquals(900.0, loanDetails.getTransactions().get(1).getOutstandingLoanBalance());
assertEquals(1100.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(900.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(200.0, loanDetails.getTransactions().get(2).getOverpaymentPortion());
assertEquals(900.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getOutstandingLoanBalance()));
assertEquals(1100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(900.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(2).getOutstandingLoanBalance());
assertEquals(200.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(200.0, loanDetails.getTransactions().get(3).getOverpaymentPortion());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOutstandingLoanBalance()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 10, 10), loanDetails.getTransactions().get(3).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(3).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOutstandingLoanBalance()));
assertEquals(1L, loanDetails.getTransactions().get(3).getPaymentDetailData().getPaymentType().getId());
GetJournalEntriesTransactionIdResponse journalEntriesForTransaction = JOURNAL_ENTRY_HELPER
.getJournalEntries("L" + loanDetails.getTransactions().get(3).getId());
@@ -6716,34 +6716,34 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(100.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(100.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertTrue(loanDetails.getTransactions().get(1).getManuallyReversed());
assertEquals(1100.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(1000.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(100.0, loanDetails.getTransactions().get(2).getOverpaymentPortion());
assertEquals(1100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(2).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOutstandingLoanBalance()));
assertEquals(1, loanDetails.getTransactions().get(2).getTransactionRelations().size());
assertEquals(200.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(100.0, loanDetails.getTransactions().get(3).getPrincipalPortion());
assertEquals(100.0, loanDetails.getTransactions().get(3).getOverpaymentPortion());
assertEquals(100.0, loanDetails.getTransactions().get(3).getOutstandingLoanBalance());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getPrincipalPortion()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOverpaymentPortion()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOutstandingLoanBalance()));
assertEquals(LocalDate.of(2022, 10, 10), loanDetails.getTransactions().get(3).getDate());
assertEquals(1, loanDetails.getTransactions().get(3).getTransactionRelations().size());
assertTrue(loanDetails.getStatus().getActive());
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(1000, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue()));
assertTrue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
assertEquals(200, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalDue());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalDue()));
assertFalse(loanDetails.getRepaymentSchedule().getPeriods().get(2).getComplete());
assertEquals(100.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalPaid());
assertEquals(100.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalOutstanding());
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalPaid()));
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalOutstanding()));
journalEntriesForTransaction = JOURNAL_ENTRY_HELPER.getJournalEntries("L" + loanDetails.getTransactions().get(3).getId());
journalItems = journalEntriesForTransaction.getPageItems();
@@ -6808,7 +6808,7 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
LOAN_TRANSACTION_HELPER.makeRepayment("05 September 2022", Float.parseFloat("700"), loanID);
GetLoansLoanIdResponse loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(200.0, loanDetails.getTotalOverpaid());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
assertTrue(loanDetails.getStatus().getOverpaid());
LOAN_TRANSACTION_HELPER.makeCreditBalanceRefund((long) loanID, new PostLoansLoanIdTransactionsRequest().transactionAmount(200.0)
@@ -6824,33 +6824,33 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
assertTrue(loanDetails.getStatus().getClosedObligationsMet());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(1000, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue()));
assertEquals(500.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertEquals(500.0, loanDetails.getTransactions().get(1).getOutstandingLoanBalance());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getOutstandingLoanBalance()));
assertEquals(700.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(200.0, loanDetails.getTransactions().get(2).getOverpaymentPortion());
assertEquals(700.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(2).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOutstandingLoanBalance()));
assertEquals(200.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(200.0, loanDetails.getTransactions().get(3).getOverpaymentPortion());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 6), loanDetails.getTransactions().get(3).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(3).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOutstandingLoanBalance()));
assertEquals(500.0, loanDetails.getTransactions().get(4).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(4).getOverpaymentPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getTransactions().get(4).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(4).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getOutstandingLoanBalance()));
assertEquals(500.0, loanDetails.getTransactions().get(5).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(5).getOverpaymentPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 8), loanDetails.getTransactions().get(5).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(5).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getOutstandingLoanBalance()));
LOAN_TRANSACTION_HELPER.reverseLoanTransaction(loanDetails.getId(), loanDetails.getTransactions().get(2).getId(),
new PostLoansLoanIdTransactionsTransactionIdRequest().dateFormat(DATETIME_PATTERN).transactionAmount(0.0)
@@ -6858,43 +6858,43 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
loanDetails = LOAN_TRANSACTION_HELPER.getLoanDetails((long) loanID);
assertEquals(500.0, loanDetails.getTransactions().get(1).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(1).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 4), loanDetails.getTransactions().get(1).getDate());
assertEquals(500.0, loanDetails.getTransactions().get(1).getOutstandingLoanBalance());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(1).getOutstandingLoanBalance()));
assertEquals(700.0, loanDetails.getTransactions().get(2).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(2).getPrincipalPortion());
assertEquals(200.0, loanDetails.getTransactions().get(2).getOverpaymentPortion());
assertEquals(700.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getPrincipalPortion()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOverpaymentPortion()));
assertEquals(LocalDate.of(2022, 9, 5), loanDetails.getTransactions().get(2).getDate());
assertEquals(0.0, loanDetails.getTransactions().get(2).getOutstandingLoanBalance());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getTransactions().get(2).getOutstandingLoanBalance()));
assertTrue(loanDetails.getTransactions().get(2).getManuallyReversed());
assertEquals(200.0, loanDetails.getTransactions().get(3).getAmount());
assertEquals(200.0, loanDetails.getTransactions().get(3).getPrincipalPortion());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getAmount()));
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 6), loanDetails.getTransactions().get(3).getDate());
assertEquals(700.0, loanDetails.getTransactions().get(3).getOutstandingLoanBalance());
assertEquals(700.0, Utils.getDoubleValue(loanDetails.getTransactions().get(3).getOutstandingLoanBalance()));
assertEquals(1, loanDetails.getTransactions().get(3).getTransactionRelations().size());
assertEquals(500.0, loanDetails.getTransactions().get(4).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(4).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getTransactions().get(4).getDate());
assertEquals(200.0, loanDetails.getTransactions().get(4).getOutstandingLoanBalance());
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTransactions().get(4).getOutstandingLoanBalance()));
assertEquals(1, loanDetails.getTransactions().get(4).getTransactionRelations().size());
assertEquals(500.0, loanDetails.getTransactions().get(5).getAmount());
assertEquals(500.0, loanDetails.getTransactions().get(5).getPrincipalPortion());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getAmount()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getPrincipalPortion()));
assertEquals(LocalDate.of(2022, 9, 8), loanDetails.getTransactions().get(5).getDate());
assertEquals(700.0, loanDetails.getTransactions().get(5).getOutstandingLoanBalance());
assertEquals(700.0, Utils.getDoubleValue(loanDetails.getTransactions().get(5).getOutstandingLoanBalance()));
assertEquals(1, loanDetails.getTransactions().get(5).getTransactionRelations().size());
assertTrue(loanDetails.getStatus().getActive());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(1700, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue());
assertEquals(1700.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalDue()));
assertFalse(loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalPaid());
assertEquals(700.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalPaid()));
assertEquals(700.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding()));
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_AUTO_GENERATED_EXTERNAL_ID,
@@ -6961,9 +6961,9 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
GetLoansLoanIdTransactions lastAccrualTransaction = loanDetails.getTransactions().stream()
.filter(t -> Boolean.TRUE.equals(t.getType().getAccrual())).findFirst().get();
assertEquals(15, lastAccrualTransaction.getAmount());
assertEquals(5, lastAccrualTransaction.getPenaltyChargesPortion());
assertEquals(10, lastAccrualTransaction.getFeeChargesPortion());
assertEquals(15.0, Utils.getDoubleValue(lastAccrualTransaction.getAmount()));
assertEquals(5.0, Utils.getDoubleValue(lastAccrualTransaction.getPenaltyChargesPortion()));
assertEquals(10.0, Utils.getDoubleValue(lastAccrualTransaction.getFeeChargesPortion()));
GetLoansLoanIdTransactionsTransactionIdResponse accrualTransactionDetails = LOAN_TRANSACTION_HELPER
.getLoanTransactionDetails((long) loanID, lastAccrualTransaction.getId());
@@ -6971,9 +6971,9 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
assertEquals(2, accrualTransactionDetails.getLoanChargePaidByList().size());
accrualTransactionDetails.getLoanChargePaidByList().forEach(loanCharge -> {
if (loanCharge.getChargeId().equals((long) penalty1LoanChargeId)) {
assertEquals(5, loanCharge.getAmount());
assertEquals(5.0, Utils.getDoubleValue(loanCharge.getAmount()));
} else {
assertEquals(10, loanCharge.getAmount());
assertEquals(10.0, Utils.getDoubleValue(loanCharge.getAmount()));
}
});
@@ -1269,7 +1269,7 @@ public class DelinquencyBucketsIntegrationTest extends BaseLoanIntegrationTest {
getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
loanTransactionHelper.printDelinquencyData(getLoansLoanIdResponse);
delinquent = getLoansLoanIdResponse.getDelinquent();
assertEquals(amount, delinquent.getDelinquentAmount());
assertEquals(amount, Utils.getDoubleValue(delinquent.getDelinquentAmount()));
assertEquals(LocalDate.parse(date, dateTimeFormatter), delinquent.getDelinquentDate());
assertEquals(delinquentDays, delinquent.getDelinquentDays());
}
@@ -1344,7 +1344,7 @@ public class DelinquencyBucketsIntegrationTest extends BaseLoanIntegrationTest {
getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId);
loanTransactionHelper.printDelinquencyData(getLoansLoanIdResponse);
GetLoansLoanIdDelinquencySummary delinquent = getLoansLoanIdResponse.getDelinquent();
assertEquals(2049.99, delinquent.getDelinquentAmount());
assertEquals(2049.99, Utils.getDoubleValue(delinquent.getDelinquentAmount()));
assertEquals(LocalDate.of(2012, 2, 1), delinquent.getDelinquentDate());
assertEquals(31, delinquent.getDelinquentDays());
assertEquals(2, delinquent.getInstallmentLevelDelinquency().size());
@@ -1395,7 +1395,7 @@ public class DelinquencyBucketsIntegrationTest extends BaseLoanIntegrationTest {
assertNotNull(getLoansLoanIdResponse);
assertNotNull(getLoansLoanIdResponse.getDelinquent());
assertEquals(0, getLoansLoanIdResponse.getDelinquent().getDelinquentDays());
assertEquals(0, getLoansLoanIdResponse.getDelinquent().getDelinquentAmount());
assertEquals(0.0, Utils.getDoubleValue(getLoansLoanIdResponse.getDelinquent().getDelinquentAmount()));
// Loan Disbursement
disburseLoanAccount(loanTransactionHelper, loanId, operationDate);
@@ -1404,7 +1404,7 @@ public class DelinquencyBucketsIntegrationTest extends BaseLoanIntegrationTest {
assertNotNull(getLoansLoanIdResponse);
assertNotNull(getLoansLoanIdResponse.getDelinquent());
assertNotEquals(0, getLoansLoanIdResponse.getDelinquent().getDelinquentDays());
assertNotEquals(0, getLoansLoanIdResponse.getDelinquent().getDelinquentAmount());
assertNotEquals(0, Utils.getDoubleValue(getLoansLoanIdResponse.getDelinquent().getDelinquentAmount()));
}
@Test
@@ -1459,7 +1459,7 @@ public class DelinquencyBucketsIntegrationTest extends BaseLoanIntegrationTest {
assertNotNull(getLoansLoanIdResponse);
assertNotNull(delinquent);
assertEquals(0, delinquent.getDelinquentDays());
assertEquals(0, delinquent.getDelinquentAmount());
assertEquals(0.0, Utils.getDoubleValue(delinquent.getDelinquentAmount()));
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -875,8 +875,8 @@ public class ExternalIdSupportIntegrationTest extends BaseLoanIntegrationTest {
GetLoansApprovalTemplateResponse loanApprovalResult = this.loanTransactionHelper.getLoanApprovalTemplate(loanExternalIdStr);
assertEquals(actualDate, loanApprovalResult.getApprovalDate());
assertEquals(1000.0, loanApprovalResult.getApprovalAmount());
assertEquals(1000.0, loanApprovalResult.getNetDisbursalAmount());
assertEquals(1000.0, Utils.getDoubleValue(loanApprovalResult.getApprovalAmount()));
assertEquals(1000.0, Utils.getDoubleValue(loanApprovalResult.getNetDisbursalAmount()));
assertNotNull(loanApprovalResult.getCurrency());
assertNotNull(loanApprovalResult.getCurrency().getCode());
assertEquals("USD", loanApprovalResult.getCurrency().getCode());
@@ -129,16 +129,16 @@ public class LoanAccountArrearsAgeingCOBBusinessStepTest extends BaseLoanIntegra
GetLoansLoanIdSummary loan1Summary = loan1Details.getSummary();
assertNotNull(loan1Summary);
assertNotNull(loan1Summary.getOverdueSinceDate());
assertEquals(loan1Summary.getPrincipalOverdue(), 1000.00);
assertEquals(loan1Summary.getTotalOverdue(), 1000.00);
assertEquals(1000.00, Utils.getDoubleValue(loan1Summary.getPrincipalOverdue()));
assertEquals(1000.00, Utils.getDoubleValue(loan1Summary.getTotalOverdue()));
// Retrieve Loan 2 with loanId
GetLoansLoanIdResponse loan2Details = loanTransactionHelper.getLoanDetails((long) loanId_2);
GetLoansLoanIdSummary loan2Summary = loan2Details.getSummary();
assertNotNull(loan2Summary);
assertNotNull(loan2Summary.getOverdueSinceDate());
assertEquals(loan2Summary.getPrincipalOverdue(), 1000.00);
assertEquals(loan2Summary.getTotalOverdue(), 1000.00);
assertEquals(1000.00, Utils.getDoubleValue(loan2Summary.getPrincipalOverdue()));
assertEquals(1000.00, Utils.getDoubleValue(loan2Summary.getTotalOverdue()));
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
new PutGlobalConfigurationsRequest().enabled(false));
@@ -115,31 +115,35 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// verify schedule is according to expected disbursement date
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// first disbursement on a future date (7 March 2023)
businessDate = LocalDate.of(2023, 3, 7);
@@ -155,31 +159,35 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// first installment down payment repayment
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// make repayment on 7 March to pay down payment installment
final PostLoansLoanIdTransactionsResponse repaymentTransaction_1 = loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
@@ -192,35 +200,39 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(375.0, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(375.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// first installment down payment repayment
// check down payment installment gets paid
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// set business date
@@ -240,44 +252,49 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(875.0, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(875.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// first installment down payment repayment for 5 March disbursal
// check down payment installment gets paid
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment down payment repayment for 7 March disbursal
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(3).getComplete());
// third installment [5 March 2023 - 5 April 2023]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 4, 5), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(4).getComplete());
// fourth installment [5 April 2023 - 5 May 2023]
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(5).getPeriod());
assertEquals(LocalDate.of(2023, 4, 5), loanDetails.getRepaymentSchedule().getPeriods().get(5).getFromDate());
assertEquals(LocalDate.of(2023, 5, 5), loanDetails.getRepaymentSchedule().getPeriods().get(5).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(5).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(5).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(5).getComplete());
// fifth installment [5 May 2023 - 5 June 2023]
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().get(6).getPeriod());
assertEquals(LocalDate.of(2023, 5, 5), loanDetails.getRepaymentSchedule().getPeriods().get(6).getFromDate());
assertEquals(LocalDate.of(2023, 6, 5), loanDetails.getRepaymentSchedule().getPeriods().get(6).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(6).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(6).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(6).getComplete());
} finally {
@@ -339,31 +356,35 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// verify schedule is according to expected disbursement date
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// first disbursement on a future date (7 March 2023)
@@ -380,31 +401,35 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// first installment down payment repayment for 7 March disbursal
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment [3 March 2023 - 3 April 2023]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment [3 April 2023 - 3 May 2023]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment [3 May 2023 - 3 June 2023]
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// make repayment on 7 March to pay downpayment insatllment
final PostLoansLoanIdTransactionsResponse repaymentTransaction_1 = loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
@@ -421,27 +446,31 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment [3 March 2023 - 3 April 2023]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment [3 April 2023 - 3 May 2023]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment [3 May 2023 - 3 June 2023]
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
businessDate = LocalDate.of(2023, 3, 8);
@@ -462,36 +491,41 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment down payment repayment for 7 March disbursal
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(3).getComplete());
// third installment [3 March 2023 - 3 April 2023]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(4).getComplete());
// fourth installment [3 April 2023 - 3 May 2023]
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(5).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(5).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(5).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(5).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(5).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(5).getComplete());
// fifth installment [3 May 2023 - 3 June 2023]
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().get(6).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(6).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(6).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(6).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(6).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(6).getComplete());
} finally {
@@ -553,31 +587,35 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// verify schedule is according to expected disbursement date
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// first disbursement on a future date (7 March 2023)
@@ -594,31 +632,35 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// first installment down payment repayment
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// make repayment on 7 March to pay downpayment insatllment
final PostLoansLoanIdTransactionsResponse repaymentTransaction_1 = loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
@@ -632,35 +674,39 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
// check down payment installment gets paid
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(375.0, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(375.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// first installment down payment repayment
// check down payment installment gets paid
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// set business date to next repayment due business date
businessDate = LocalDate.of(2023, 4, 7);
@@ -677,36 +723,40 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails);
assertNotNull(loanDetails.getRepaymentSchedule());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(250.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// first installment down payment repayment
// check down payment installment gets paid
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(2).getComplete());
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// make backdate disbursement for 5 march with business date 7 April
@@ -720,44 +770,49 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify transactions get reprocessed and installments paid accordingly
assertEquals(750.0, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(750.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// first installment down payment repayment for 5 March disbursal
// check down payment installment gets paid
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment down payment repayment for 7 March disbursal
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(125.00, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalPaidForPeriod());
assertEquals(125.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
assertEquals(125.00, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(3).getComplete());
// third installment [5 March 2023 - 5 April 2023]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 4, 5), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(4).getComplete());
// fourth installment [5 April 2023 - 5 May 2023]
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(5).getPeriod());
assertEquals(LocalDate.of(2023, 4, 5), loanDetails.getRepaymentSchedule().getPeriods().get(5).getFromDate());
assertEquals(LocalDate.of(2023, 5, 5), loanDetails.getRepaymentSchedule().getPeriods().get(5).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(5).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(5).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(5).getComplete());
// fifth installment [5 May 2023 - 5 June 2023]
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().get(6).getPeriod());
assertEquals(LocalDate.of(2023, 5, 5), loanDetails.getRepaymentSchedule().getPeriods().get(6).getFromDate());
assertEquals(LocalDate.of(2023, 6, 5), loanDetails.getRepaymentSchedule().getPeriods().get(6).getDueDate());
assertEquals(250.00, loanDetails.getRepaymentSchedule().getPeriods().get(6).getTotalInstallmentAmountForPeriod());
assertEquals(250.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(6).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(6).getComplete());
} finally {
@@ -817,30 +872,34 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// verify schedule is according to expected disbursement date
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// fourth installment
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
// first disbursement on a future date (7 March 2023)
businessDate = LocalDate.of(2023, 3, 7);
BusinessDateHelper.updateBusinessDate(requestSpec, responseSpec, BusinessDateType.BUSINESS_DATE, businessDate);
@@ -920,26 +979,29 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// verify schedule is according to expected disbursement date
// first installment
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(333.34, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(333.34,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// first disbursement on a future date (7 March 2023)
businessDate = LocalDate.of(2023, 3, 7);
@@ -955,7 +1017,7 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// disbursement period
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(0).getDueDate());
@@ -964,19 +1026,22 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(166.66, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(166.66,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// make repayment on 7 March to pay installment
final PostLoansLoanIdTransactionsResponse repaymentTransaction_1 = loanTransactionHelper.makeLoanRepayment(loanExternalIdStr,
@@ -989,29 +1054,32 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(333.33, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// first installment
// check installment gets paid
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(166.67, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalPaidForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getComplete());
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(166.66, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(166.66,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// set business date
businessDate = LocalDate.of(2023, 3, 8);
@@ -1030,8 +1098,8 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertNotNull(loanDetails.getRepaymentSchedule());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(833.33, loanDetails.getRepaymentSchedule().getTotalOutstanding());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(833.33, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalOutstanding()));
// verify disbursement period order
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(0).getDueDate());
@@ -1042,22 +1110,25 @@ public class LoanAccountBackdatedDisbursementTest extends BaseLoanIntegrationTes
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 5), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalPaidForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
assertEquals(166.67, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalPaidForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(2).getComplete());
// second installment
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 5), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 5), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(3).getComplete());
// third installment
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 5), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 5), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(333.34, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(333.34,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(4).getComplete());
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -169,10 +169,11 @@ public class LoanAccountChargeReveseReplayWithAdvancedPaymentAllocationTest exte
assertNotNull(loanDetails.getRepaymentSchedule());
assertNotNull(loanDetails.getRepaymentSchedule().getPeriods());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(20.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding());
assertEquals(10.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding());
assertEquals(900.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding());
assertEquals(930.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod());
assertEquals(20.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding()));
assertEquals(10.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding()));
assertEquals(900.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding()));
assertEquals(930.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod()));
});
}
@@ -212,10 +213,11 @@ public class LoanAccountChargeReveseReplayWithAdvancedPaymentAllocationTest exte
assertNotNull(loanDetails.getRepaymentSchedule());
assertNotNull(loanDetails.getRepaymentSchedule().getPeriods());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding());
assertEquals(930.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding());
assertEquals(930.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding()));
assertEquals(930.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding()));
assertEquals(930.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod()));
});
}
@@ -257,10 +259,11 @@ public class LoanAccountChargeReveseReplayWithAdvancedPaymentAllocationTest exte
assertNotNull(loanDetails.getRepaymentSchedule());
assertNotNull(loanDetails.getRepaymentSchedule().getPeriods());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding());
assertEquals(930.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding());
assertEquals(930.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding()));
assertEquals(930.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding()));
assertEquals(930.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod()));
});
}
@@ -308,10 +311,10 @@ public class LoanAccountChargeReveseReplayWithAdvancedPaymentAllocationTest exte
assertNotNull(loanDetails.getRepaymentSchedule());
assertNotNull(loanDetails.getRepaymentSchedule().getPeriods());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding());
assertEquals(0.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPenaltyChargesOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getFeeChargesOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getPrincipalOutstanding()));
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalOutstandingForPeriod()));
// adding an extra charge after maturity
updateBusinessDate("11 October 2022");
@@ -817,7 +817,7 @@ public class LoanAccountPaymentAllocationWithOverlappingDownPaymentInstallmentTe
private void verifyDisbursementPeriod(GetLoansLoanIdRepaymentPeriod period, LocalDate disbursementDate, double disbursedAmount) {
assertEquals(disbursementDate, period.getDueDate());
assertEquals(disbursedAmount, period.getPrincipalLoanBalanceOutstanding());
assertEquals(disbursedAmount, Utils.getDoubleValue(period.getPrincipalLoanBalanceOutstanding()));
}
private void verifyPeriodDetails(GetLoansLoanIdRepaymentPeriod period, Integer periodNumber, double periodAmount,
@@ -826,14 +826,14 @@ public class LoanAccountPaymentAllocationWithOverlappingDownPaymentInstallmentTe
assertEquals(periodNumber, period.getPeriod());
assertEquals(periodFromDate, period.getFromDate());
assertEquals(periodDueDate, period.getDueDate());
assertEquals(periodAmount, period.getTotalInstallmentAmountForPeriod());
assertEquals(periodAmountPaid, period.getTotalPaidForPeriod());
assertEquals(principalPaid, period.getPrincipalPaid());
assertEquals(outstandingAmount, period.getTotalOutstandingForPeriod());
assertEquals(feeDue, period.getFeeChargesDue());
assertEquals(feePaid, period.getFeeChargesPaid());
assertEquals(penaltyDue, period.getPenaltyChargesDue());
assertEquals(penaltyPaid, period.getPenaltyChargesPaid());
assertEquals(periodAmount, Utils.getDoubleValue(period.getTotalInstallmentAmountForPeriod()));
assertEquals(periodAmountPaid, Utils.getDoubleValue(period.getTotalPaidForPeriod()));
assertEquals(principalPaid, Utils.getDoubleValue(period.getPrincipalPaid()));
assertEquals(outstandingAmount, Utils.getDoubleValue(period.getTotalOutstandingForPeriod()));
assertEquals(feeDue, Utils.getDoubleValue(period.getFeeChargesDue()));
assertEquals(feePaid, Utils.getDoubleValue(period.getFeeChargesPaid()));
assertEquals(penaltyDue, Utils.getDoubleValue(period.getPenaltyChargesDue()));
assertEquals(penaltyPaid, Utils.getDoubleValue(period.getPenaltyChargesPaid()));
assertEquals(isComplete, period.getComplete());
}
@@ -416,7 +416,7 @@ public class LoanAccountRepaymentCalculationTest extends BaseLoanIntegrationTest
assertEquals(expectedPeriodNumber, period.getPeriod());
assertEquals(expectedPeriodFromDate, period.getFromDate());
assertEquals(expectedPeriodDueDate, period.getDueDate());
assertEquals(expectedAmount, period.getTotalInstallmentAmountForPeriod());
assertEquals(expectedAmount, Utils.getDoubleValue(period.getTotalInstallmentAmountForPeriod()));
assertEquals(isComplete, period.getComplete());
}
@@ -78,7 +78,7 @@ public class LoanCapitalizedIncomeTest extends BaseLoanIntegrationTest {
transaction(100.0, "Disbursement", "01 January 2024"), //
transaction(50.0, "Capitalized Income", "01 January 2024"), //
transaction(0.55, "Capitalized Income Amortization", "01 January 2024"), //
transaction(0.03, "Accrual", "02 January 2024"), //
transaction(0.02, "Accrual", "02 January 2024"), //
transaction(0.55, "Capitalized Income Amortization", "02 January 2024") //
);
@@ -89,8 +89,8 @@ public class LoanCapitalizedIncomeTest extends BaseLoanIntegrationTest {
journalEntry(50, deferredIncomeLiabilityAccount, "CREDIT"), //
journalEntry(0.55, deferredIncomeLiabilityAccount, "DEBIT"), //
journalEntry(0.55, feeIncomeAccount, "CREDIT"), //
journalEntry(0.03, interestReceivableAccount, "DEBIT"), //
journalEntry(0.03, interestIncomeAccount, "CREDIT"), //
journalEntry(0.02, interestReceivableAccount, "DEBIT"), //
journalEntry(0.02, interestIncomeAccount, "CREDIT"), //
journalEntry(0.55, deferredIncomeLiabilityAccount, "DEBIT"), //
journalEntry(0.55, feeIncomeAccount, "CREDIT") //
);
@@ -212,24 +212,30 @@ public class LoanChargePaymentWithAdvancedPaymentAllocationTest extends BaseLoan
GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails((long) loanId);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesDue());
assertEquals(feePortion, loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesOutstanding());
assertEquals(penaltyPortion, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesDue());
assertEquals(penaltyPortion, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesOutstanding());
assertEquals(400.0d, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalDueForPeriod());
assertEquals(400.0d, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesDue()));
assertEquals(feePortion,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesOutstanding()));
assertEquals(penaltyPortion,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesDue()));
assertEquals(penaltyPortion,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesOutstanding()));
assertEquals(400.0d, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalDueForPeriod()));
assertEquals(400.0d,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 16), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
scheduleJobHelper.executeAndAwaitJob(jobName);
loanDetails = loanTransactionHelper.getLoanDetails((long) loanId);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesDue());
assertEquals(0.0d, loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesOutstanding());
assertEquals(penaltyPortion, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesDue());
assertEquals(0.0d, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesOutstanding());
assertEquals(400.0d, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalDueForPeriod());
assertEquals(250.0d, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesDue()));
assertEquals(0.0d, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getFeeChargesOutstanding()));
assertEquals(penaltyPortion,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesDue()));
assertEquals(0.0d, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPenaltyChargesOutstanding()));
assertEquals(400.0d, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalDueForPeriod()));
assertEquals(250.0d,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 16), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -113,7 +113,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 500.0);
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// chargeback on Repayment
PostLoansLoanIdTransactionsResponse chargebackTransactionResponse = loanTransactionHelper.chargebackLoanTransaction(
@@ -128,7 +128,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 1000.0);
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// Goodwill Credit
final PostLoansLoanIdTransactionsResponse goodwillCredit_1 = loanTransactionHelper.makeGoodwillCredit((long) loanId,
@@ -142,7 +142,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 800.0);
assertEquals(800.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// chargeback on Goodwill Credit Transaction
chargebackTransactionResponse = loanTransactionHelper.chargebackLoanTransaction(loanExternalIdStr, goodwillCredit_1.getResourceId(),
@@ -166,7 +166,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 700.0);
assertEquals(700.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// chargeback on Payout Refund Transaction
chargebackTransactionResponse = loanTransactionHelper.chargebackLoanTransaction(loanExternalIdStr, payoutRefund_1.getResourceId(),
@@ -181,7 +181,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 1000.0);
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// Merchant Issued Refund
@@ -196,7 +196,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 900.0);
assertEquals(900.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// chargeback on Merchant Issued Refund Transaction
chargebackTransactionResponse = loanTransactionHelper.chargebackLoanTransaction(loanExternalIdStr,
@@ -212,7 +212,7 @@ public class LoanChargebackOnPaymentTypeRepaymentTransactionsTest {
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 1000.0);
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
}
@@ -35,6 +35,7 @@ import org.apache.fineract.client.models.PostLoansLoanIdResponse;
import org.apache.fineract.client.models.PostLoansRequest;
import org.apache.fineract.client.models.PostLoansResponse;
import org.apache.fineract.integrationtests.common.ClientHelper;
import org.apache.fineract.integrationtests.common.Utils;
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleProcessingType;
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType;
import org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType;
@@ -1777,10 +1778,10 @@ public class LoanChargebackWithCreditAllocationsIntegrationTests extends BaseLoa
GetLoansLoanIdResponse loanResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanId.intValue());
GetLoansLoanIdSummary summary = loanResponse.getSummary();
Assertions.assertNotNull(summary);
Assertions.assertEquals(creditedPrincipal, summary.getPrincipalAdjustments());
Assertions.assertEquals(creditedFee, summary.getFeeAdjustments());
Assertions.assertEquals(creditedPenalty, summary.getPenaltyAdjustments());
Assertions.assertEquals(totalOutstanding, summary.getTotalOutstanding());
Assertions.assertEquals(creditedPrincipal, Utils.getDoubleValue(summary.getPrincipalAdjustments()));
Assertions.assertEquals(creditedFee, Utils.getDoubleValue(summary.getFeeAdjustments()));
Assertions.assertEquals(creditedPenalty, Utils.getDoubleValue(summary.getPenaltyAdjustments()));
Assertions.assertEquals(totalOutstanding, Utils.getDoubleValue(summary.getTotalOutstanding()));
}
private Long applyAndApproveLoan(Long clientId, Long loanProductId, int numberOfRepayments) {
@@ -1254,7 +1254,7 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest {
Assertions.assertNotNull(loanDetails);
Assertions.assertNotNull(loanDetails.getStatus());
Assertions.assertEquals(700, loanDetails.getStatus().getId());
Assertions.assertEquals(160.16D, loanDetails.getTotalOverpaid());
Assertions.assertEquals(160.16D, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
});
}
@@ -1630,7 +1630,7 @@ public class LoanInterestRefundTest extends BaseLoanIntegrationTest {
);
GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails(loanId);
verifyLoanStatus(loanDetails, LoanStatus.OVERPAID);
Assertions.assertEquals(0.36, loanDetails.getTotalOverpaid());
Assertions.assertEquals(0.36, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
});
}
}
@@ -100,7 +100,7 @@ public class LoanLastRepaymentDetailsTest {
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getDelinquent());
assertNotNull(loanDetails.getDelinquent().getLastRepaymentAmount());
assertEquals(loanDetails.getDelinquent().getLastRepaymentAmount(), 500);
assertEquals(500.00, Utils.getDoubleValue(loanDetails.getDelinquent().getLastRepaymentAmount()));
assertNotNull(loanDetails.getDelinquent().getLastRepaymentDate());
assertEquals(loanDetails.getDelinquent().getLastRepaymentDate(), lastRepaymentDate_1);
@@ -117,7 +117,7 @@ public class LoanLastRepaymentDetailsTest {
assertTrue(loanDetails.getStatus().getClosedObligationsMet());
assertNotNull(loanDetails.getDelinquent());
assertNotNull(loanDetails.getDelinquent().getLastRepaymentAmount());
assertEquals(loanDetails.getDelinquent().getLastRepaymentAmount(), 500);
assertEquals(500.00, Utils.getDoubleValue(loanDetails.getDelinquent().getLastRepaymentAmount()));
assertNotNull(loanDetails.getDelinquent().getLastRepaymentDate());
assertEquals(loanDetails.getDelinquent().getLastRepaymentDate(), lastRepaymentDate_2);
@@ -155,7 +155,7 @@ public class LoanLastRepaymentDetailsTest {
assertTrue(loanDetails.getStatus().getActive());
assertNotNull(loanDetails.getDelinquent());
assertNotNull(loanDetails.getDelinquent().getLastRepaymentAmount());
assertEquals(loanDetails.getDelinquent().getLastRepaymentAmount(), 500);
assertEquals(500.00, Utils.getDoubleValue(loanDetails.getDelinquent().getLastRepaymentAmount()));
assertNotNull(loanDetails.getDelinquent().getLastRepaymentDate());
assertEquals(loanDetails.getDelinquent().getLastRepaymentDate(), lastRepaymentDate_1);
@@ -171,7 +171,7 @@ public class LoanLastRepaymentDetailsTest {
assertTrue(loanDetails.getStatus().getOverpaid());
assertNotNull(loanDetails.getDelinquent());
assertNotNull(loanDetails.getDelinquent().getLastRepaymentAmount());
assertEquals(loanDetails.getDelinquent().getLastRepaymentAmount(), 600);
assertEquals(600.00, Utils.getDoubleValue(loanDetails.getDelinquent().getLastRepaymentAmount()));
assertNotNull(loanDetails.getDelinquent().getLastRepaymentDate());
assertEquals(loanDetails.getDelinquent().getLastRepaymentDate(), lastRepaymentDate_2);
@@ -170,25 +170,28 @@ public class LoanProductRepaymentStartDateConfigurationTest {
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().size());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// first period [2023-03-03 to 2023-04-03]
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second period [2023-04-03 to 2023-05-03]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third period [2023-05-03 to 2023-06-03]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(333.34, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(333.34,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// first disbursement on a future date (7 March 2023)
@@ -208,26 +211,29 @@ public class LoanProductRepaymentStartDateConfigurationTest {
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().size());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed()));
// first period [2023-03-03 to 2023-04-03]
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second period [2023-04-03 to 2023-05-03]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third period [2023-05-03 to 2023-06-03]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(166.66, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(166.66,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// second disbursement next month (7 April 2023)
@@ -248,26 +254,29 @@ public class LoanProductRepaymentStartDateConfigurationTest {
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed()));
// first period [2023-03-03 to 2023-04-03]
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second period [2023-04-03 to 2023-05-03]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// third period [2023-05-03 to 2023-06-03]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 3), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(500.00, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(500.00,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -327,25 +336,28 @@ public class LoanProductRepaymentStartDateConfigurationTest {
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().size());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
// first period [2023-03-07 to 2023-04-07]
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second period [2023-04-07 to 2023-05-07]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third period [2023-05-07 to 2023-06-07]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(333.34, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(333.34,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// first disbursement (7 March 2023)
@@ -366,26 +378,29 @@ public class LoanProductRepaymentStartDateConfigurationTest {
assertEquals(4, loanDetails.getRepaymentSchedule().getPeriods().size());
// verify amounts
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(500.0, loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed()));
// first period [2023-03-07 to 2023-04-07]
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
// second period [2023-04-07 to 2023-05-07]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(166.67, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(166.67,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// third period [2023-05-07 to 2023-06-07]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(166.66, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(166.66,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// second disbursement next month (7 April 2023)
@@ -407,26 +422,29 @@ public class LoanProductRepaymentStartDateConfigurationTest {
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
// verify amounts
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalExpected());
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed());
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalExpected()));
assertEquals(1000.0, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getTotalPrincipalDisbursed()));
// first period [2023-03-07 to 2023-04-07]
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 3, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getFromDate());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
// second period [2023-04-07 to 2023-05-07]
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 4, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getFromDate());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(333.33, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(333.33,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
// third period [2023-05-07 to 2023-06-07]
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 5, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getFromDate());
assertEquals(LocalDate.of(2023, 6, 7), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(333.34, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(333.34,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -160,7 +160,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
.anyMatch(period -> expectedDownPaymentAmount.equals(Utils.getDoubleValue(period.getTotalPaidForPeriod())) //
&& expectedDownPaymentDueDate.equals(period.getDueDate())));
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(summary.getTotalOutstanding()));
assertEquals(expectedDownPaymentAmount, summary.getTotalRepaymentTransaction());
assertEquals(expectedDownPaymentAmount, Utils.getDoubleValue(summary.getTotalRepaymentTransaction()));
assertTrue(periods.stream().anyMatch(period -> expectedRepaymentAmount.equals(Utils.getDoubleValue(period.getTotalDueForPeriod()))
&& expectedRepaymentDueDate.equals(period.getDueDate())));
}
@@ -363,30 +363,31 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
LocalDate expectedThirdRepaymentDueDate = LocalDate.of(2022, 12, 3);
Double outstandingBalanceOnThirdRepayment = 0.00;
assertEquals(expectedDownPaymentAmount, summary.getTotalRepaymentTransaction());
assertEquals(expectedDownPaymentAmount, Utils.getDoubleValue(summary.getTotalRepaymentTransaction()));
GetLoansLoanIdRepaymentPeriod firstDisbursementPeriod = periods.get(0);
assertEquals(expectedDownPaymentDueDate, firstDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnDisbursement, firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnDisbursement,
Utils.getDoubleValue(firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod firstDownPaymentPeriod = periods.get(1);
assertEquals(expectedDownPaymentAmount, firstDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedDownPaymentAmount, Utils.getDoubleValue(firstDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedDownPaymentDueDate, firstDownPaymentPeriod.getDueDate());
GetLoansLoanIdRepaymentPeriod firstRepaymentPeriod = periods.get(2);
assertEquals(expectedRepaymentAmount, firstRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(firstRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstRepaymentDueDate, firstRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnFirstRepayment, firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnFirstRepayment, Utils.getDoubleValue(firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod secondRepaymentPeriod = periods.get(3);
assertEquals(expectedRepaymentAmount, secondRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(secondRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondRepaymentDueDate, secondRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnSecondRepayment, secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnSecondRepayment, Utils.getDoubleValue(secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod thirdRepaymentPeriod = periods.get(4);
assertEquals(expectedRepaymentAmount, thirdRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(thirdRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedThirdRepaymentDueDate, thirdRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnThirdRepayment, thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnThirdRepayment, Utils.getDoubleValue(thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
}
@Test
@@ -441,38 +442,40 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
Double outstandingBalanceOnThirdRepayment = 0.00;
Double expectedTotalRepaymentAmount = expectedFirstDownPaymentAmount + expectedSecondDownPaymentAmount;
assertEquals(expectedTotalRepaymentAmount, summary.getTotalRepaymentTransaction());
assertEquals(expectedTotalRepaymentAmount, Utils.getDoubleValue(summary.getTotalRepaymentTransaction()));
GetLoansLoanIdRepaymentPeriod firstDisbursementPeriod = periods.get(0);
assertEquals(expectedFirstDownPaymentDueDate, firstDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnFirstDisbursement, firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnFirstDisbursement,
Utils.getDoubleValue(firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod firstDownPaymentPeriod = periods.get(1);
assertEquals(expectedFirstDownPaymentAmount, firstDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedFirstDownPaymentAmount, Utils.getDoubleValue(firstDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstDownPaymentDueDate, firstDownPaymentPeriod.getDueDate());
GetLoansLoanIdRepaymentPeriod secondDisbursementPeriod = periods.get(2);
assertEquals(expectedSecondDownPaymentDueDate, secondDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnSecondDisbursement, secondDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnSecondDisbursement,
Utils.getDoubleValue(secondDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod secondDownPaymentPeriod = periods.get(3);
assertEquals(expectedSecondDownPaymentAmount, secondDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedSecondDownPaymentAmount, Utils.getDoubleValue(secondDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondDownPaymentDueDate, secondDownPaymentPeriod.getDueDate());
GetLoansLoanIdRepaymentPeriod firstRepaymentPeriod = periods.get(4);
assertEquals(expectedRepaymentAmount, firstRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(firstRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstRepaymentDueDate, firstRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnFirstRepayment, firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnFirstRepayment, Utils.getDoubleValue(firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod secondRepaymentPeriod = periods.get(5);
assertEquals(expectedRepaymentAmount, secondRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(secondRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondRepaymentDueDate, secondRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnSecondRepayment, secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnSecondRepayment, Utils.getDoubleValue(secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod thirdRepaymentPeriod = periods.get(6);
assertEquals(expectedRepaymentAmount, thirdRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(thirdRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedThirdRepaymentDueDate, thirdRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnThirdRepayment, thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnThirdRepayment, Utils.getDoubleValue(thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
}
@Test
@@ -605,39 +608,41 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
Double outstandingBalanceOnThirdRepayment = 0.00;
Double expectedTotalRepaymentAmount = expectedFirstDownPaymentAmount + expectedSecondDownPaymentAmount;
assertEquals(expectedTotalRepaymentAmount, summary.getTotalRepaymentTransaction());
assertEquals(expectedTotalRepaymentAmount, Utils.getDoubleValue(summary.getTotalRepaymentTransaction()));
GetLoansLoanIdRepaymentPeriod firstDisbursementPeriod = periods.get(0);
assertEquals(expectedFirstDownPaymentDueDate, firstDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnFirstDisbursement, firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnFirstDisbursement,
Utils.getDoubleValue(firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod firstDownPaymentPeriod = periods.get(1);
assertEquals(expectedFirstDownPaymentAmount, firstDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedFirstDownPaymentAmount, Utils.getDoubleValue(firstDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstDownPaymentDueDate, firstDownPaymentPeriod.getDueDate());
GetLoansLoanIdRepaymentPeriod secondDisbursementPeriod = periods.get(2);
assertEquals(expectedSecondDownPaymentDueDate, secondDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnSecondDisbursement, secondDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnSecondDisbursement,
Utils.getDoubleValue(secondDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod secondDownPaymentPeriod = periods.get(3);
assertEquals(expectedSecondDownPaymentAmount, secondDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedSecondDownPaymentAmount, Utils.getDoubleValue(secondDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondDownPaymentDueDate, secondDownPaymentPeriod.getDueDate());
GetLoansLoanIdRepaymentPeriod firstRepaymentPeriod = periods.get(4);
assertEquals(expectedRepaymentAmount, firstRepaymentPeriod.getPrincipalDue());
assertEquals(expectedRepaymentTotalDueWithCharge, firstRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(firstRepaymentPeriod.getPrincipalDue()));
assertEquals(expectedRepaymentTotalDueWithCharge, Utils.getDoubleValue(firstRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstRepaymentDueDate, firstRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnFirstRepayment, firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnFirstRepayment, Utils.getDoubleValue(firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod secondRepaymentPeriod = periods.get(5);
assertEquals(expectedRepaymentAmount, secondRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(secondRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondRepaymentDueDate, secondRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnSecondRepayment, secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnSecondRepayment, Utils.getDoubleValue(secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod thirdRepaymentPeriod = periods.get(6);
assertEquals(expectedRepaymentAmount, thirdRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(thirdRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedThirdRepaymentDueDate, thirdRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnThirdRepayment, thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(outstandingBalanceOnThirdRepayment, Utils.getDoubleValue(thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
}
@Test
@@ -775,44 +780,46 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
Double outstandingBalanceOnThirdRepayment = 0.00;
Double expectedTotalRepaymentAmount = expectedFirstDownPaymentAmount + expectedSecondDownPaymentAmount;
assertEquals(expectedTotalRepaymentAmount, summary.getTotalRepaymentTransaction());
assertEquals(expectedTotalRepaymentAmount, Utils.getDoubleValue(summary.getTotalRepaymentTransaction()));
GetLoansLoanIdRepaymentPeriod firstDisbursementPeriod = periods.get(0);
assertEquals(expectedFirstDownPaymentDueDate, firstDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnFirstDisbursement, firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnFirstDisbursement,
Utils.getDoubleValue(firstDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod firstDownPaymentPeriod = periods.get(1);
assertEquals(expectedFirstDownPaymentAmount, firstDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedFirstDownPaymentAmount, Utils.getDoubleValue(firstDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstDownPaymentDueDate, firstDownPaymentPeriod.getDueDate());
assertEquals(expectedDownPaymentInterest, firstDownPaymentPeriod.getInterestDue());
assertEquals(expectedDownPaymentInterest, Utils.getDoubleValue(firstDownPaymentPeriod.getInterestDue()));
GetLoansLoanIdRepaymentPeriod secondDisbursementPeriod = periods.get(2);
assertEquals(expectedSecondDownPaymentDueDate, secondDisbursementPeriod.getDueDate());
assertEquals(expectedOutstandingLoanBalanceOnSecondDisbursement, secondDisbursementPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedOutstandingLoanBalanceOnSecondDisbursement,
Utils.getDoubleValue(secondDisbursementPeriod.getPrincipalLoanBalanceOutstanding()));
GetLoansLoanIdRepaymentPeriod secondDownPaymentPeriod = periods.get(3);
assertEquals(expectedSecondDownPaymentAmount, secondDownPaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedSecondDownPaymentAmount, Utils.getDoubleValue(secondDownPaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondDownPaymentDueDate, secondDownPaymentPeriod.getDueDate());
assertEquals(expectedDownPaymentInterest, secondDownPaymentPeriod.getInterestDue());
assertEquals(expectedDownPaymentInterest, Utils.getDoubleValue(secondDownPaymentPeriod.getInterestDue()));
GetLoansLoanIdRepaymentPeriod firstRepaymentPeriod = periods.get(4);
assertEquals(expectedRepaymentAmount, firstRepaymentPeriod.getPrincipalDue());
assertEquals(expectedRepaymentTotalDueWithChargeAndInterest, firstRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmount, Utils.getDoubleValue(firstRepaymentPeriod.getPrincipalDue()));
assertEquals(expectedRepaymentTotalDueWithChargeAndInterest, Utils.getDoubleValue(firstRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedFirstRepaymentDueDate, firstRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnFirstRepayment, firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedRepaymentInterest, firstRepaymentPeriod.getInterestDue());
assertEquals(outstandingBalanceOnFirstRepayment, Utils.getDoubleValue(firstRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
assertEquals(expectedRepaymentInterest, Utils.getDoubleValue(firstRepaymentPeriod.getInterestDue()));
GetLoansLoanIdRepaymentPeriod secondRepaymentPeriod = periods.get(5);
assertEquals(expectedRepaymentAmountWithInterest, secondRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmountWithInterest, Utils.getDoubleValue(secondRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedSecondRepaymentDueDate, secondRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnSecondRepayment, secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedRepaymentInterest, secondRepaymentPeriod.getInterestDue());
assertEquals(outstandingBalanceOnSecondRepayment, Utils.getDoubleValue(secondRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
assertEquals(expectedRepaymentInterest, Utils.getDoubleValue(secondRepaymentPeriod.getInterestDue()));
GetLoansLoanIdRepaymentPeriod thirdRepaymentPeriod = periods.get(6);
assertEquals(expectedRepaymentAmountWithInterest, thirdRepaymentPeriod.getTotalDueForPeriod());
assertEquals(expectedRepaymentAmountWithInterest, Utils.getDoubleValue(thirdRepaymentPeriod.getTotalDueForPeriod()));
assertEquals(expectedThirdRepaymentDueDate, thirdRepaymentPeriod.getDueDate());
assertEquals(outstandingBalanceOnThirdRepayment, thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding());
assertEquals(expectedRepaymentInterest, thirdRepaymentPeriod.getInterestDue());
assertEquals(outstandingBalanceOnThirdRepayment, Utils.getDoubleValue(thirdRepaymentPeriod.getPrincipalLoanBalanceOutstanding()));
assertEquals(expectedRepaymentInterest, Utils.getDoubleValue(thirdRepaymentPeriod.getInterestDue()));
}
@Test
@@ -1059,14 +1066,17 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
// verify installment details
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(0).getDueDate());
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getPeriods().get(0).getPrincipalLoanBalanceOutstanding());
assertEquals(1000.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(0).getPrincipalLoanBalanceOutstanding()));
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getDownPaymentPeriod());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPeriod());
assertEquals(LocalDate.of(2023, 4, 2), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(750.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod());
assertEquals(750.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(2).getDownPaymentPeriod());
// second disbursement
@@ -1079,21 +1089,26 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
loanDetails = loanTransactionHelper.getLoanDetails(loanId.longValue());
// verify installment details
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(0).getDueDate());
assertEquals(1000.0, loanDetails.getRepaymentSchedule().getPeriods().get(0).getPrincipalLoanBalanceOutstanding());
assertEquals(1000.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(0).getPrincipalLoanBalanceOutstanding()));
assertEquals(1, loanDetails.getRepaymentSchedule().getPeriods().get(1).getPeriod());
assertEquals(LocalDate.of(2023, 3, 3), loanDetails.getRepaymentSchedule().getPeriods().get(1).getDueDate());
assertEquals(250.0, loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod());
assertEquals(250.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(1).getTotalInstallmentAmountForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(1).getDownPaymentPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(2).getDueDate());
assertEquals(200.0, loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalLoanBalanceOutstanding());
assertEquals(200.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(2).getPrincipalLoanBalanceOutstanding()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(2).getDownPaymentPeriod());
assertEquals(2, loanDetails.getRepaymentSchedule().getPeriods().get(3).getPeriod());
assertEquals(LocalDate.of(2023, 3, 5), loanDetails.getRepaymentSchedule().getPeriods().get(3).getDueDate());
assertEquals(50.0, loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod());
assertEquals(50.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(3).getTotalInstallmentAmountForPeriod()));
assertEquals(true, loanDetails.getRepaymentSchedule().getPeriods().get(3).getDownPaymentPeriod());
assertEquals(3, loanDetails.getRepaymentSchedule().getPeriods().get(4).getPeriod());
assertEquals(LocalDate.of(2023, 4, 2), loanDetails.getRepaymentSchedule().getPeriods().get(4).getDueDate());
assertEquals(900.0, loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod());
assertEquals(900.0,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(4).getTotalInstallmentAmountForPeriod()));
assertEquals(false, loanDetails.getRepaymentSchedule().getPeriods().get(4).getDownPaymentPeriod());
// verify journal entries for down-payment
@@ -1284,7 +1299,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
transaction(800.0, "Repayment", "03 March 2023", 0.0, 750.0, 0.0, 0.0, 0.0, 0.0, 50.0) //
);
assertTrue(loanDetails.getStatus().getOverpaid());
assertEquals(50.0, loanDetails.getTotalOverpaid());
assertEquals(50.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
// second disbursement
disbursementDate = LocalDate.of(2023, 3, 5);
@@ -1311,7 +1326,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
transaction(20.0, "Disbursement", "05 March 2023", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 20.0) //
);
assertTrue(loanDetails.getStatus().getOverpaid());
assertEquals(30.0, loanDetails.getTotalOverpaid());
assertEquals(30.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
loanTransactionHelper.disburseLoan(loanResponse.getResourceId(),
new PostLoansLoanIdRequest().actualDisbursementDate("05 March 2023").dateFormat(DATETIME_PATTERN)
@@ -1338,8 +1353,8 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
);
assertTrue(loanDetails.getStatus().getClosedObligationsMet());
assertEquals(0.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(null, loanDetails.getTotalOverpaid());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
assertEquals(null, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
PostLoansLoanIdTransactionsResponse repayment = loanTransactionHelper.makeLoanRepayment(loanResponse.getResourceId(),
new PostLoansLoanIdTransactionsRequest().dateFormat("dd MMMM yyyy").transactionDate("05 March 2023").locale("en")
@@ -1356,7 +1371,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
transaction(1.0, "Repayment", "05 March 2023", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) //
);
assertTrue(loanDetails.getStatus().getOverpaid());
assertEquals(1.0, loanDetails.getTotalOverpaid());
assertEquals(1.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
loanTransactionHelper.disburseLoan(loanResponse.getResourceId(),
new PostLoansLoanIdRequest().actualDisbursementDate("05 March 2023").dateFormat(DATETIME_PATTERN)
@@ -1387,7 +1402,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
);
assertTrue(loanDetails.getStatus().getActive());
assertEquals(30.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(30.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
loanTransactionHelper.reverseLoanTransaction(repayment.getLoanId(), repayment.getResourceId(),
new PostLoansLoanIdTransactionsTransactionIdRequest().dateFormat(DATETIME_PATTERN).transactionDate("05 March 2023")
@@ -1419,7 +1434,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
);
assertTrue(loanDetails.getStatus().getActive());
assertEquals(31.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(31.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
});
}
@@ -1499,7 +1514,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
transaction(800.0, "Repayment", "03 March 2023", 0.0, 750.0, 0.0, 0.0, 0.0, 0.0, 50.0) //
);
assertTrue(loanDetails.getStatus().getOverpaid());
assertEquals(50.0, loanDetails.getTotalOverpaid());
assertEquals(50.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
// second disbursement
disbursementDate = LocalDate.of(2023, 3, 5);
@@ -1526,7 +1541,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
transaction(20.0, "Disbursement", "05 March 2023", 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) //
);
assertTrue(loanDetails.getStatus().getOverpaid());
assertEquals(30.0, loanDetails.getTotalOverpaid());
assertEquals(30.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
loanTransactionHelper.disburseLoan(loanResponse.getResourceId(),
new PostLoansLoanIdRequest().actualDisbursementDate("05 March 2023").dateFormat(DATETIME_PATTERN)
@@ -1553,8 +1568,8 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
);
assertTrue(loanDetails.getStatus().getClosedObligationsMet());
assertEquals(0.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(null, loanDetails.getTotalOverpaid());
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
assertEquals(null, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
loanTransactionHelper.disburseLoan(loanResponse.getResourceId(),
new PostLoansLoanIdRequest().actualDisbursementDate("05 March 2023").dateFormat(DATETIME_PATTERN)
@@ -1584,7 +1599,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
);
assertTrue(loanDetails.getStatus().getActive());
assertEquals(30.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(30.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
loanTransactionHelper.reverseLoanTransaction(loanResponse.getLoanId(), externalId,
new PostLoansLoanIdTransactionsTransactionIdRequest().dateFormat(DATETIME_PATTERN).transactionDate("05 March 2023")
@@ -1615,7 +1630,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
);
assertTrue(loanDetails.getStatus().getActive());
assertEquals(830.0, loanDetails.getSummary().getTotalOutstanding());
assertEquals(830.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
});
}
@@ -1666,7 +1681,7 @@ public class LoanRepaymentScheduleWithDownPaymentTest extends BaseLoanIntegratio
.anyMatch(period -> expectedDownPaymentAmount.equals(Utils.getDoubleValue(period.getTotalOutstandingForPeriod())) //
&& expectedDownPaymentDueDate.equals(period.getDueDate())));
assertEquals(expectedTotalOutstandingAmount, Utils.getDoubleValue(summary.getTotalOutstanding()));
assertEquals(expectedTotalRepaymentTransactionAmount, summary.getTotalRepaymentTransaction());
assertEquals(expectedTotalRepaymentTransactionAmount, Utils.getDoubleValue(summary.getTotalRepaymentTransaction()));
assertTrue(periods.stream()
.anyMatch(period -> expectedRepaymentAmount.equals(Utils.getDoubleValue(period.getTotalOutstandingForPeriod()))
&& expectedRepaymentDueDate.equals(period.getDueDate())));
@@ -563,31 +563,38 @@ public class LoanSpecificDueDateChargeAfterMaturityTest extends BaseLoanIntegrat
private static void validateLoanTransaction(GetLoansLoanIdResponse loanDetails, int index, double transactionAmount,
double principalPortion, double overPaidPortion, double loanBalance) {
assertEquals(transactionAmount, loanDetails.getTransactions().get(index).getAmount());
assertEquals(principalPortion, loanDetails.getTransactions().get(index).getPrincipalPortion());
assertEquals(overPaidPortion, loanDetails.getTransactions().get(index).getOverpaymentPortion());
assertEquals(loanBalance, loanDetails.getTransactions().get(index).getOutstandingLoanBalance());
assertEquals(transactionAmount, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getAmount()));
assertEquals(principalPortion, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getPrincipalPortion()));
assertEquals(overPaidPortion, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getOverpaymentPortion()));
assertEquals(loanBalance, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getOutstandingLoanBalance()));
}
private static void validateRepaymentPeriod(GetLoansLoanIdResponse loanDetails, int index, double principalDue, double principalPaid,
double principalOutstanding, double paidInAdvance, double paidLate) {
assertEquals(principalDue, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalDue());
assertEquals(principalPaid, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalPaid());
assertEquals(principalOutstanding, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalOutstanding());
assertEquals(paidInAdvance, loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidInAdvanceForPeriod());
assertEquals(paidLate, loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidLateForPeriod());
assertEquals(principalDue, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalDue()));
assertEquals(principalPaid, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalPaid()));
assertEquals(principalOutstanding,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalOutstanding()));
assertEquals(paidInAdvance,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidInAdvanceForPeriod()));
assertEquals(paidLate,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidLateForPeriod()));
}
private static void validateRepaymentPeriod(GetLoansLoanIdResponse loanDetails, int index, double principalDue, double principalPaid,
double principalOutstanding, double penaltyDue, double penaltyPaid, double penaltyOutstanding, double paidInAdvance,
double paidLate) {
assertEquals(principalDue, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalDue());
assertEquals(principalPaid, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalPaid());
assertEquals(principalOutstanding, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalOutstanding());
assertEquals(penaltyDue, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPenaltyChargesDue());
assertEquals(penaltyPaid, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPenaltyChargesPaid());
assertEquals(penaltyOutstanding, loanDetails.getRepaymentSchedule().getPeriods().get(index).getPenaltyChargesOutstanding());
assertEquals(paidInAdvance, loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidInAdvanceForPeriod());
assertEquals(paidLate, loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidLateForPeriod());
assertEquals(principalDue, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalDue()));
assertEquals(principalPaid, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalPaid()));
assertEquals(principalOutstanding,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPrincipalOutstanding()));
assertEquals(penaltyDue, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPenaltyChargesDue()));
assertEquals(penaltyPaid, Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPenaltyChargesPaid()));
assertEquals(penaltyOutstanding,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getPenaltyChargesOutstanding()));
assertEquals(paidInAdvance,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidInAdvanceForPeriod()));
assertEquals(paidLate,
Utils.getDoubleValue(loanDetails.getRepaymentSchedule().getPeriods().get(index).getTotalPaidLateForPeriod()));
}
}
@@ -19,9 +19,7 @@
package org.apache.fineract.integrationtests;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import org.apache.fineract.client.models.GetLoansLoanIdRepaymentPeriod;
import org.apache.fineract.client.models.GetLoansLoanIdResponse;
import org.apache.fineract.client.models.PostLoanProductsResponse;
import org.apache.fineract.client.models.PostLoansResponse;
@@ -250,38 +248,4 @@ public class LoanSummaryTest extends BaseLoanIntegrationTest {
});
}
@Test
public void testCapitalizedIncomeExistsInRepaymentScheduleAndModifiesPrincipal() {
runAt("01 March 2023", () -> {
final PostLoanProductsResponse loanProductsResponse = loanProductHelper
.createLoanProduct(create4IProgressiveWithCapitalizedIncome());
PostLoansResponse postLoansResponse = loanTransactionHelper.applyLoan(applyLP2ProgressiveLoanRequest(clientId,
loanProductsResponse.getResourceId(), "01 March 2023", 10000.00, 12.00, 4, null));
loanId = postLoansResponse.getLoanId();
loanTransactionHelper.approveLoan(loanId, approveLoanRequest(10000.00, "01 March 2023"));
disburseLoan(loanId, BigDecimal.valueOf(1000.00), "01 March 2023");
});
runAt("02 March 2023", () -> {
loanTransactionHelper.addCapitalizedIncome(loanId, "02 March 2023", 100.00);
});
BigDecimal thousand = BigDecimal.valueOf(1000.0);
BigDecimal hundred = BigDecimal.valueOf(100.0);
BigDecimal thousandOneHundred = BigDecimal.valueOf(1100.0);
GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails(loanId);
Assertions.assertEquals(thousand, loanDetails.getPrincipal().setScale(1, RoundingMode.HALF_UP));
Assertions.assertEquals(thousand, loanDetails.getSummary().getPrincipalDisbursed().setScale(1, RoundingMode.HALF_UP));
Assertions.assertEquals(hundred,
loanDetails.getSummary().getTotalPrincipalFromCapitalizedIncome().setScale(1, RoundingMode.HALF_UP));
Assertions.assertEquals(thousandOneHundred, loanDetails.getSummary().getTotalPrincipal().setScale(1, RoundingMode.HALF_UP));
Assertions.assertEquals(thousandOneHundred, loanDetails.getSummary().getPrincipalOutstanding().setScale(1, RoundingMode.HALF_UP));
List<GetLoansLoanIdRepaymentPeriod> periods = loanDetails.getRepaymentSchedule().getPeriods();
Assertions.assertEquals(6, periods.size());
Assertions.assertEquals(thousand, periods.get(0).getPrincipalLoanBalanceOutstanding().setScale(1, RoundingMode.HALF_UP));
Assertions.assertEquals(hundred, periods.get(1).getPrincipalLoanBalanceOutstanding().setScale(1, RoundingMode.HALF_UP));
}
}
@@ -255,7 +255,7 @@ public class LoanTransactionChargebackTest extends BaseLoanIntegrationTest {
if (period.getPeriod() != null && period.getPeriod() == 3) {
log.info("Period number {} for due date {} and totalDueForPeriod {}", period.getPeriod(), period.getDueDate(),
period.getTotalDueForPeriod());
assertEquals(Double.valueOf("666.67"), period.getTotalDueForPeriod());
assertEquals(Double.valueOf("666.67"), Utils.getDoubleValue(period.getTotalDueForPeriod()));
}
}
@@ -356,7 +356,7 @@ public class LoanTransactionChargebackTest extends BaseLoanIntegrationTest {
if (period.getPeriod() != null && period.getPeriod() == 2) {
log.info("Period number {} for due date {} and totalDueForPeriod {}", period.getPeriod(), period.getDueDate(),
period.getTotalDueForPeriod());
assertEquals(Double.valueOf("500.00"), period.getPrincipalDue());
assertEquals(Double.valueOf("500.00"), Utils.getDoubleValue(period.getPrincipalDue()));
}
}
@@ -385,7 +385,7 @@ public class LoanTransactionChargebackTest extends BaseLoanIntegrationTest {
if (period.getPeriod() != null && period.getPeriod() == 2) {
log.info("Period number {} for due date {} and totalDueForPeriod {}", period.getPeriod(), period.getDueDate(),
period.getTotalDueForPeriod());
assertEquals(Double.valueOf("800.00"), period.getPrincipalDue());
assertEquals(Double.valueOf("800.00"), Utils.getDoubleValue(period.getPrincipalDue()));
}
}
@@ -121,19 +121,19 @@ public class LoanTransactionFullAmountChargebackForOverpaidLoanTest {
// verify loan is overpaid
assertNotNull(loanDetails);
assertTrue(loanDetails.getStatus().getOverpaid());
assertEquals(loanDetails.getTotalOverpaid(), 200.0);
assertEquals(200.0, Utils.getDoubleValue(loanDetails.getTotalOverpaid()));
// verify loan outstanding
assertNotNull(loanDetails.getSummary());
assertEquals(loanDetails.getSummary().getTotalOutstanding(), 0.0);
assertEquals(0.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
// verify last transaction amount distribution
GetLoansLoanIdTransactionsTransactionIdResponse loanTransaction = loanTransactionHelper.getLoanTransaction(loanId,
repaymentTransaction_3.getResourceId().intValue());
assertNotNull(loanTransaction);
assertEquals(loanTransaction.getAmount(), 300.0);
assertEquals(loanTransaction.getPrincipalPortion(), 100.0);
assertEquals(300.0, loanTransaction.getAmount());
assertEquals(100.0, loanTransaction.getPrincipalPortion());
// chargeback for full amount on last repayment for which the amount is 300 and principal is 100 due to
// overpayment adjustment
@@ -150,15 +150,15 @@ public class LoanTransactionFullAmountChargebackForOverpaidLoanTest {
// verify loan outstanding
assertNotNull(loanDetailsAfterChargeback.getSummary());
assertEquals(loanDetailsAfterChargeback.getSummary().getTotalOutstanding(), 100.0);
assertEquals(100.0, Utils.getDoubleValue(loanDetailsAfterChargeback.getSummary().getTotalOutstanding()));
// verify chargeback transaction amount distribution
GetLoansLoanIdTransactionsTransactionIdResponse chargebackTransaction = loanTransactionHelper.getLoanTransaction(loanId,
chargebackTransactionResponse.getResourceId().intValue());
assertNotNull(chargebackTransaction);
assertEquals(chargebackTransaction.getAmount(), 300.0);
assertEquals(chargebackTransaction.getPrincipalPortion(), 100.0);
assertEquals(300.0, chargebackTransaction.getAmount());
assertEquals(100.0, chargebackTransaction.getPrincipalPortion());
}
@@ -1748,19 +1748,19 @@ public class LoanTransactionInterestPaymentWaiverTest extends BaseLoanIntegratio
private static void validateLoanTransaction(GetLoansLoanIdResponse loanDetails, int index, double transactionAmount,
double principalPortion, double overPaidPortion, double loanBalance) {
assertEquals(transactionAmount, loanDetails.getTransactions().get(index).getAmount());
assertEquals(principalPortion, loanDetails.getTransactions().get(index).getPrincipalPortion());
assertEquals(overPaidPortion, loanDetails.getTransactions().get(index).getOverpaymentPortion());
assertEquals(loanBalance, loanDetails.getTransactions().get(index).getOutstandingLoanBalance());
assertEquals(transactionAmount, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getAmount()));
assertEquals(principalPortion, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getPrincipalPortion()));
assertEquals(overPaidPortion, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getOverpaymentPortion()));
assertEquals(loanBalance, Utils.getDoubleValue(loanDetails.getTransactions().get(index).getOutstandingLoanBalance()));
}
private void validateLoanCharge(GetLoansLoanIdResponse loanDetails, int index, LocalDate dueDate, double charged, double paid,
double outstanding) {
GetLoansLoanIdLoanChargeData chargeData = loanDetails.getCharges().get(index);
assertEquals(dueDate, chargeData.getDueDate());
assertEquals(charged, chargeData.getAmount());
assertEquals(paid, chargeData.getAmountPaid());
assertEquals(outstanding, chargeData.getAmountOutstanding());
assertEquals(charged, Utils.getDoubleValue(chargeData.getAmount()));
assertEquals(paid, Utils.getDoubleValue(chargeData.getAmountPaid()));
assertEquals(outstanding, Utils.getDoubleValue(chargeData.getAmountOutstanding()));
}
}
@@ -144,7 +144,7 @@ public class LoanTransactionReverseReplayTest extends BaseLoanIntegrationTest {
GetLoansLoanIdResponse loansLoanIdResponse = loanTransactionHelper.getLoanDetails(loanExternalIdStr);
int lastTransactionIndex = loansLoanIdResponse.getTransactions().size() - 1;
assertTrue(loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getType().getAccrual());
assertEquals(10.0, loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount());
assertEquals(10.0, Utils.getDoubleValue(loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount()));
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
new PutGlobalConfigurationsRequest().enabled(false));
@@ -193,7 +193,7 @@ public class LoanTransactionReverseReplayTest extends BaseLoanIntegrationTest {
GetLoansLoanIdResponse loansLoanIdResponse = loanTransactionHelper.getLoanDetails(loanExternalIdStr);
int lastTransactionIndex = loansLoanIdResponse.getTransactions().size() - 1;
assertTrue(loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getType().getAccrual());
assertEquals(10.0, loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount());
assertEquals(10.0, Utils.getDoubleValue(loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount()));
int lastPeriodIndex = loansLoanIdResponse.getRepaymentSchedule().getPeriods().size() - 1;
assertEquals(LocalDate.of(2022, 10, 10),
loansLoanIdResponse.getRepaymentSchedule().getPeriods().get(lastPeriodIndex).getDueDate());
@@ -286,7 +286,7 @@ public class LoanTransactionReverseReplayTest extends BaseLoanIntegrationTest {
GetLoansLoanIdResponse loansLoanIdResponse = loanTransactionHelper.getLoanDetails(loanExternalIdStr);
int lastTransactionIndex = loansLoanIdResponse.getTransactions().size() - 1;
assertEquals(500.0, loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount());
assertEquals(500.0, Utils.getDoubleValue(loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount()));
ArrayList<HashMap> journalEntriesForCBR = journalEntryHelper
.getJournalEntriesByTransactionId("L" + cbrTransactionResponse.getResourceId().toString());
@@ -327,7 +327,7 @@ public class LoanTransactionReverseReplayTest extends BaseLoanIntegrationTest {
inlineLoanCOBHelper.executeInlineCOB(List.of(loanId.longValue()));
loansLoanIdResponse = loanTransactionHelper.getLoanDetails(loanExternalIdStr);
lastTransactionIndex = loansLoanIdResponse.getTransactions().size() - 1;
assertEquals(500.0, loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount());
assertEquals(500.0, Utils.getDoubleValue(loansLoanIdResponse.getTransactions().get(lastTransactionIndex).getAmount()));
// replayed CBR transaction
GetLoansLoanIdTransactions newCBRTransaction = loansLoanIdResponse.getTransactions().stream()
@@ -180,25 +180,25 @@ public class LoanTransactionSummaryTest {
assertNotNull(loanSummary);
// repayment
assertEquals(loanSummary.getTotalRepaymentTransaction(), 350.00);
assertEquals(350.00, Utils.getDoubleValue(loanSummary.getTotalRepaymentTransaction()));
// repayment reversed
assertEquals(loanSummary.getTotalRepaymentTransactionReversed(), 50.00);
assertEquals(50.00, Utils.getDoubleValue(loanSummary.getTotalRepaymentTransactionReversed()));
// merchant refund
assertEquals(loanSummary.getTotalMerchantRefund(), 100.00);
assertEquals(100.00, Utils.getDoubleValue(loanSummary.getTotalMerchantRefund()));
// merchant refund reversed
assertEquals(loanSummary.getTotalMerchantRefundReversed(), 50.00);
assertEquals(50.00, Utils.getDoubleValue(loanSummary.getTotalMerchantRefundReversed()));
// payout refund
assertEquals(loanSummary.getTotalPayoutRefund(), 100.00);
assertEquals(100.00, Utils.getDoubleValue(loanSummary.getTotalPayoutRefund()));
// payout refund reversed
assertEquals(loanSummary.getTotalPayoutRefundReversed(), 50.00);
assertEquals(50.00, Utils.getDoubleValue(loanSummary.getTotalPayoutRefundReversed()));
// goodwill credit
assertEquals(loanSummary.getTotalGoodwillCredit(), 100.00);
assertEquals(100.00, Utils.getDoubleValue(loanSummary.getTotalGoodwillCredit()));
// goodwill credit reversed
assertEquals(loanSummary.getTotalGoodwillCreditReversed(), 50.00);
assertEquals(50.00, Utils.getDoubleValue(loanSummary.getTotalGoodwillCreditReversed()));
// charge adjustment
assertEquals(loanSummary.getTotalChargeAdjustment(), 10.00);
assertEquals(10.00, Utils.getDoubleValue(loanSummary.getTotalChargeAdjustment()));
// charge
assertEquals(loanSummary.getTotalChargeback(), 50.00);
assertEquals(50.00, Utils.getDoubleValue(loanSummary.getTotalChargeback()));
}
@Test
@@ -236,10 +236,10 @@ public class LoanTransactionSummaryTest {
// Retrieve Loan with loanId
GetLoansLoanIdResponse loanDetails = loanTransactionHelper.getLoanDetails((long) loanId);
assertEquals(20.0, loanDetails.getDelinquent().getLastPaymentAmount());
assertEquals(20.0, Utils.getDoubleValue(loanDetails.getDelinquent().getLastPaymentAmount()));
assertEquals(LocalDate.of(2022, 9, 8), loanDetails.getDelinquent().getLastPaymentDate());
assertEquals(100.0, loanDetails.getDelinquent().getLastRepaymentAmount());
assertEquals(100.0, Utils.getDoubleValue(loanDetails.getDelinquent().getLastRepaymentAmount()));
assertEquals(LocalDate.of(2022, 9, 7), loanDetails.getDelinquent().getLastRepaymentDate());
}
@@ -111,8 +111,8 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
new PostLoansLoanIdRequest().actualDisbursementDate("01 January 2023").dateFormat(DATETIME_PATTERN)
.transactionAmount(BigDecimal.valueOf(1000.00)).locale("en"));
final float feePortion = 50.0f;
final float penaltyPortion = 100.0f;
final double feePortion = 50.00;
final double penaltyPortion = 100.00;
Integer fee = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(feePortion), false));
@@ -141,30 +141,30 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
GetLoansLoanIdRepaymentPeriod thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(400.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(400.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
businessDateHelper.updateBusinessDate(new BusinessDateRequest().type(BusinessDateType.BUSINESS_DATE.getName())
@@ -178,30 +178,30 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(0.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(240.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(240.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
loanTransactionHelper.makeRefundByCash("01 March 2023", 15.0f, loanId);
@@ -213,32 +213,32 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(0.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, secondRepaymentInstallment.getPrincipalDue());
assertEquals(5.0f, secondRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(5.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalDue()));
assertEquals(5.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(5.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
loanTransactionHelper.makeRefundByCash("01 March 2023", 265.0f, loanId);
@@ -250,32 +250,32 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(0.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(20.0f, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, secondRepaymentInstallment.getPrincipalDue());
assertEquals(250.0f, secondRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(270.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(20.00, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalDue()));
assertEquals(250.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(270.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -312,8 +312,8 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
new PostLoansLoanIdRequest().actualDisbursementDate("01 January 2023").dateFormat(DATETIME_PATTERN)
.transactionAmount(BigDecimal.valueOf(1000.00)).locale("en"));
final float feePortion = 50.0f;
final float penaltyPortion = 100.0f;
final double feePortion = 50.00;
final double penaltyPortion = 100.00;
Integer fee = ChargesHelper.createCharges(requestSpec, responseSpec, ChargesHelper
.getLoanSpecifiedDueDateJSON(ChargesHelper.CHARGE_CALCULATION_TYPE_FLAT, String.valueOf(feePortion), false));
@@ -342,30 +342,30 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
GetLoansLoanIdRepaymentPeriod thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(400.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(400.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
businessDateHelper.updateBusinessDate(new BusinessDateRequest().type(BusinessDateType.BUSINESS_DATE.getName())
@@ -379,30 +379,30 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(0.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(240.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(240.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
loanTransactionHelper.makeRefundByCash("28 January 2023", 15.0f, loanId);
@@ -414,32 +414,32 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(0.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, secondRepaymentInstallment.getPrincipalDue());
assertEquals(5.0f, secondRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(5.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalDue()));
assertEquals(5.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(5.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
// fully unpaying the second installment
@@ -452,32 +452,32 @@ public class RefundForActiveLoansWithAdvancedPaymentAllocationTest extends BaseL
thirdRepaymentInstallment = loanDetails.getRepaymentSchedule().getPeriods().get(4);
assertEquals(5, loanDetails.getRepaymentSchedule().getPeriods().size());
assertEquals(feePortion, firstRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, firstRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, firstRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, firstRepaymentInstallment.getPrincipalDue());
assertEquals(0.0f, firstRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, firstRepaymentInstallment.getTotalDueForPeriod());
assertEquals(0.0f, firstRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalDue()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(0.00, Utils.getDoubleValue(firstRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 1, 31), firstRepaymentInstallment.getDueDate());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesDue());
assertEquals(feePortion, secondRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesDue());
assertEquals(penaltyPortion, secondRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, secondRepaymentInstallment.getPrincipalDue());
assertEquals(250.0f, secondRepaymentInstallment.getPrincipalOutstanding());
assertEquals(400.0f, secondRepaymentInstallment.getTotalDueForPeriod());
assertEquals(400.0f, secondRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesDue()));
assertEquals(feePortion, Utils.getDoubleValue(secondRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(penaltyPortion, Utils.getDoubleValue(secondRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalDue()));
assertEquals(250.00, Utils.getDoubleValue(secondRepaymentInstallment.getPrincipalOutstanding()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(400.00, Utils.getDoubleValue(secondRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 3, 2), secondRepaymentInstallment.getDueDate());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getFeeChargesOutstanding());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesDue());
assertEquals(0.0f, thirdRepaymentInstallment.getPenaltyChargesOutstanding());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalDueForPeriod());
assertEquals(250.0f, thirdRepaymentInstallment.getTotalOutstandingForPeriod());
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getFeeChargesOutstanding()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesDue()));
assertEquals(0.00, Utils.getDoubleValue(thirdRepaymentInstallment.getPenaltyChargesOutstanding()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalDueForPeriod()));
assertEquals(250.00, Utils.getDoubleValue(thirdRepaymentInstallment.getTotalOutstandingForPeriod()));
assertEquals(LocalDate.of(2023, 4, 1), thirdRepaymentInstallment.getDueDate());
} finally {
globalConfigurationHelper.updateGlobalConfiguration(GlobalConfigurationConstants.ENABLE_BUSINESS_DATE,
@@ -968,7 +968,7 @@ public class SchedulerJobsTestResults extends IntegrationTest {
GetLoansLoanIdResponse getLoansLoanIdResponse = loanTransactionHelper.getLoan(requestSpec, responseSpec, loanID);
// First accrual transaction
assertTrue(getLoansLoanIdResponse.getTransactions().get(1).getType().getAccrual());
assertEquals(10.0f, getLoansLoanIdResponse.getTransactions().get(1).getFeeChargesPortion());
assertEquals(10.00, Utils.getDoubleValue(getLoansLoanIdResponse.getTransactions().get(1).getFeeChargesPortion()));
assertEquals(LocalDate.of(2020, 6, 2), getLoansLoanIdResponse.getTransactions().get(1).getDate());
Long transactionId = getLoansLoanIdResponse.getTransactions().get(1).getId();
@@ -191,7 +191,7 @@ public class UndoRepaymentWithDownPaymentIntegrationTest extends BaseLoanIntegra
assertNotNull(postLoansLoanIdTransactionsResponse1);
loanDetails = loanTransactionHelper.getLoanDetails(loanId.longValue());
assertEquals(500, loanDetails.getSummary().getTotalOutstanding());
assertEquals(500.0, Utils.getDoubleValue(loanDetails.getSummary().getTotalOutstanding()));
}
private Integer createLoanProductWithPeriodicAccrualAccountingAndAdvancedPaymentAllocationStrategy() {
@@ -2793,7 +2793,7 @@ public class LoanTransactionHelper {
GetLoansLoanIdSummary getLoansLoanIdSummary = getLoansLoanIdResponse.getSummary();
if (getLoansLoanIdSummary != null) {
log.info("Loan with Principal Adjustments {} expected {}", getLoansLoanIdSummary.getPrincipalAdjustments(), amountExpected);
assertEquals(amountExpected, getLoansLoanIdSummary.getPrincipalAdjustments());
assertEquals(amountExpected, Utils.getDoubleValue(getLoansLoanIdSummary.getPrincipalAdjustments()));
}
}
@@ -183,7 +183,7 @@ public class DelinquencyBucketsHelper {
log.info("Loan Delinquency Data in Days {} and Amount {}", getCollectionData.getPastDueDays(),
getCollectionData.getDelinquentAmount());
assertEquals(pastDueDays, getCollectionData.getPastDueDays(), "Past due days");
assertEquals(amountExpected, getCollectionData.getDelinquentAmount(), "Amount expected");
assertEquals(amountExpected, Utils.getDoubleValue(getCollectionData.getDelinquentAmount()), "Amount expected");
} else {
log.info("Loan Delinquency Data is null");
}