FINERACT-2081: Loan account data additional fields for summary and delinquency
This commit is contained in:
committed by
Adam Saghy
parent
4ac102f4e0
commit
79f32d32a3
+2
-1
@@ -73,7 +73,8 @@ public class LoanBusinessEventSerializer implements BusinessEventSerializer {
|
||||
|
||||
if (data.getSummary() != null) {
|
||||
final Collection<LoanTransactionData> currentLoanTransactions = service.retrieveLoanTransactions(loanId);
|
||||
data.setSummary(LoanSummaryData.withTransactionAmountsSummary(data.getSummary(), currentLoanTransactions));
|
||||
data.setSummary(
|
||||
LoanSummaryData.withTransactionAmountsSummary(data.getSummary(), currentLoanTransactions, data.getRepaymentSchedule()));
|
||||
} else {
|
||||
data.setSummary(LoanSummaryData.withOnlyCurrencyData(data.getCurrency()));
|
||||
}
|
||||
|
||||
+2
-2
@@ -1114,8 +1114,8 @@ public class LoansApiResource {
|
||||
|
||||
// updating summary with transaction amounts summary
|
||||
if (loanBasicDetails.getSummary() != null) {
|
||||
loanBasicDetails
|
||||
.setSummary(LoanSummaryData.withTransactionAmountsSummary(loanBasicDetails.getSummary(), currentLoanRepayments));
|
||||
loanBasicDetails.setSummary(
|
||||
LoanSummaryData.withTransactionAmountsSummary(loanBasicDetails.getSummary(), currentLoanRepayments, repaymentSchedule));
|
||||
}
|
||||
|
||||
final LoanAccountData loanAccount = LoanAccountData.associationsAndTemplate(loanBasicDetails, repaymentSchedule, loanRepayments,
|
||||
|
||||
+14
@@ -636,7 +636,13 @@ final class LoansApiResourceSwagger {
|
||||
@Schema(example = "0.000000")
|
||||
public Double totalRepaymentTransaction;
|
||||
@Schema(example = "0.000000")
|
||||
public Double totalInterestPaymentWaiver;
|
||||
@Schema(example = "0.000000")
|
||||
public Double totalRepaymentTransactionReversed;
|
||||
@Schema(example = "0.000000")
|
||||
public Double totalUnpaidAccruedDueInterest;
|
||||
@Schema(example = "0.000000")
|
||||
public Double totalUnpaidAccruedNotDueInterest;
|
||||
public Set<GetLoansLoanIdOverdueCharges> overdueCharges;
|
||||
@Schema(example = "1")
|
||||
public Long chargeOffReasonId;
|
||||
@@ -1004,6 +1010,14 @@ final class LoansApiResourceSwagger {
|
||||
public LocalDate delinquentDate;
|
||||
@Schema(example = "100.000000")
|
||||
public Double delinquentAmount;
|
||||
@Schema(example = "80.000000")
|
||||
public Double delinquentPrincipal;
|
||||
@Schema(example = "10.000000")
|
||||
public Double delinquentInterest;
|
||||
@Schema(example = "6.000000")
|
||||
public Double delinquentFee;
|
||||
@Schema(example = "4.000000")
|
||||
public Double delinquentPenalty;
|
||||
@Schema(example = "[2022, 07, 01]")
|
||||
public LocalDate lastPaymentDate;
|
||||
@Schema(example = "100.000000")
|
||||
|
||||
+6
-4
@@ -1160,8 +1160,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
|
||||
+ " ls.fee_charges_amount as feeChargesDue, ls.fee_charges_completed_derived as feeChargesPaid, ls.fee_charges_waived_derived as feeChargesWaived, ls.fee_charges_writtenoff_derived as feeChargesWrittenOff, "
|
||||
+ " ls.penalty_charges_amount as penaltyChargesDue, ls.penalty_charges_completed_derived as penaltyChargesPaid, ls.penalty_charges_waived_derived as penaltyChargesWaived, "
|
||||
+ " ls.penalty_charges_writtenoff_derived as penaltyChargesWrittenOff, ls.total_paid_in_advance_derived as totalPaidInAdvanceForPeriod, "
|
||||
+ " ls.total_paid_late_derived as totalPaidLateForPeriod, ls.credits_amount as principalCredits, ls.credited_fee as feeCredits, ls.credited_penalty as penaltyCredits, ls.is_down_payment isDownPayment "
|
||||
+ " from m_loan_repayment_schedule ls ";
|
||||
+ " ls.total_paid_late_derived as totalPaidLateForPeriod, ls.credits_amount as principalCredits, ls.credited_fee as feeCredits, ls.credited_penalty as penaltyCredits, ls.is_down_payment isDownPayment, "
|
||||
+ " ls.accrual_interest_derived as accrualInterest " + " from m_loan_repayment_schedule ls ";
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1260,6 +1260,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
|
||||
final BigDecimal interestWrittenOff = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "interestWrittenOff");
|
||||
final BigDecimal totalInstallmentAmount = totalPrincipalPaid.zero().plus(principalDue).plus(interestExpectedDue)
|
||||
.getAmount();
|
||||
final BigDecimal accrualInterest = JdbcSupport.getBigDecimalDefaultToZeroIfNull(rs, "accrualInterest");
|
||||
|
||||
final BigDecimal interestActualDue = interestExpectedDue.subtract(interestWaived).subtract(interestWrittenOff);
|
||||
final BigDecimal interestOutstanding = interestActualDue.subtract(interestPaid);
|
||||
@@ -1331,7 +1332,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
|
||||
penaltyChargesPaid, penaltyChargesWaived, penaltyChargesWrittenOff, penaltyChargesOutstanding, totalDueForPeriod,
|
||||
totalPaidForPeriod, totalPaidInAdvanceForPeriod, totalPaidLateForPeriod, totalWaivedForPeriod,
|
||||
totalWrittenOffForPeriod, totalOutstandingForPeriod, totalActualCostOfLoanForPeriod, totalInstallmentAmount,
|
||||
credits, isDownPayment);
|
||||
credits, isDownPayment, accrualInterest);
|
||||
|
||||
periods.add(periodData);
|
||||
}
|
||||
@@ -2313,6 +2314,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
|
||||
final BigDecimal totalPaid = null;
|
||||
final BigDecimal totalInstallmentAmount = null;
|
||||
final BigDecimal totalCredits = null;
|
||||
final BigDecimal totalAccruedInterest = null;
|
||||
|
||||
return LoanSchedulePeriodData.periodWithPayments(loanId, period, fromDate, dueDate, obligationsMetOnDate, complete,
|
||||
principalOriginalDue, principalPaid, principalWrittenOff, principalOutstanding, outstandingPrincipalBalanceOfLoan,
|
||||
@@ -2320,7 +2322,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
|
||||
feeChargesPaid, feeChargesWaived, feeChargesWrittenOff, feeChargesOutstanding, penaltyChargesDue, penaltyChargesPaid,
|
||||
penaltyChargesWaived, penaltyChargesWrittenOff, penaltyChargesOutstanding, totalDueForPeriod, totalPaid,
|
||||
totalPaidInAdvanceForPeriod, totalPaidLateForPeriod, totalWaived, totalWrittenOff, totalOutstanding,
|
||||
totalActualCostOfLoanForPeriod, totalInstallmentAmount, totalCredits, false);
|
||||
totalActualCostOfLoanForPeriod, totalInstallmentAmount, totalCredits, false, totalAccruedInterest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+22
-20
@@ -167,8 +167,9 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
|
||||
LocalDate overDueSinceDate = DateUtils.getBusinessLocalDate().minusDays(2);
|
||||
LoanScheduleDelinquencyData loanScheduleDelinquencyData = new LoanScheduleDelinquencyData(1L, overDueSinceDate, 1L,
|
||||
loanForProcessing);
|
||||
CollectionData collectionData = new CollectionData(BigDecimal.ZERO, 2L, null, 2L, overDueSinceDate, BigDecimal.ZERO, null, null,
|
||||
null, null, null, null);
|
||||
final BigDecimal zero = BigDecimal.ZERO;
|
||||
CollectionData collectionData = new CollectionData(zero, 2L, null, 2L, overDueSinceDate, zero, null, null, null, null, null, null,
|
||||
zero, zero, zero, zero);
|
||||
|
||||
Map<Long, CollectionData> installmentsCollection = new HashMap<>();
|
||||
|
||||
@@ -221,11 +222,11 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
|
||||
LocalDate overDueSinceDate = DateUtils.getBusinessLocalDate().minusDays(2);
|
||||
LoanScheduleDelinquencyData loanScheduleDelinquencyData = new LoanScheduleDelinquencyData(1L, overDueSinceDate, 1L,
|
||||
loanForProcessing);
|
||||
CollectionData collectionData = new CollectionData(BigDecimal.ZERO, 2L, null, 2L, overDueSinceDate, BigDecimal.ZERO, null, null,
|
||||
null, null, null, null);
|
||||
CollectionData collectionData = new CollectionData(zeroAmount, 2L, null, 2L, overDueSinceDate, zeroAmount, null, null, null, null,
|
||||
null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
CollectionData installmentCollectionData = new CollectionData(BigDecimal.ZERO, 2L, null, 2L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null);
|
||||
CollectionData installmentCollectionData = new CollectionData(zeroAmount, 2L, null, 2L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
Map<Long, CollectionData> installmentsCollection = new HashMap<>();
|
||||
installmentsCollection.put(1L, installmentCollectionData);
|
||||
@@ -349,11 +350,12 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
|
||||
LocalDate overDueSinceDate = DateUtils.getBusinessLocalDate().minusDays(2);
|
||||
LoanScheduleDelinquencyData loanScheduleDelinquencyData = new LoanScheduleDelinquencyData(1L, overDueSinceDate, 1L,
|
||||
loanForProcessing);
|
||||
CollectionData collectionData = new CollectionData(BigDecimal.ZERO, 2L, null, 2L, overDueSinceDate, BigDecimal.ZERO, null, null,
|
||||
null, null, null, null);
|
||||
|
||||
CollectionData installmentCollectionData = new CollectionData(BigDecimal.ZERO, 2L, null, 2L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null);
|
||||
CollectionData collectionData = new CollectionData(zeroAmount, 2L, null, 2L, overDueSinceDate, zeroAmount, null, null, null, null,
|
||||
null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
CollectionData installmentCollectionData = new CollectionData(zeroAmount, 2L, null, 2L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
Map<Long, CollectionData> installmentsCollection = new HashMap<>();
|
||||
installmentsCollection.put(1L, installmentCollectionData);
|
||||
@@ -426,11 +428,11 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
|
||||
LocalDate overDueSinceDate = DateUtils.getBusinessLocalDate().minusDays(29);
|
||||
LoanScheduleDelinquencyData loanScheduleDelinquencyData = new LoanScheduleDelinquencyData(1L, overDueSinceDate, 1L,
|
||||
loanForProcessing);
|
||||
CollectionData collectionData = new CollectionData(BigDecimal.ZERO, 29L, null, 29L, overDueSinceDate, BigDecimal.ZERO, null, null,
|
||||
null, null, null, null);
|
||||
CollectionData collectionData = new CollectionData(BigDecimal.ZERO, 29L, null, 29L, overDueSinceDate, zeroAmount, null, null, null,
|
||||
null, null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
CollectionData installmentCollectionData = new CollectionData(BigDecimal.ZERO, 29L, null, 29L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null);
|
||||
CollectionData installmentCollectionData = new CollectionData(zeroAmount, 29L, null, 29L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
Map<Long, CollectionData> installmentsCollection = new HashMap<>();
|
||||
installmentsCollection.put(1L, installmentCollectionData);
|
||||
@@ -514,14 +516,14 @@ public class DelinquencyWritePlatformServiceRangeChangeEventTest {
|
||||
LocalDate overDueSinceDate = DateUtils.getBusinessLocalDate().minusDays(29);
|
||||
LoanScheduleDelinquencyData loanScheduleDelinquencyData = new LoanScheduleDelinquencyData(1L, overDueSinceDate, 1L,
|
||||
loanForProcessing);
|
||||
CollectionData collectionData = new CollectionData(BigDecimal.ZERO, 29L, null, 29L, overDueSinceDate, BigDecimal.ZERO, null, null,
|
||||
null, null, null, null);
|
||||
CollectionData collectionData = new CollectionData(zeroAmount, 29L, null, 29L, overDueSinceDate, zeroAmount, null, null, null, null,
|
||||
null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
CollectionData installmentCollectionData_1 = new CollectionData(BigDecimal.ZERO, 29L, null, 29L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null);
|
||||
CollectionData installmentCollectionData_1 = new CollectionData(zeroAmount, 29L, null, 29L, overDueSinceDate,
|
||||
installmentPrincipalAmount, null, null, null, null, null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
CollectionData installmentCollectionData_2 = new CollectionData(BigDecimal.ZERO, 0L, null, 0L, null, installmentPrincipalAmount,
|
||||
null, null, null, null, null, null);
|
||||
CollectionData installmentCollectionData_2 = new CollectionData(zeroAmount, 0L, null, 0L, null, installmentPrincipalAmount, null,
|
||||
null, null, null, null, null, zeroAmount, zeroAmount, zeroAmount, zeroAmount);
|
||||
|
||||
Map<Long, CollectionData> installmentsCollection = new HashMap<>();
|
||||
installmentsCollection.put(1L, installmentCollectionData_1);
|
||||
|
||||
Reference in New Issue
Block a user