MIFOSX-53 Extended loans template api.
This commit is contained in:
@@ -130,7 +130,8 @@ public class LoansApiResource {
|
||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||
|
||||
responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions",
|
||||
"chargeTemplate"));
|
||||
|
||||
// tempate related
|
||||
Collection<LoanProductLookup> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
||||
@@ -146,6 +147,7 @@ public class LoansApiResource {
|
||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
||||
|
||||
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
|
||||
ChargeData chargeTemplate = this.chargeReadPlatformService.retrieveLoanChargeTemplate();
|
||||
|
||||
LoanBasicDetailsData loanBasicDetails = this.loanReadPlatformService.retrieveClientAndProductDetails(clientId, productId);
|
||||
if (loanBasicDetails.getCharges() != null) {
|
||||
@@ -166,7 +168,7 @@ public class LoansApiResource {
|
||||
final LoanAccountData newLoanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, null, null, null, null, charges,
|
||||
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
||||
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
|
||||
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, allowedLoanOfficers);
|
||||
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers);
|
||||
|
||||
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, newLoanAccount);
|
||||
}
|
||||
@@ -240,7 +242,8 @@ public class LoansApiResource {
|
||||
Collection<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>();
|
||||
Collection<FundData> fundOptions = new ArrayList<FundData>();
|
||||
Collection<ChargeData> chargeOptions = null;
|
||||
|
||||
ChargeData chargeTemplate = null;
|
||||
|
||||
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||
if(template) {
|
||||
responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
@@ -274,7 +277,7 @@ public class LoansApiResource {
|
||||
final LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, convenienceDataRequired, summary, repaymentSchedule, loanRepayments, permissions, charges,
|
||||
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
||||
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
|
||||
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, allowedLoanOfficers);
|
||||
amortizationTypeOptions, interestTypeOptions, interestCalculationPeriodTypeOptions, fundOptions, chargeOptions, chargeTemplate, allowedLoanOfficers);
|
||||
|
||||
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, loanAccount);
|
||||
}
|
||||
|
||||
@@ -68,6 +68,7 @@ public class LoanAccountData {
|
||||
private final Collection<EnumOptionData> interestCalculationPeriodTypeOptions;
|
||||
private final Collection<FundData> fundOptions;
|
||||
private final Collection<ChargeData> chargeOptions;
|
||||
private final ChargeData chargeTemplate;
|
||||
private final Collection<StaffData> loanOfficerOptions;
|
||||
|
||||
public LoanAccountData(
|
||||
@@ -88,6 +89,7 @@ public class LoanAccountData {
|
||||
final Collection<EnumOptionData> interestCalculationPeriodTypeOptions,
|
||||
final Collection<FundData> fundOptions,
|
||||
final Collection<ChargeData> chargeOptions,
|
||||
final ChargeData chargeTemplate,
|
||||
final Collection<StaffData> loanOfficerOptions) {
|
||||
this.summary = summary;
|
||||
this.repaymentSchedule = repaymentSchedule;
|
||||
@@ -104,6 +106,7 @@ public class LoanAccountData {
|
||||
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
||||
this.fundOptions = fundOptions;
|
||||
this.chargeOptions = chargeOptions;
|
||||
this.chargeTemplate = chargeTemplate;
|
||||
this.loanOfficerOptions = loanOfficerOptions;
|
||||
|
||||
if (convenienceDataRequired) {
|
||||
|
||||
+1
-1
@@ -151,7 +151,7 @@ public class GoogleGsonApiJsonSerializerService implements ApiJsonSerializerServ
|
||||
"loanRepayments", "permissions", "convenienceData", "charges",
|
||||
"productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions",
|
||||
"loanOfficerId", "loanOfficerName", "loanOfficerOptions"));
|
||||
"loanOfficerId", "loanOfficerName", "loanOfficerOptions", "chargeTemplate"));
|
||||
|
||||
private static final Set<String> LOAN_TRANSACTION_DATA_PARAMETERS = new HashSet<String>(
|
||||
Arrays.asList("id", "transactionType", "date", "principal",
|
||||
|
||||
+2
@@ -17,4 +17,6 @@ public interface ChargeReadPlatformService {
|
||||
Collection<ChargeData> retrieveLoanProductCharges(Long loanProductId);
|
||||
|
||||
Collection<ChargeData> retrieveLoanCharges(Long loanId);
|
||||
|
||||
ChargeData retrieveLoanChargeTemplate();
|
||||
}
|
||||
|
||||
+17
@@ -127,6 +127,23 @@ public class ChargeReadPlatformServiceImpl implements ChargeReadPlatformService
|
||||
return this.jdbcTemplate.query(sql, rm, new Object[] {ChargeAppliesTo.LOAN.getValue()});
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChargeData retrieveLoanChargeTemplate() {
|
||||
this.context.authenticatedUser();
|
||||
|
||||
List<EnumOptionData> allowedChargeCalculationTypeOptions = Arrays.asList(
|
||||
chargeCalculationType(ChargeCalculationType.FLAT),
|
||||
chargeCalculationType(ChargeCalculationType.PERCENT_OF_AMOUNT),
|
||||
chargeCalculationType(ChargeCalculationType.PERCENT_OF_AMOUNT_AND_INTEREST),
|
||||
chargeCalculationType(ChargeCalculationType.PERCENT_OF_INTEREST)
|
||||
);
|
||||
|
||||
List<EnumOptionData> allowedChargeTimeOptions = Arrays.asList(chargeTimeType(ChargeTimeType.DISBURSEMENT));
|
||||
|
||||
return ChargeData.template(null, allowedChargeCalculationTypeOptions,
|
||||
null, allowedChargeTimeOptions);
|
||||
}
|
||||
|
||||
private static final class ChargeMapper implements RowMapper<ChargeData> {
|
||||
|
||||
public String chargeSchema(){
|
||||
|
||||
Reference in New Issue
Block a user