FINERACT-2412: full term tranche - get loan API changes & add to LoanAccountDataV1 (events)

This commit is contained in:
Soma Sörös
2026-02-03 11:28:52 +01:00
committed by Adam Saghy
parent ff9d15dad8
commit 7bb4840d7a
10 changed files with 35 additions and 0 deletions
@@ -102,6 +102,10 @@ public class LoanBusinessEventSerializer extends AbstractBusinessEventWithCustom
data.setLoanTermVariations(activeLoanTermVariations.stream().map(LoanTermVariations::toData).toList());
}
Integer actualNoTerms = Math.toIntExact(
event.get().getRepaymentScheduleInstallments().stream().filter(i -> !i.isAdditional() && !i.isDownPayment()).count());
data.setActualNoTerm(actualNoTerms);
final LoanAccountDataV1 result = mapper.map(data);
result.getDelinquent().setInstallmentDelinquencyBuckets(installmentsDelinquencyData);
@@ -1024,6 +1024,8 @@ public class LoansApiResource {
loanBasicDetails = loanBasicDetails.setMeeting(calendarData);
}
}
loanBasicDetails.setActualNoTerm(
loanReadPlatformService.countInstallmentsByLoanIdWhereIsAdditionalFalseAndIsDownPaymentFalse(resolvedLoanId));
Collection<InterestRatePeriodData> interestRatesPeriods = this.loanReadPlatformService
.retrieveLoanInterestRatePeriodData(loanBasicDetails);
Collection<LoanTransactionData> loanRepayments = null;
@@ -1286,6 +1286,8 @@ final class LoansApiResourceSwagger {
public StringEnumOptionData buyDownFeeStrategy;
@Schema(example = "FEE")
public StringEnumOptionData buyDownFeeIncomeType;
@Schema(example = "6")
public Integer actualNoTerm;
}
@Schema(description = "GetLoansResponse")
@@ -1796,6 +1796,11 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
.reAmortizationInterestHandlingOptions(LoanReAmortizationInterestHandlingType.getValuesAsEnumOptionDataList()).build();
}
@Override
public Integer countInstallmentsByLoanIdWhereIsAdditionalFalseAndIsDownPaymentFalse(Long loanId) {
return loanRepaymentScheduleService.countInstallmentsByLoanIdWhereIsAdditionalFalseAndIsDownPaymentFalse(loanId);
}
@Override
public LoanTransactionData retrieveLoanChargeOffTemplate(final Long loanId) {
@@ -60,6 +60,11 @@ public class LoanRepaymentScheduleService {
isInterestRecalculationEnabled, loanScheduleType);
}
public Integer countInstallmentsByLoanIdWhereIsAdditionalFalseAndIsDownPaymentFalse(Long loanId) {
return Math.toIntExact(loanRepaymentScheduleInstallmentRepository
.countLoanRepaymentScheduleInstallmentsByLoan_IdAndAdditionalAndIsDownPayment(loanId, false, false));
}
public LoanScheduleData extractLoanScheduleData(final List<LoanRepaymentScheduleInstallment> installments,
final RepaymentScheduleRelatedLoanData repaymentScheduleRelatedLoanData, Collection<DisbursementData> disbursementData,
Collection<LoanTransactionRepaymentPeriodData> capitalizedIncomeData, boolean isInterestRecalculationEnabled,