FINERACT-2235: add summary data to loans list api
This commit is contained in:
committed by
Arnold Gálovics
parent
6455311f6c
commit
12617ea1df
+18
-1
@@ -478,6 +478,7 @@ public class LoansApiResource {
|
||||
@QueryParam("orderBy") @Parameter(description = "orderBy") final String orderBy,
|
||||
@QueryParam("sortOrder") @Parameter(description = "sortOrder") final String sortOrder,
|
||||
@QueryParam("accountNo") @Parameter(description = "accountNo") final String accountNo,
|
||||
@QueryParam("associations") @Parameter(description = "associations") final String associations,
|
||||
@QueryParam("status") @Parameter(description = "status") final String status) {
|
||||
|
||||
this.context.authenticatedUser().validateHasReadPermission(RESOURCE_NAME_FOR_PERMISSIONS);
|
||||
@@ -490,7 +491,23 @@ public class LoansApiResource {
|
||||
.externalId(externalId).offset(offset).limit(limit).orderBy(orderBy).status(status).build();
|
||||
|
||||
final Page<LoanAccountData> loanBasicDetails = this.loanReadPlatformService.retrieveAll(searchParameters);
|
||||
|
||||
final Set<String> associationParameters = ApiParameterHelper.extractAssociationsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
if (associationParameters.contains(DataTableApiConstant.summaryAssociateParamName)) {
|
||||
loanBasicDetails.getPageItems().forEach(i -> {
|
||||
Collection<DisbursementData> disbursementData = this.loanReadPlatformService.retrieveLoanDisbursementDetails(i.getId());
|
||||
final RepaymentScheduleRelatedLoanData repaymentScheduleRelatedData = new RepaymentScheduleRelatedLoanData(
|
||||
i.getTimeline().getExpectedDisbursementDate(), i.getTimeline().getActualDisbursementDate(), i.getCurrency(),
|
||||
i.getPrincipal(), i.getInArrearsTolerance(), i.getFeeChargesAtDisbursementCharged());
|
||||
final LoanScheduleData repaymentSchedule = this.loanReadPlatformService.retrieveRepaymentSchedule(i.getId(),
|
||||
repaymentScheduleRelatedData, disbursementData, i.isInterestRecalculationEnabled(),
|
||||
LoanScheduleType.fromEnumOptionData(i.getLoanScheduleType()));
|
||||
LoanSummaryDataProvider loanSummaryDataProvider = loanSummaryProviderDelegate
|
||||
.resolveLoanSummaryDataProvider(i.getTransactionProcessingStrategyCode());
|
||||
i.setSummary(loanSummaryDataProvider.withTransactionAmountsSummary(i.getId(), i.getSummary(), repaymentSchedule,
|
||||
loanSummaryBalancesRepository.retrieveLoanSummaryBalancesByTransactionType(i.getId(),
|
||||
LoanApiConstants.LOAN_SUMMARY_TRANSACTION_TYPES)));
|
||||
});
|
||||
}
|
||||
final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters());
|
||||
return this.toApiJsonSerializer.serialize(settings, loanBasicDetails, LOAN_DATA_PARAMETERS);
|
||||
}
|
||||
|
||||
+6
-6
@@ -35,7 +35,7 @@ public abstract class CommonLoanSummaryDataProvider implements LoanSummaryDataPr
|
||||
|
||||
@Override
|
||||
public LoanSummaryData withTransactionAmountsSummary(Loan loan, LoanSummaryData defaultSummaryData, LoanScheduleData repaymentSchedule,
|
||||
Collection<LoanTransactionBalance> loanTransactionBalances) {
|
||||
Collection<? extends LoanTransactionBalance> loanTransactionBalances) {
|
||||
final LocalDate businessDate = DateUtils.getBusinessLocalDate();
|
||||
|
||||
BigDecimal totalMerchantRefund = BigDecimal.ZERO;
|
||||
@@ -137,16 +137,16 @@ public abstract class CommonLoanSummaryDataProvider implements LoanSummaryDataPr
|
||||
.totalUnpaidPayableNotDueInterest(totalUnpaidPayableNotDueInterest).totalInterestRefund(totalInterestRefund).build();
|
||||
}
|
||||
|
||||
private static BigDecimal fetchLoanTransactionBalanceByType(final Collection<LoanTransactionBalance> loanTransactionBalances,
|
||||
private static BigDecimal fetchLoanTransactionBalanceByType(final Collection<? extends LoanTransactionBalance> loanTransactionBalances,
|
||||
final LoanTransactionType transactionType) {
|
||||
final Optional<LoanTransactionBalance> optLoanTransactionBalance = loanTransactionBalances.stream()
|
||||
final Optional<? extends LoanTransactionBalance> optLoanTransactionBalance = loanTransactionBalances.stream()
|
||||
.filter(balance -> balance.getTransactionType().equals(transactionType) && !balance.isReversed()).findFirst();
|
||||
return optLoanTransactionBalance.isPresent() ? optLoanTransactionBalance.get().getAmount() : BigDecimal.ZERO;
|
||||
}
|
||||
|
||||
private static BigDecimal fetchLoanTransactionBalanceReversedByType(final Collection<LoanTransactionBalance> loanTransactionBalances,
|
||||
final LoanTransactionType transactionType) {
|
||||
final Optional<LoanTransactionBalance> optLoanTransactionBalance = loanTransactionBalances.stream()
|
||||
private static BigDecimal fetchLoanTransactionBalanceReversedByType(
|
||||
final Collection<? extends LoanTransactionBalance> loanTransactionBalances, final LoanTransactionType transactionType) {
|
||||
final Optional<? extends LoanTransactionBalance> optLoanTransactionBalance = loanTransactionBalances.stream()
|
||||
.filter(balance -> balance.getTransactionType().equals(transactionType) && balance.isReversed()
|
||||
&& balance.isManuallyAdjustedOrReversed())
|
||||
.findFirst();
|
||||
|
||||
+1
-1
@@ -68,7 +68,7 @@ public class CumulativeLoanSummaryDataProvider extends CommonLoanSummaryDataProv
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public LoanSummaryData withTransactionAmountsSummary(Long loanId, LoanSummaryData defaultSummaryData,
|
||||
LoanScheduleData repaymentSchedule, Collection<LoanTransactionBalance> loanTransactionBalances) {
|
||||
LoanScheduleData repaymentSchedule, Collection<? extends LoanTransactionBalance> loanTransactionBalances) {
|
||||
Loan loan = null;
|
||||
return super.withTransactionAmountsSummary(loan, defaultSummaryData, repaymentSchedule, loanTransactionBalances);
|
||||
}
|
||||
|
||||
+2
-2
@@ -38,10 +38,10 @@ public interface LoanSummaryDataProvider {
|
||||
LoanSummaryData withOnlyCurrencyData(CurrencyData currencyData);
|
||||
|
||||
LoanSummaryData withTransactionAmountsSummary(Long loanId, LoanSummaryData defaultSummaryData, LoanScheduleData repaymentSchedule,
|
||||
Collection<LoanTransactionBalance> loanTransactionBalances);
|
||||
Collection<? extends LoanTransactionBalance> loanTransactionBalances);
|
||||
|
||||
LoanSummaryData withTransactionAmountsSummary(Loan loan, LoanSummaryData defaultSummaryData, LoanScheduleData repaymentSchedule,
|
||||
Collection<LoanTransactionBalance> loanTransactionBalances);
|
||||
Collection<? extends LoanTransactionBalance> loanTransactionBalances);
|
||||
|
||||
boolean accept(String loanProcessingStrategyCode);
|
||||
}
|
||||
|
||||
+2
-2
@@ -62,14 +62,14 @@ public class ProgressiveLoanSummaryDataProvider extends CommonLoanSummaryDataPro
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public LoanSummaryData withTransactionAmountsSummary(Long loanId, LoanSummaryData defaultSummaryData,
|
||||
LoanScheduleData repaymentSchedule, Collection<LoanTransactionBalance> loanTransactionBalances) {
|
||||
LoanScheduleData repaymentSchedule, Collection<? extends LoanTransactionBalance> loanTransactionBalances) {
|
||||
final Loan loan = loanRepository.findOneWithNotFoundDetection(loanId, true);
|
||||
return super.withTransactionAmountsSummary(loan, defaultSummaryData, repaymentSchedule, loanTransactionBalances);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoanSummaryData withTransactionAmountsSummary(Loan loan, LoanSummaryData defaultSummaryData, LoanScheduleData repaymentSchedule,
|
||||
Collection<LoanTransactionBalance> loanTransactionBalances) {
|
||||
Collection<? extends LoanTransactionBalance> loanTransactionBalances) {
|
||||
return super.withTransactionAmountsSummary(loan, defaultSummaryData, repaymentSchedule, loanTransactionBalances);
|
||||
}
|
||||
|
||||
|
||||
@@ -11147,6 +11147,19 @@ GET https://DomainName/api/v1/loans/{loanId}
|
||||
</dd>
|
||||
<dd>Use account no. of loans to restrict results.</dd>
|
||||
|
||||
<dt>associations</dt>
|
||||
<dd>String <span>optional,</span>
|
||||
<span>Comma separated list of recurring loan 'associations' (itemized below).</span>
|
||||
</dd>
|
||||
<dd>
|
||||
<br>
|
||||
Associations are just extra pieces of data that you might or might not want to retrieve.<br>
|
||||
<br>
|
||||
</dd>
|
||||
<dd>
|
||||
<b>'summary':</b> Gets loan account summarry related information.
|
||||
</dd>
|
||||
|
||||
<dt>externalId</dt>
|
||||
<dd>
|
||||
String <span>optional</span>
|
||||
|
||||
Reference in New Issue
Block a user