mifosx-92: tidy up loan product in prep for tranche loans.
This commit is contained in:
+70
-53
@@ -3,6 +3,7 @@ package org.mifosng.platform.api;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.ws.rs.Consumes;
|
import javax.ws.rs.Consumes;
|
||||||
@@ -14,17 +15,23 @@ import javax.ws.rs.PathParam;
|
|||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
import javax.ws.rs.core.Context;
|
import javax.ws.rs.core.Context;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
|
||||||
import javax.ws.rs.core.UriInfo;
|
import javax.ws.rs.core.UriInfo;
|
||||||
|
|
||||||
import org.mifosng.platform.api.commands.LoanProductCommand;
|
import org.mifosng.platform.api.commands.LoanProductCommand;
|
||||||
import org.mifosng.platform.api.data.ChargeData;
|
import org.mifosng.platform.api.data.ChargeData;
|
||||||
|
import org.mifosng.platform.api.data.CurrencyData;
|
||||||
import org.mifosng.platform.api.data.EntityIdentifier;
|
import org.mifosng.platform.api.data.EntityIdentifier;
|
||||||
|
import org.mifosng.platform.api.data.EnumOptionData;
|
||||||
|
import org.mifosng.platform.api.data.FundData;
|
||||||
import org.mifosng.platform.api.data.LoanProductData;
|
import org.mifosng.platform.api.data.LoanProductData;
|
||||||
|
import org.mifosng.platform.api.data.TransactionProcessingStrategyData;
|
||||||
import org.mifosng.platform.api.infrastructure.ApiDataConversionService;
|
import org.mifosng.platform.api.infrastructure.ApiDataConversionService;
|
||||||
import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService;
|
import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService;
|
||||||
import org.mifosng.platform.api.infrastructure.ApiParameterHelper;
|
import org.mifosng.platform.api.infrastructure.ApiParameterHelper;
|
||||||
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
||||||
|
import org.mifosng.platform.currency.service.CurrencyReadPlatformService;
|
||||||
|
import org.mifosng.platform.fund.service.FundReadPlatformService;
|
||||||
|
import org.mifosng.platform.loanproduct.service.LoanDropdownReadPlatformService;
|
||||||
import org.mifosng.platform.loanproduct.service.LoanProductReadPlatformService;
|
import org.mifosng.platform.loanproduct.service.LoanProductReadPlatformService;
|
||||||
import org.mifosng.platform.loanproduct.service.LoanProductWritePlatformService;
|
import org.mifosng.platform.loanproduct.service.LoanProductWritePlatformService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -51,16 +58,38 @@ public class LoanProductsApiResource {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ApiJsonSerializerService apiJsonSerializerService;
|
private ApiJsonSerializerService apiJsonSerializerService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private CurrencyReadPlatformService currencyReadPlatformService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private FundReadPlatformService fundReadPlatformService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private LoanDropdownReadPlatformService dropdownReadPlatformService;
|
||||||
|
|
||||||
|
private final Set<String> typicalResponseParameters = new HashSet<String>(
|
||||||
|
Arrays.asList("id", "name", "description",
|
||||||
|
"fundId", "fundName",
|
||||||
|
"transactionProcessingStrategyId", "transactionProcessingStrategyName",
|
||||||
|
"principal", "inArrearsTolerance",
|
||||||
|
"numberOfRepayments", "repaymentEvery",
|
||||||
|
"interestRatePerPeriod", "annualInterestRate",
|
||||||
|
"repaymentFrequencyType", "interestRateFrequencyType",
|
||||||
|
"amortizationType", "interestType", "interestCalculationPeriodType",
|
||||||
|
"charges",
|
||||||
|
"createdOn", "lastModifedOn")
|
||||||
|
);
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({MediaType.APPLICATION_JSON})
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({MediaType.APPLICATION_JSON})
|
||||||
public Response createLoanProduct(final String jsonRequestBody) {
|
public String createLoanProduct(final String jsonRequestBody) {
|
||||||
|
|
||||||
final LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(null, jsonRequestBody);
|
final LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(null, jsonRequestBody);
|
||||||
|
|
||||||
EntityIdentifier entityIdentifier = this.loanProductWritePlatformService.createLoanProduct(command);
|
final EntityIdentifier identifier = this.loanProductWritePlatformService.createLoanProduct(command);
|
||||||
|
|
||||||
return Response.ok().entity(entityIdentifier).build();
|
return apiJsonSerializerService.serializeEntityIdentifier(identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
@@ -68,52 +97,31 @@ public class LoanProductsApiResource {
|
|||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({MediaType.APPLICATION_JSON})
|
||||||
public String retrieveAllLoanProducts(@Context final UriInfo uriInfo) {
|
public String retrieveAllLoanProducts(@Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
Arrays.asList("id", "name", "description", "fundId", "fundName", "principal", "inArrearsTolerance", "numberOfRepayments",
|
|
||||||
"repaymentEvery", "interestRatePerPeriod", "annualInterestRate",
|
|
||||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType",
|
|
||||||
"charges", "createdOn", "lastModifedOn")
|
|
||||||
);
|
|
||||||
|
|
||||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
|
||||||
if (responseParameters.isEmpty()) {
|
if (responseParameters.isEmpty()) {
|
||||||
responseParameters.addAll(typicalResponseParameters);
|
responseParameters.addAll(typicalResponseParameters);
|
||||||
}
|
}
|
||||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
Collection<LoanProductData> products = this.loanProductReadPlatformService.retrieveAllLoanProducts();
|
final Collection<LoanProductData> products = this.loanProductReadPlatformService.retrieveAllLoanProducts();
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, products);
|
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, products);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* see
|
|
||||||
* http://stackoverflow.com/questions/5250074/what-uri-can-be-used-to-request
|
|
||||||
* -a-default-resource
|
|
||||||
*/
|
|
||||||
@GET
|
@GET
|
||||||
@Path("template")
|
@Path("template")
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({MediaType.APPLICATION_JSON})
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({MediaType.APPLICATION_JSON})
|
||||||
public String retrieveNewLoanProductDetails(@Context final UriInfo uriInfo) {
|
public String retrieveNewLoanProductDetails(@Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
// TODO - KW - every addition of a parameter here requires same addition in supported params used in 'apiDataConversionService' method.
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
|
||||||
Arrays.asList("id", "name", "description", "fundId", "fundName", "transactionProcessingStrategyId", "transactionProcessingStrategyName",
|
|
||||||
"principal", "inArrearsTolerance", "numberOfRepayments",
|
|
||||||
"repaymentEvery", "interestRatePerPeriod", "annualInterestRate",
|
|
||||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType", "charges",
|
|
||||||
"createdOn", "lastModifedOn","currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
|
||||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions")
|
|
||||||
);
|
|
||||||
|
|
||||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
|
||||||
if (responseParameters.isEmpty()) {
|
if (responseParameters.isEmpty()) {
|
||||||
responseParameters.addAll(typicalResponseParameters);
|
responseParameters.addAll(typicalResponseParameters);
|
||||||
}
|
}
|
||||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveNewLoanProductDetails();
|
LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveNewLoanProductDetails();
|
||||||
|
loanProduct = handleTemplate(loanProduct, responseParameters);
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct);
|
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct);
|
||||||
}
|
}
|
||||||
@@ -124,30 +132,16 @@ public class LoanProductsApiResource {
|
|||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({MediaType.APPLICATION_JSON})
|
||||||
public String retrieveLoanProductDetails(@PathParam("productId") final Long productId, @Context final UriInfo uriInfo) {
|
public String retrieveLoanProductDetails(@PathParam("productId") final Long productId, @Context final UriInfo uriInfo) {
|
||||||
|
|
||||||
Set<String> typicalResponseParameters = new HashSet<String>(
|
final Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||||
Arrays.asList("id", "name", "description", "fundId", "fundName",
|
|
||||||
"transactionProcessingStrategyId", "transactionProcessingStrategyName",
|
|
||||||
"principal", "inArrearsTolerance", "numberOfRepayments",
|
|
||||||
"repaymentEvery", "interestRatePerPeriod", "annualInterestRate",
|
|
||||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType",
|
|
||||||
"interestCalculationPeriodType", "charges",
|
|
||||||
"createdOn", "lastModifedOn")
|
|
||||||
);
|
|
||||||
|
|
||||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
|
||||||
if (responseParameters.isEmpty()) {
|
if (responseParameters.isEmpty()) {
|
||||||
responseParameters.addAll(typicalResponseParameters);
|
responseParameters.addAll(typicalResponseParameters);
|
||||||
}
|
}
|
||||||
boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
final boolean prettyPrint = ApiParameterHelper.prettyPrint(uriInfo.getQueryParameters());
|
||||||
boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||||
|
|
||||||
LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
|
LoanProductData loanProduct = this.loanProductReadPlatformService.retrieveLoanProduct(productId);
|
||||||
if (template) {
|
if (template) {
|
||||||
responseParameters.addAll(Arrays.asList("currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
loanProduct = handleTemplate(loanProduct, responseParameters);
|
||||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
|
||||||
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
|
|
||||||
chargeOptions.removeAll(loanProduct.getCharges());
|
|
||||||
loanProduct.setChargeOptions(chargeOptions);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct);
|
return this.apiJsonSerializerService.serializeLoanProductDataToJson(prettyPrint, responseParameters, loanProduct);
|
||||||
@@ -157,12 +151,35 @@ public class LoanProductsApiResource {
|
|||||||
@Path("{productId}")
|
@Path("{productId}")
|
||||||
@Consumes({MediaType.APPLICATION_JSON})
|
@Consumes({MediaType.APPLICATION_JSON})
|
||||||
@Produces({MediaType.APPLICATION_JSON})
|
@Produces({MediaType.APPLICATION_JSON})
|
||||||
public Response updateLoanProduct(@PathParam("productId") final Long productId, final String jsonRequestBody) {
|
public String updateLoanProduct(@PathParam("productId") final Long productId, final String jsonRequestBody) {
|
||||||
|
|
||||||
LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(productId, jsonRequestBody);
|
final LoanProductCommand command = this.apiDataConversionService.convertJsonToLoanProductCommand(productId, jsonRequestBody);
|
||||||
|
|
||||||
EntityIdentifier entityIdentifier = this.loanProductWritePlatformService.updateLoanProduct(command);
|
final EntityIdentifier identifier = this.loanProductWritePlatformService.updateLoanProduct(command);
|
||||||
|
|
||||||
return Response.ok().entity(entityIdentifier).build();
|
return apiJsonSerializerService.serializeEntityIdentifier(identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
private LoanProductData handleTemplate(final LoanProductData productData, final Set<String> responseParameters) {
|
||||||
|
|
||||||
|
responseParameters.addAll(Arrays.asList("currencyOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||||
|
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
||||||
|
|
||||||
|
Collection<ChargeData> chargeOptions = this.chargeReadPlatformService.retrieveLoanApplicableCharges();
|
||||||
|
chargeOptions.removeAll(productData.charges());
|
||||||
|
|
||||||
|
List<CurrencyData> currencyOptions = currencyReadPlatformService.retrieveAllowedCurrencies();
|
||||||
|
List<EnumOptionData> amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
||||||
|
List<EnumOptionData> interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
||||||
|
List<EnumOptionData> interestCalculationPeriodTypeOptions = dropdownReadPlatformService.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
||||||
|
List<EnumOptionData> loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||||
|
List<EnumOptionData> repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||||
|
List<EnumOptionData> interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||||
|
|
||||||
|
Collection<FundData> fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
||||||
|
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
||||||
|
|
||||||
|
return new LoanProductData(productData, chargeOptions, currencyOptions, amortizationTypeOptions, interestTypeOptions,
|
||||||
|
interestCalculationPeriodTypeOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions, interestRateFrequencyTypeOptions, fundOptions, transactionProcessingStrategyOptions);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ import org.mifosng.platform.api.data.LoanAccountData;
|
|||||||
import org.mifosng.platform.api.data.LoanBasicDetailsData;
|
import org.mifosng.platform.api.data.LoanBasicDetailsData;
|
||||||
import org.mifosng.platform.api.data.LoanChargeData;
|
import org.mifosng.platform.api.data.LoanChargeData;
|
||||||
import org.mifosng.platform.api.data.LoanPermissionData;
|
import org.mifosng.platform.api.data.LoanPermissionData;
|
||||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
import org.mifosng.platform.api.data.LoanProductData;
|
||||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||||
import org.mifosng.platform.api.data.LoanTransactionNewData;
|
import org.mifosng.platform.api.data.LoanTransactionNewData;
|
||||||
import org.mifosng.platform.api.data.MoneyData;
|
import org.mifosng.platform.api.data.MoneyData;
|
||||||
@@ -134,7 +134,7 @@ public class LoansApiResource {
|
|||||||
"chargeTemplate", "charges"));
|
"chargeTemplate", "charges"));
|
||||||
|
|
||||||
// tempate related
|
// tempate related
|
||||||
Collection<LoanProductLookup> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
Collection<LoanProductData> productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
||||||
Collection<EnumOptionData>loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
Collection<EnumOptionData>loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||||
Collection<EnumOptionData>repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
Collection<EnumOptionData>repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||||
Collection<EnumOptionData>interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
Collection<EnumOptionData>interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||||
@@ -237,7 +237,7 @@ public class LoansApiResource {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Collection<LoanProductLookup> productOptions = new ArrayList<LoanProductLookup>();
|
Collection<LoanProductData> productOptions = new ArrayList<LoanProductData>();
|
||||||
Collection<EnumOptionData> loanTermFrequencyTypeOptions = null;
|
Collection<EnumOptionData> loanTermFrequencyTypeOptions = null;
|
||||||
Collection<EnumOptionData> repaymentFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
Collection<EnumOptionData> repaymentFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||||
Collection<TransactionProcessingStrategyData> repaymentStrategyOptions = null;
|
Collection<TransactionProcessingStrategyData> repaymentStrategyOptions = null;
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package org.mifosng.platform.api.data;
|
package org.mifosng.platform.api.data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
/**
|
||||||
|
* Immutable data object representing currency.
|
||||||
public class CurrencyData implements Serializable {
|
*/
|
||||||
|
public class CurrencyData {
|
||||||
|
|
||||||
private final String code;
|
private final String code;
|
||||||
private final String name;
|
private final String name;
|
||||||
@@ -11,6 +12,10 @@ public class CurrencyData implements Serializable {
|
|||||||
private final String nameCode;
|
private final String nameCode;
|
||||||
private final String displayLabel;
|
private final String displayLabel;
|
||||||
|
|
||||||
|
public static CurrencyData blank() {
|
||||||
|
return new CurrencyData("", "", 0, "", "");
|
||||||
|
}
|
||||||
|
|
||||||
public CurrencyData(final String code, final String name, final int decimalPlaces, final String displaySymbol, final String nameCode) {
|
public CurrencyData(final String code, final String name, final int decimalPlaces, final String displaySymbol, final String nameCode) {
|
||||||
this.code = code;
|
this.code = code;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ public class LoanAccountData {
|
|||||||
|
|
||||||
// template
|
// template
|
||||||
private final Collection<StaffData> loanOfficerOptions;
|
private final Collection<StaffData> loanOfficerOptions;
|
||||||
private final Collection<LoanProductLookup> productOptions;
|
private final Collection<LoanProductData> productOptions;
|
||||||
private final Collection<EnumOptionData> termFrequencyTypeOptions;
|
private final Collection<EnumOptionData> termFrequencyTypeOptions;
|
||||||
private final Collection<EnumOptionData> repaymentFrequencyTypeOptions;
|
private final Collection<EnumOptionData> repaymentFrequencyTypeOptions;
|
||||||
private final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions;
|
private final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions;
|
||||||
@@ -82,7 +82,7 @@ public class LoanAccountData {
|
|||||||
final Collection<LoanTransactionNewData> transactions,
|
final Collection<LoanTransactionNewData> transactions,
|
||||||
final LoanPermissionData permissions,
|
final LoanPermissionData permissions,
|
||||||
final Collection<LoanChargeData> charges,
|
final Collection<LoanChargeData> charges,
|
||||||
final Collection<LoanProductLookup> productOptions,
|
final Collection<LoanProductData> productOptions,
|
||||||
final Collection<EnumOptionData> termFrequencyTypeOptions,
|
final Collection<EnumOptionData> termFrequencyTypeOptions,
|
||||||
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
final Collection<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||||
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions,
|
final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions,
|
||||||
|
|||||||
+1
-1
@@ -77,7 +77,7 @@ public class LoanBasicDetailsData {
|
|||||||
final EnumOptionData termPeriodFrequencyType = product.getRepaymentFrequencyType();
|
final EnumOptionData termPeriodFrequencyType = product.getRepaymentFrequencyType();
|
||||||
final Collection<LoanChargeData> charges = new ArrayList<LoanChargeData>();
|
final Collection<LoanChargeData> charges = new ArrayList<LoanChargeData>();
|
||||||
|
|
||||||
for (ChargeData charge : product.getCharges()) {
|
for (ChargeData charge : product.charges()) {
|
||||||
charges.add(LoanChargeData.newChargeDetails(charge.getId(), charge.getName(), charge.getCurrency(),
|
charges.add(LoanChargeData.newChargeDetails(charge.getId(), charge.getName(), charge.getCurrency(),
|
||||||
charge.getAmount(), charge.getChargeTimeType(), charge.getChargeCalculationType()));
|
charge.getAmount(), charge.getChargeTimeType(), charge.getChargeCalculationType()));
|
||||||
}
|
}
|
||||||
|
|||||||
+226
-217
@@ -6,76 +6,161 @@ import java.util.Collection;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
|
import org.mifosng.platform.loan.domain.AmortizationMethod;
|
||||||
|
import org.mifosng.platform.loan.domain.InterestCalculationPeriodMethod;
|
||||||
|
import org.mifosng.platform.loan.domain.InterestMethod;
|
||||||
|
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
|
||||||
|
import org.mifosng.platform.loanproduct.service.LoanEnumerations;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Immutable data object to represent loan products.
|
||||||
|
*/
|
||||||
public class LoanProductData {
|
public class LoanProductData {
|
||||||
|
|
||||||
private Long id;
|
private final Long id;
|
||||||
private String name;
|
private final String name;
|
||||||
private String description;
|
private final String description;
|
||||||
|
|
||||||
private Long fundId;
|
private final Long fundId;
|
||||||
private String fundName;
|
private final String fundName;
|
||||||
|
|
||||||
private Long transactionProcessingStrategyId;
|
private final Long transactionProcessingStrategyId;
|
||||||
private String transactionProcessingStrategyName;
|
private final String transactionProcessingStrategyName;
|
||||||
|
|
||||||
private CurrencyData currency;
|
private final CurrencyData currency;
|
||||||
private BigDecimal principal;
|
private final BigDecimal principal;
|
||||||
private BigDecimal inArrearsTolerance;
|
private final BigDecimal inArrearsTolerance;
|
||||||
|
|
||||||
private Integer numberOfRepayments;
|
private final Integer numberOfRepayments;
|
||||||
private Integer loanTermFrequency;
|
private final Integer loanTermFrequency;
|
||||||
private Integer repaymentEvery;
|
private final Integer repaymentEvery;
|
||||||
private BigDecimal interestRatePerPeriod = BigDecimal.ZERO;
|
private final BigDecimal interestRatePerPeriod;
|
||||||
private BigDecimal annualInterestRate = BigDecimal.ZERO;
|
private final BigDecimal annualInterestRate;
|
||||||
|
|
||||||
private EnumOptionData loanTermFrequencyType;
|
private final EnumOptionData loanTermFrequencyType;
|
||||||
private EnumOptionData repaymentFrequencyType;
|
private final EnumOptionData repaymentFrequencyType;
|
||||||
private EnumOptionData interestRateFrequencyType;
|
private final EnumOptionData interestRateFrequencyType;
|
||||||
private EnumOptionData amortizationType;
|
private final EnumOptionData amortizationType;
|
||||||
private EnumOptionData interestType;
|
private final EnumOptionData interestType;
|
||||||
private EnumOptionData interestCalculationPeriodType;
|
private final EnumOptionData interestCalculationPeriodType;
|
||||||
|
|
||||||
private Collection<ChargeData> charges;
|
private final Collection<ChargeData> charges;
|
||||||
|
|
||||||
private DateTime createdOn;
|
private final DateTime createdOn;
|
||||||
private DateTime lastModifedOn;
|
private final DateTime lastModifedOn;
|
||||||
|
|
||||||
private List<CurrencyData> currencyOptions = new ArrayList<CurrencyData>();
|
private final List<CurrencyData> currencyOptions;
|
||||||
private Collection<FundData> fundOptions = new ArrayList<FundData>();
|
private final Collection<FundData> fundOptions;
|
||||||
private Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = new ArrayList<TransactionProcessingStrategyData>();
|
private final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions;
|
||||||
private List<EnumOptionData> amortizationTypeOptions = new ArrayList<EnumOptionData>();
|
private final List<EnumOptionData> amortizationTypeOptions;
|
||||||
private List<EnumOptionData> interestTypeOptions = new ArrayList<EnumOptionData>();
|
private final List<EnumOptionData> interestTypeOptions;
|
||||||
private List<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>();
|
private final List<EnumOptionData> interestCalculationPeriodTypeOptions;
|
||||||
private List<EnumOptionData> repaymentFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
private final List<EnumOptionData> repaymentFrequencyTypeOptions;
|
||||||
private List<EnumOptionData> interestRateFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
private final List<EnumOptionData> interestRateFrequencyTypeOptions;
|
||||||
private List<EnumOptionData> loanTermFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
private final List<EnumOptionData> loanTermFrequencyTypeOptions;
|
||||||
private Collection<ChargeData> chargeOptions = new ArrayList<ChargeData>();
|
private final Collection<ChargeData> chargeOptions;
|
||||||
|
|
||||||
public LoanProductData() {
|
/**
|
||||||
//
|
* Used when returning lookup information about loan product for dropdowns.
|
||||||
|
*/
|
||||||
|
public static LoanProductData lookup(final Long id, final String name) {
|
||||||
|
final DateTime createdOn = null;
|
||||||
|
final DateTime lastModifedOn = null;
|
||||||
|
final String description = null;
|
||||||
|
final CurrencyData currency = null;
|
||||||
|
final BigDecimal principal = null;
|
||||||
|
final BigDecimal tolerance = null;
|
||||||
|
final Integer numberOfRepayments = null;
|
||||||
|
final Integer loanTermFrequency = null;
|
||||||
|
final Integer repaymentEvery = null;
|
||||||
|
final BigDecimal interestRatePerPeriod = null;
|
||||||
|
final BigDecimal annualInterestRate = null;
|
||||||
|
final EnumOptionData loanTermFrequencyType = null;
|
||||||
|
final EnumOptionData repaymentFrequencyType = null;
|
||||||
|
final EnumOptionData interestRateFrequencyType = null;
|
||||||
|
final EnumOptionData amortizationType = null;
|
||||||
|
final EnumOptionData interestType = null;
|
||||||
|
final EnumOptionData interestCalculationPeriodType = null;
|
||||||
|
final Long fundId = null;
|
||||||
|
final String fundName = null;
|
||||||
|
final Long transactionProcessingStrategyId = null;
|
||||||
|
final String transactionProcessingStrategyName = null;
|
||||||
|
final Collection<ChargeData> charges = null;
|
||||||
|
|
||||||
|
return new LoanProductData(createdOn, lastModifedOn, id, name, description, currency, principal, tolerance,
|
||||||
|
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod, annualInterestRate,
|
||||||
|
loanTermFrequencyType, repaymentFrequencyType, interestRateFrequencyType,
|
||||||
|
amortizationType, interestType, interestCalculationPeriodType,
|
||||||
|
fundId, fundName, transactionProcessingStrategyId, transactionProcessingStrategyName, charges);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LoanProductData(DateTime createdOn, DateTime lastModifedOn, Long id,
|
public static LoanProductData sensibleDefaultsForNewLoanProductCreation() {
|
||||||
String name, String description, MoneyData principal,
|
|
||||||
MoneyData tolerance, Integer numberOfRepayments,
|
final DateTime createdOn = null;
|
||||||
Integer loanTermFrequency,
|
final DateTime lastModifedOn = null;
|
||||||
Integer repaymentEvery, BigDecimal interestRatePerPeriod,
|
final Long id = null;
|
||||||
BigDecimal annualInterestRate,
|
final String name = null;
|
||||||
EnumOptionData loanTermFrequencyType,
|
final String description = null;
|
||||||
EnumOptionData repaymentFrequencyType,
|
final CurrencyData currency = CurrencyData.blank();
|
||||||
EnumOptionData interestRateFrequencyType,
|
final BigDecimal principal = null;
|
||||||
EnumOptionData amortizationType, EnumOptionData interestType,
|
final BigDecimal tolerance = null;
|
||||||
EnumOptionData interestCalculationPeriodType, Long fundId,
|
final Integer numberOfRepayments = null;
|
||||||
String fundName, Long transactionProcessingStrategyId, String transactionProcessingStrategyName) {
|
final Integer loanTermFrequency = null;
|
||||||
|
final Integer repaymentEvery = null;
|
||||||
|
final BigDecimal interestRatePerPeriod = null;
|
||||||
|
final BigDecimal annualInterestRate = null;
|
||||||
|
final EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(PeriodFrequencyType.MONTHS);
|
||||||
|
final EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(PeriodFrequencyType.MONTHS);
|
||||||
|
final EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(PeriodFrequencyType.MONTHS);
|
||||||
|
final EnumOptionData amortizationType = LoanEnumerations.amortizationType(AmortizationMethod.EQUAL_INSTALLMENTS);
|
||||||
|
final EnumOptionData interestType = LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE);
|
||||||
|
final EnumOptionData interestCalculationPeriodType = LoanEnumerations.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD);
|
||||||
|
final Long fundId = null;
|
||||||
|
final String fundName = null;
|
||||||
|
final Long transactionProcessingStrategyId = null;
|
||||||
|
final String transactionProcessingStrategyName = null;
|
||||||
|
final Collection<ChargeData> charges = null;
|
||||||
|
|
||||||
|
return new LoanProductData(createdOn, lastModifedOn, id, name, description, currency, principal, tolerance,
|
||||||
|
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod, annualInterestRate,
|
||||||
|
loanTermFrequencyType, repaymentFrequencyType, interestRateFrequencyType,
|
||||||
|
amortizationType, interestType, interestCalculationPeriodType,
|
||||||
|
fundId, fundName, transactionProcessingStrategyId, transactionProcessingStrategyName, charges);
|
||||||
|
}
|
||||||
|
|
||||||
|
public LoanProductData(
|
||||||
|
final DateTime createdOn,
|
||||||
|
final DateTime lastModifedOn,
|
||||||
|
final Long id,
|
||||||
|
final String name,
|
||||||
|
final String description,
|
||||||
|
final CurrencyData currency,
|
||||||
|
final BigDecimal principal,
|
||||||
|
final BigDecimal tolerance,
|
||||||
|
final Integer numberOfRepayments,
|
||||||
|
final Integer loanTermFrequency,
|
||||||
|
final Integer repaymentEvery,
|
||||||
|
final BigDecimal interestRatePerPeriod,
|
||||||
|
final BigDecimal annualInterestRate,
|
||||||
|
final EnumOptionData loanTermFrequencyType,
|
||||||
|
final EnumOptionData repaymentFrequencyType,
|
||||||
|
final EnumOptionData interestRateFrequencyType,
|
||||||
|
final EnumOptionData amortizationType,
|
||||||
|
final EnumOptionData interestType,
|
||||||
|
final EnumOptionData interestCalculationPeriodType,
|
||||||
|
final Long fundId,
|
||||||
|
final String fundName,
|
||||||
|
final Long transactionProcessingStrategyId,
|
||||||
|
final String transactionProcessingStrategyName,
|
||||||
|
final Collection<ChargeData> charges) {
|
||||||
this.createdOn = createdOn;
|
this.createdOn = createdOn;
|
||||||
this.lastModifedOn = lastModifedOn;
|
this.lastModifedOn = lastModifedOn;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.description = description;
|
this.description = description;
|
||||||
this.currency = new CurrencyData(principal.getCurrencyCode(), principal.getDefaultName(), principal.getDigitsAfterDecimal(), principal.getDisplaySymbol(), principal.getNameCode());
|
this.currency = currency;
|
||||||
this.principal = principal.getAmount();
|
this.principal = principal;
|
||||||
this.inArrearsTolerance = tolerance.getAmount();
|
this.inArrearsTolerance = tolerance;
|
||||||
this.numberOfRepayments = numberOfRepayments;
|
this.numberOfRepayments = numberOfRepayments;
|
||||||
this.loanTermFrequency = loanTermFrequency;
|
this.loanTermFrequency = loanTermFrequency;
|
||||||
this.repaymentEvery = repaymentEvery;
|
this.repaymentEvery = repaymentEvery;
|
||||||
@@ -91,286 +176,210 @@ public class LoanProductData {
|
|||||||
this.fundName = fundName;
|
this.fundName = fundName;
|
||||||
this.transactionProcessingStrategyId = transactionProcessingStrategyId;
|
this.transactionProcessingStrategyId = transactionProcessingStrategyId;
|
||||||
this.transactionProcessingStrategyName = transactionProcessingStrategyName;
|
this.transactionProcessingStrategyName = transactionProcessingStrategyName;
|
||||||
|
this.charges = charges;
|
||||||
|
|
||||||
|
this.chargeOptions = null;
|
||||||
|
this.currencyOptions = null;
|
||||||
|
this.fundOptions = null;
|
||||||
|
this.transactionProcessingStrategyOptions = null;
|
||||||
|
this.amortizationTypeOptions = null;
|
||||||
|
this.interestTypeOptions = null;
|
||||||
|
this.interestCalculationPeriodTypeOptions = null;
|
||||||
|
this.loanTermFrequencyTypeOptions = null;
|
||||||
|
this.repaymentFrequencyTypeOptions = null;
|
||||||
|
this.interestRateFrequencyTypeOptions = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public LoanProductData(
|
||||||
|
final LoanProductData productData,
|
||||||
|
final Collection<ChargeData> chargeOptions,
|
||||||
|
final List<CurrencyData> currencyOptions,
|
||||||
|
final List<EnumOptionData> amortizationTypeOptions,
|
||||||
|
final List<EnumOptionData> interestTypeOptions,
|
||||||
|
final List<EnumOptionData> interestCalculationPeriodTypeOptions,
|
||||||
|
final List<EnumOptionData> loanTermFrequencyTypeOptions,
|
||||||
|
final List<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||||
|
final List<EnumOptionData> interestRateFrequencyTypeOptions,
|
||||||
|
final Collection<FundData> fundOptions,
|
||||||
|
final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions) {
|
||||||
|
this.createdOn = productData.createdOn;
|
||||||
|
this.lastModifedOn = productData.lastModifedOn;
|
||||||
|
this.id = productData.id;
|
||||||
|
this.name = productData.name;
|
||||||
|
this.description = productData.description;
|
||||||
|
this.principal = productData.principal;
|
||||||
|
this.inArrearsTolerance = productData.inArrearsTolerance;
|
||||||
|
this.numberOfRepayments = productData.numberOfRepayments;
|
||||||
|
this.loanTermFrequency = productData.loanTermFrequency;
|
||||||
|
this.repaymentEvery = productData.repaymentEvery;
|
||||||
|
this.interestRatePerPeriod = productData.interestRatePerPeriod;
|
||||||
|
this.annualInterestRate = productData.annualInterestRate;
|
||||||
|
this.loanTermFrequencyType = productData.loanTermFrequencyType;
|
||||||
|
this.repaymentFrequencyType = productData.repaymentFrequencyType;
|
||||||
|
this.interestRateFrequencyType = productData.interestRateFrequencyType;
|
||||||
|
this.amortizationType = productData.amortizationType;
|
||||||
|
this.interestType = productData.interestType;
|
||||||
|
this.interestCalculationPeriodType = productData.interestCalculationPeriodType;
|
||||||
|
this.fundId = productData.fundId;
|
||||||
|
this.fundName = productData.fundName;
|
||||||
|
this.transactionProcessingStrategyId = productData.transactionProcessingStrategyId;
|
||||||
|
this.transactionProcessingStrategyName = productData.transactionProcessingStrategyName;
|
||||||
|
this.charges = null;
|
||||||
|
|
||||||
|
this.chargeOptions = chargeOptions;
|
||||||
|
this.currencyOptions = currencyOptions;
|
||||||
|
if (this.currencyOptions.size() == 1) {
|
||||||
|
this.currency = this.currencyOptions.get(0);
|
||||||
|
} else {
|
||||||
|
this.currency = productData.currency;
|
||||||
|
}
|
||||||
|
this.fundOptions = fundOptions;
|
||||||
|
this.transactionProcessingStrategyOptions = transactionProcessingStrategyOptions;
|
||||||
|
this.amortizationTypeOptions = amortizationTypeOptions;
|
||||||
|
this.interestTypeOptions = interestTypeOptions;
|
||||||
|
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
||||||
|
this.loanTermFrequencyTypeOptions = loanTermFrequencyTypeOptions;
|
||||||
|
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
||||||
|
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Collection<ChargeData> charges() {
|
||||||
|
Collection<ChargeData> chargesLocal = new ArrayList<ChargeData>();
|
||||||
|
if (this.charges != null) {
|
||||||
|
chargesLocal = this.charges;
|
||||||
|
}
|
||||||
|
return chargesLocal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getId() {
|
public Long getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
public String getDescription() {
|
||||||
return description;
|
return description;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDescription(String description) {
|
|
||||||
this.description = description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getFundId() {
|
public Long getFundId() {
|
||||||
return fundId;
|
return fundId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFundId(Long fundId) {
|
|
||||||
this.fundId = fundId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getFundName() {
|
public String getFundName() {
|
||||||
return fundName;
|
return fundName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFundName(String fundName) {
|
|
||||||
this.fundName = fundName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getTransactionProcessingStrategyId() {
|
public Long getTransactionProcessingStrategyId() {
|
||||||
return transactionProcessingStrategyId;
|
return transactionProcessingStrategyId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTransactionProcessingStrategyId(Long transactionProcessingStrategyId) {
|
|
||||||
this.transactionProcessingStrategyId = transactionProcessingStrategyId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTransactionProcessingStrategyName() {
|
public String getTransactionProcessingStrategyName() {
|
||||||
return transactionProcessingStrategyName;
|
return transactionProcessingStrategyName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTransactionProcessingStrategyName(
|
|
||||||
String transactionProcessingStrategyName) {
|
|
||||||
this.transactionProcessingStrategyName = transactionProcessingStrategyName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public CurrencyData getCurrency() {
|
public CurrencyData getCurrency() {
|
||||||
return currency;
|
return currency;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCurrency(CurrencyData currency) {
|
|
||||||
this.currency = currency;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getPrincipal() {
|
public BigDecimal getPrincipal() {
|
||||||
return principal;
|
return principal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPrincipal(BigDecimal principal) {
|
|
||||||
this.principal = principal;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getInArrearsTolerance() {
|
public BigDecimal getInArrearsTolerance() {
|
||||||
return inArrearsTolerance;
|
return inArrearsTolerance;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInArrearsTolerance(BigDecimal inArrearsTolerance) {
|
|
||||||
this.inArrearsTolerance = inArrearsTolerance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getNumberOfRepayments() {
|
public Integer getNumberOfRepayments() {
|
||||||
return numberOfRepayments;
|
return numberOfRepayments;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNumberOfRepayments(Integer numberOfRepayments) {
|
|
||||||
this.numberOfRepayments = numberOfRepayments;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getLoanTermFrequency() {
|
public Integer getLoanTermFrequency() {
|
||||||
return loanTermFrequency;
|
return loanTermFrequency;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLoanTermFrequency(Integer loanTermFrequency) {
|
|
||||||
this.loanTermFrequency = loanTermFrequency;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getRepaymentEvery() {
|
public Integer getRepaymentEvery() {
|
||||||
return repaymentEvery;
|
return repaymentEvery;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRepaymentEvery(Integer repaymentEvery) {
|
|
||||||
this.repaymentEvery = repaymentEvery;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getInterestRatePerPeriod() {
|
public BigDecimal getInterestRatePerPeriod() {
|
||||||
return interestRatePerPeriod;
|
return interestRatePerPeriod;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterestRatePerPeriod(BigDecimal interestRatePerPeriod) {
|
|
||||||
this.interestRatePerPeriod = interestRatePerPeriod;
|
|
||||||
}
|
|
||||||
|
|
||||||
public BigDecimal getAnnualInterestRate() {
|
public BigDecimal getAnnualInterestRate() {
|
||||||
return annualInterestRate;
|
return annualInterestRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAnnualInterestRate(BigDecimal annualInterestRate) {
|
public EnumOptionData getLoanTermFrequencyType() {
|
||||||
this.annualInterestRate = annualInterestRate;
|
return loanTermFrequencyType;
|
||||||
}
|
|
||||||
|
|
||||||
public DateTime getCreatedOn() {
|
|
||||||
return createdOn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCreatedOn(DateTime createdOn) {
|
|
||||||
this.createdOn = createdOn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public DateTime getLastModifedOn() {
|
|
||||||
return lastModifedOn;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastModifedOn(DateTime lastModifedOn) {
|
|
||||||
this.lastModifedOn = lastModifedOn;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EnumOptionData getRepaymentFrequencyType() {
|
public EnumOptionData getRepaymentFrequencyType() {
|
||||||
return repaymentFrequencyType;
|
return repaymentFrequencyType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRepaymentFrequencyType(EnumOptionData repaymentFrequencyType) {
|
|
||||||
this.repaymentFrequencyType = repaymentFrequencyType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getInterestRateFrequencyType() {
|
public EnumOptionData getInterestRateFrequencyType() {
|
||||||
return interestRateFrequencyType;
|
return interestRateFrequencyType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterestRateFrequencyType(
|
|
||||||
EnumOptionData interestRateFrequencyType) {
|
|
||||||
this.interestRateFrequencyType = interestRateFrequencyType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getAmortizationType() {
|
public EnumOptionData getAmortizationType() {
|
||||||
return amortizationType;
|
return amortizationType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAmortizationType(EnumOptionData amortizationType) {
|
|
||||||
this.amortizationType = amortizationType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getInterestType() {
|
public EnumOptionData getInterestType() {
|
||||||
return interestType;
|
return interestType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterestType(EnumOptionData interestType) {
|
|
||||||
this.interestType = interestType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getInterestCalculationPeriodType() {
|
public EnumOptionData getInterestCalculationPeriodType() {
|
||||||
return interestCalculationPeriodType;
|
return interestCalculationPeriodType;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterestCalculationPeriodType(
|
public DateTime getCreatedOn() {
|
||||||
EnumOptionData interestCalculationPeriodType) {
|
return createdOn;
|
||||||
this.interestCalculationPeriodType = interestCalculationPeriodType;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<EnumOptionData> getRepaymentFrequencyTypeOptions() {
|
public DateTime getLastModifedOn() {
|
||||||
return repaymentFrequencyTypeOptions;
|
return lastModifedOn;
|
||||||
}
|
|
||||||
|
|
||||||
public void setRepaymentFrequencyTypeOptions(
|
|
||||||
List<EnumOptionData> repaymentFrequencyTypeOptions) {
|
|
||||||
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getInterestRateFrequencyTypeOptions() {
|
|
||||||
return interestRateFrequencyTypeOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setInterestRateFrequencyTypeOptions(
|
|
||||||
List<EnumOptionData> interestRateFrequencyTypeOptions) {
|
|
||||||
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public EnumOptionData getLoanTermFrequencyType() {
|
|
||||||
return loanTermFrequencyType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLoanTermFrequencyType(EnumOptionData loanTermFrequencyType) {
|
|
||||||
this.loanTermFrequencyType = loanTermFrequencyType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getLoanTermFrequencyTypeOptions() {
|
|
||||||
return loanTermFrequencyTypeOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLoanTermFrequencyTypeOptions(
|
|
||||||
List<EnumOptionData> loanTermFrequencyTypeOptions) {
|
|
||||||
this.loanTermFrequencyTypeOptions = loanTermFrequencyTypeOptions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CurrencyData> getCurrencyOptions() {
|
public List<CurrencyData> getCurrencyOptions() {
|
||||||
return currencyOptions;
|
return currencyOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCurrencyOptions(List<CurrencyData> currencyOptions) {
|
|
||||||
this.currencyOptions = currencyOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<FundData> getFundOptions() {
|
public Collection<FundData> getFundOptions() {
|
||||||
return fundOptions;
|
return fundOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFundOptions(Collection<FundData> fundOptions) {
|
|
||||||
this.fundOptions = fundOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Collection<TransactionProcessingStrategyData> getTransactionProcessingStrategyOptions() {
|
public Collection<TransactionProcessingStrategyData> getTransactionProcessingStrategyOptions() {
|
||||||
return transactionProcessingStrategyOptions;
|
return transactionProcessingStrategyOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTransactionProcessingStrategyOptions(
|
|
||||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions) {
|
|
||||||
this.transactionProcessingStrategyOptions = transactionProcessingStrategyOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getAmortizationTypeOptions() {
|
public List<EnumOptionData> getAmortizationTypeOptions() {
|
||||||
return amortizationTypeOptions;
|
return amortizationTypeOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAmortizationTypeOptions(
|
|
||||||
List<EnumOptionData> amortizationTypeOptions) {
|
|
||||||
this.amortizationTypeOptions = amortizationTypeOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getInterestTypeOptions() {
|
public List<EnumOptionData> getInterestTypeOptions() {
|
||||||
return interestTypeOptions;
|
return interestTypeOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterestTypeOptions(List<EnumOptionData> interestTypeOptions) {
|
|
||||||
this.interestTypeOptions = interestTypeOptions;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<EnumOptionData> getInterestCalculationPeriodTypeOptions() {
|
public List<EnumOptionData> getInterestCalculationPeriodTypeOptions() {
|
||||||
return interestCalculationPeriodTypeOptions;
|
return interestCalculationPeriodTypeOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setInterestCalculationPeriodTypeOptions(
|
public List<EnumOptionData> getRepaymentFrequencyTypeOptions() {
|
||||||
List<EnumOptionData> interestCalculationPeriodTypeOptions) {
|
return repaymentFrequencyTypeOptions;
|
||||||
this.interestCalculationPeriodTypeOptions = interestCalculationPeriodTypeOptions;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<ChargeData> getCharges() {
|
public List<EnumOptionData> getInterestRateFrequencyTypeOptions() {
|
||||||
return charges;
|
return interestRateFrequencyTypeOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setCharges(Collection<ChargeData> charges) {
|
public List<EnumOptionData> getLoanTermFrequencyTypeOptions() {
|
||||||
this.charges = charges;
|
return loanTermFrequencyTypeOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<ChargeData> getChargeOptions() {
|
public Collection<ChargeData> getChargeOptions() {
|
||||||
return chargeOptions;
|
return chargeOptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChargeOptions(Collection<ChargeData> chargeOptions) {
|
|
||||||
this.chargeOptions = chargeOptions;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
package org.mifosng.platform.api.data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Immutable data object used for basic loan product info for lookup situations.
|
|
||||||
*
|
|
||||||
* TODO - kw - this can be replace and the normal {@link LoanProductData} used where only id and name are populated as google gson does
|
|
||||||
* not return null attributes/parameters.
|
|
||||||
*/
|
|
||||||
public class LoanProductLookup {
|
|
||||||
|
|
||||||
private final Long id;
|
|
||||||
private final String name;
|
|
||||||
|
|
||||||
public LoanProductLookup(final Long id, final String name) {
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,10 @@ import java.io.Serializable;
|
|||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated - Want to remove this and its usage around loans in full. In its place we just pass back a {@link BigDecimal} for the amount and a {@link CurrencyData} is also passed back.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public class MoneyData implements Serializable, Comparable<MoneyData> {
|
public class MoneyData implements Serializable, Comparable<MoneyData> {
|
||||||
|
|
||||||
private String currencyCode;
|
private String currencyCode;
|
||||||
|
|||||||
+53
-44
@@ -335,23 +335,23 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
|||||||
throw new InvalidJsonException();
|
throw new InvalidJsonException();
|
||||||
}
|
}
|
||||||
|
|
||||||
Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
final Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||||
Map<String, String> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
final Map<String, String> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||||
|
|
||||||
Set<String> supportedParams = new HashSet<String>(
|
final Set<String> supportedParams = new HashSet<String>(
|
||||||
Arrays.asList("name", "officeId", "externalId", "clientMembers")
|
Arrays.asList("name", "officeId", "externalId", "clientMembers")
|
||||||
);
|
);
|
||||||
|
|
||||||
checkForUnsupportedParameters(requestMap, supportedParams);
|
checkForUnsupportedParameters(requestMap, supportedParams);
|
||||||
|
|
||||||
Set<String> modifiedParameters = new HashSet<String>();
|
final Set<String> modifiedParameters = new HashSet<String>();
|
||||||
|
|
||||||
Long officeId = extractLongParameter("officeId", requestMap, modifiedParameters);
|
final Long officeId = extractLongParameter("officeId", requestMap, modifiedParameters);
|
||||||
String externalId = extractStringParameter("externalId", requestMap, modifiedParameters);
|
final String externalId = extractStringParameter("externalId", requestMap, modifiedParameters);
|
||||||
String name = extractStringParameter("name", requestMap, modifiedParameters);
|
final String name = extractStringParameter("name", requestMap, modifiedParameters);
|
||||||
|
|
||||||
// check array
|
// check array
|
||||||
JsonParser parser = new JsonParser();
|
final JsonParser parser = new JsonParser();
|
||||||
|
|
||||||
String[] clientMembers = null;
|
String[] clientMembers = null;
|
||||||
JsonElement element = parser.parse(json);
|
JsonElement element = parser.parse(json);
|
||||||
@@ -378,44 +378,54 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
|||||||
throw new InvalidJsonException();
|
throw new InvalidJsonException();
|
||||||
}
|
}
|
||||||
|
|
||||||
Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
final Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||||
Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
final Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||||
|
|
||||||
Set<String> supportedParams = new HashSet<String>(
|
// FIXME - A - LoanProduct - KW - Do we add support for "overpaidTolerance" parameter?
|
||||||
Arrays.asList("name", "description", "fundId", "transactionProcessingStrategyId", "currencyCode", "digitsAfterDecimal",
|
final Set<String> supportedParams = new HashSet<String>(
|
||||||
"principal", "inArrearsTolerance", "interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
Arrays.asList("name", "description", "fundId", "transactionProcessingStrategyId",
|
||||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType",
|
"currencyCode", "digitsAfterDecimal",
|
||||||
|
"principal", "inArrearsTolerance",
|
||||||
|
"interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
||||||
|
"repaymentFrequencyType", "interestRateFrequencyType",
|
||||||
|
"amortizationType", "interestType", "interestCalculationPeriodType",
|
||||||
"charges", "locale")
|
"charges", "locale")
|
||||||
);
|
);
|
||||||
|
|
||||||
checkForUnsupportedParameters(requestMap, supportedParams);
|
checkForUnsupportedParameters(requestMap, supportedParams);
|
||||||
|
|
||||||
Set<String> modifiedParameters = new HashSet<String>();
|
final JsonParser parser = new JsonParser();
|
||||||
|
final JsonElement element = parser.parse(json);
|
||||||
|
final JsonParserHelper helper = new JsonParserHelper();
|
||||||
|
|
||||||
String name = extractStringParameter("name", requestMap, modifiedParameters);
|
final Set<String> modifiedParameters = new HashSet<String>();
|
||||||
String description = extractStringParameter("description", requestMap, modifiedParameters);
|
final String name = helper.extractStringNamed("name", element, modifiedParameters);
|
||||||
Long fundId = extractLongParameter("fundId", requestMap, modifiedParameters);
|
final String description = helper.extractStringNamed("description", element, modifiedParameters);
|
||||||
Long transactionProcessingStrategyId = extractLongParameter("transactionProcessingStrategyId", requestMap, modifiedParameters);
|
final Long fundId = helper.extractLongNamed("fundId", element, modifiedParameters);
|
||||||
String currencyCode = extractStringParameter("currencyCode", requestMap, modifiedParameters);
|
|
||||||
Integer digitsAfterDecimalValue = extractIntegerParameter("digitsAfterDecimal", requestMap, modifiedParameters);
|
|
||||||
BigDecimal principalValue = extractBigDecimalParameter("principal", requestMap, modifiedParameters);
|
|
||||||
BigDecimal inArrearsToleranceValue = extractBigDecimalParameter("inArrearsTolerance", requestMap, modifiedParameters);
|
|
||||||
BigDecimal interestRatePerPeriodValue = extractBigDecimalParameter("interestRatePerPeriod", requestMap, modifiedParameters);
|
|
||||||
|
|
||||||
Integer repaymentEveryValue = extractIntegerParameter("repaymentEvery", requestMap, modifiedParameters);
|
final Long transactionProcessingStrategyId = helper.extractLongNamed("transactionProcessingStrategyId", element, modifiedParameters);
|
||||||
Integer numberOfRepaymentsValue = extractIntegerParameter("numberOfRepayments", requestMap, modifiedParameters);
|
|
||||||
Integer repaymentFrequencyTypeValue = extractIntegerParameter("repaymentFrequencyType", requestMap, modifiedParameters);
|
|
||||||
|
|
||||||
Integer interestRateFrequencyTypeValue = extractIntegerParameter("interestRateFrequencyType", requestMap, modifiedParameters);
|
final String currencyCode = helper.extractStringNamed("currencyCode", element, modifiedParameters);
|
||||||
Integer amortizationTypeValue = extractIntegerParameter("amortizationType", requestMap, modifiedParameters);
|
final Integer digitsAfterDecimal = helper.extractIntegerNamed("digitsAfterDecimal", element, modifiedParameters);
|
||||||
Integer interestTypeValue = extractIntegerParameter("interestType", requestMap, modifiedParameters);
|
|
||||||
Integer interestCalculationPeriodTypeValue = extractIntegerParameter("interestCalculationPeriodType", requestMap, modifiedParameters);
|
|
||||||
|
|
||||||
// check array
|
final BigDecimal principal = helper.extractBigDecimalNamed("principal", element, modifiedParameters);
|
||||||
JsonParser parser = new JsonParser();
|
final BigDecimal inArrearsTolerance = helper.extractBigDecimalNamed("inArrearsTolerance", element, modifiedParameters);
|
||||||
|
final BigDecimal interestRatePerPeriod = helper.extractBigDecimalNamed("interestRatePerPeriod", element, modifiedParameters);
|
||||||
|
final Integer repaymentEvery = helper.extractIntegerNamed("repaymentEvery", element, modifiedParameters);
|
||||||
|
final Integer numberOfRepayments = helper.extractIntegerNamed("numberOfRepayments", element, modifiedParameters);
|
||||||
|
final Integer repaymentFrequencyType = helper.extractIntegerNamed("repaymentFrequencyType", element, modifiedParameters);
|
||||||
|
|
||||||
|
// FIXME - A - LoanProduct - KW - should loan term fields be part of product also as are basic part of 'loan terms'
|
||||||
|
// final Integer loanTermFrequency = helper.extractIntegerNamed("loanTermFrequency", element, modifiedParameters);
|
||||||
|
// final Integer loanTermFrequencyType = helper.extractIntegerNamed("loanTermFrequencyType", element, modifiedParameters);
|
||||||
|
final Integer interestRateFrequencyType = helper.extractIntegerNamed("interestRateFrequencyType", element, modifiedParameters);
|
||||||
|
final Integer amortizationType = helper.extractIntegerNamed("amortizationType", element, modifiedParameters);
|
||||||
|
final Integer interestType = helper.extractIntegerNamed("interestType", element, modifiedParameters);
|
||||||
|
final Integer interestCalculationPeriodType = helper.extractIntegerNamed("interestCalculationPeriodType", element, modifiedParameters);
|
||||||
|
|
||||||
|
// FIXME - A - LoanProduct - KW - product charges at present dont allow for adding 'charge' to loan product and setting its 'amount', might this be needed?
|
||||||
|
// loan product charges
|
||||||
String[] charges = null;
|
String[] charges = null;
|
||||||
JsonElement element = parser.parse(json);
|
|
||||||
if (element.isJsonObject()) {
|
if (element.isJsonObject()) {
|
||||||
JsonObject object = element.getAsJsonObject();
|
JsonObject object = element.getAsJsonObject();
|
||||||
if (object.has("charges")) {
|
if (object.has("charges")) {
|
||||||
@@ -427,11 +437,10 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//
|
|
||||||
|
|
||||||
return new LoanProductCommand(modifiedParameters, resourceIdentifier, name, description, fundId, transactionProcessingStrategyId,
|
return new LoanProductCommand(modifiedParameters, resourceIdentifier, name, description, fundId, transactionProcessingStrategyId,
|
||||||
currencyCode, digitsAfterDecimalValue, principalValue, inArrearsToleranceValue, numberOfRepaymentsValue, repaymentEveryValue, interestRatePerPeriodValue,
|
currencyCode, digitsAfterDecimal, principal, inArrearsTolerance, numberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||||
repaymentFrequencyTypeValue, interestRateFrequencyTypeValue, amortizationTypeValue, interestTypeValue, interestCalculationPeriodTypeValue, charges);
|
repaymentFrequencyType, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, charges);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -441,10 +450,10 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
|||||||
throw new InvalidJsonException();
|
throw new InvalidJsonException();
|
||||||
}
|
}
|
||||||
|
|
||||||
Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
final Type typeOfMap = new TypeToken<Map<String, Object>>(){}.getType();
|
||||||
Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
final Map<String, Object> requestMap = gsonConverter.fromJson(json, typeOfMap);
|
||||||
|
|
||||||
Set<String> supportedParams = new HashSet<String>(
|
final Set<String> supportedParams = new HashSet<String>(
|
||||||
Arrays.asList("clientId", "groupId", "productId", "externalId", "fundId", "transactionProcessingStrategyId",
|
Arrays.asList("clientId", "groupId", "productId", "externalId", "fundId", "transactionProcessingStrategyId",
|
||||||
"principal", "inArrearsTolerance", "interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
"principal", "inArrearsTolerance", "interestRatePerPeriod", "repaymentEvery", "numberOfRepayments",
|
||||||
"loanTermFrequency", "loanTermFrequencyType", "charges",
|
"loanTermFrequency", "loanTermFrequencyType", "charges",
|
||||||
@@ -455,11 +464,11 @@ public class ApiDataConversionServiceImpl implements ApiDataConversionService {
|
|||||||
|
|
||||||
checkForUnsupportedParameters(requestMap, supportedParams);
|
checkForUnsupportedParameters(requestMap, supportedParams);
|
||||||
|
|
||||||
Set<String> modifiedParameters = new HashSet<String>();
|
final Set<String> modifiedParameters = new HashSet<String>();
|
||||||
|
|
||||||
JsonParser parser = new JsonParser();
|
final JsonParser parser = new JsonParser();
|
||||||
JsonElement element = parser.parse(json);
|
final JsonElement element = parser.parse(json);
|
||||||
JsonParserHelper helper = new JsonParserHelper();
|
final JsonParserHelper helper = new JsonParserHelper();
|
||||||
|
|
||||||
final Long clientId = helper.extractLongNamed("clientId", element, modifiedParameters);
|
final Long clientId = helper.extractLongNamed("clientId", element, modifiedParameters);
|
||||||
final Long groupId = helper.extractLongNamed("groupId", element, modifiedParameters);
|
final Long groupId = helper.extractLongNamed("groupId", element, modifiedParameters);
|
||||||
|
|||||||
+6
-8
@@ -46,18 +46,16 @@ public class JsonParserHelper {
|
|||||||
return longValue;
|
return longValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String extractStringNamed(final String parameterName,
|
public String extractStringNamed(final String parameterName, final JsonElement element, final Set<String> modifiedParameters) {
|
||||||
final JsonElement element, final Set<String> modifiedParameters) {
|
|
||||||
String stringValue = null;
|
String stringValue = null;
|
||||||
if (element.isJsonObject()) {
|
if (element.isJsonObject()) {
|
||||||
JsonObject object = element.getAsJsonObject();
|
JsonObject object = element.getAsJsonObject();
|
||||||
if (object.has(parameterName)
|
if (object.has(parameterName) && object.get(parameterName).isJsonPrimitive()) {
|
||||||
&& object.get(parameterName).isJsonPrimitive()) {
|
|
||||||
modifiedParameters.add(parameterName);
|
modifiedParameters.add(parameterName);
|
||||||
JsonPrimitive primitive = object.get(parameterName)
|
final JsonPrimitive primitive = object.get(parameterName).getAsJsonPrimitive();
|
||||||
.getAsJsonPrimitive();
|
final String valueAsString = primitive.getAsString();
|
||||||
if (StringUtils.isNotBlank(stringValue)) {
|
if (StringUtils.isNotBlank(valueAsString)) {
|
||||||
stringValue = primitive.getAsString();
|
stringValue = valueAsString;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-2
@@ -3,13 +3,12 @@ package org.mifosng.platform.loanproduct.service;
|
|||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import org.mifosng.platform.api.data.LoanProductData;
|
import org.mifosng.platform.api.data.LoanProductData;
|
||||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
|
||||||
|
|
||||||
public interface LoanProductReadPlatformService {
|
public interface LoanProductReadPlatformService {
|
||||||
|
|
||||||
Collection<LoanProductData> retrieveAllLoanProducts();
|
Collection<LoanProductData> retrieveAllLoanProducts();
|
||||||
|
|
||||||
Collection<LoanProductLookup> retrieveAllLoanProductsForLookup();
|
Collection<LoanProductData> retrieveAllLoanProductsForLookup();
|
||||||
|
|
||||||
LoanProductData retrieveLoanProduct(Long productId);
|
LoanProductData retrieveLoanProduct(Long productId);
|
||||||
|
|
||||||
|
|||||||
+55
-149
@@ -4,27 +4,16 @@ import java.math.BigDecimal;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.joda.time.DateTime;
|
import org.joda.time.DateTime;
|
||||||
import org.mifosng.platform.api.data.ChargeData;
|
import org.mifosng.platform.api.data.ChargeData;
|
||||||
import org.mifosng.platform.api.data.CurrencyData;
|
import org.mifosng.platform.api.data.CurrencyData;
|
||||||
import org.mifosng.platform.api.data.EnumOptionData;
|
import org.mifosng.platform.api.data.EnumOptionData;
|
||||||
import org.mifosng.platform.api.data.FundData;
|
|
||||||
import org.mifosng.platform.api.data.LoanProductData;
|
import org.mifosng.platform.api.data.LoanProductData;
|
||||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
|
||||||
import org.mifosng.platform.api.data.MoneyData;
|
|
||||||
import org.mifosng.platform.api.data.TransactionProcessingStrategyData;
|
|
||||||
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
||||||
import org.mifosng.platform.currency.service.CurrencyReadPlatformService;
|
|
||||||
import org.mifosng.platform.exceptions.LoanProductNotFoundException;
|
import org.mifosng.platform.exceptions.LoanProductNotFoundException;
|
||||||
import org.mifosng.platform.fund.service.FundReadPlatformService;
|
|
||||||
import org.mifosng.platform.infrastructure.JdbcSupport;
|
import org.mifosng.platform.infrastructure.JdbcSupport;
|
||||||
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
|
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
|
||||||
import org.mifosng.platform.loan.domain.AmortizationMethod;
|
|
||||||
import org.mifosng.platform.loan.domain.InterestCalculationPeriodMethod;
|
|
||||||
import org.mifosng.platform.loan.domain.InterestMethod;
|
|
||||||
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
|
|
||||||
import org.mifosng.platform.security.PlatformSecurityContext;
|
import org.mifosng.platform.security.PlatformSecurityContext;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.dao.EmptyResultDataAccessException;
|
import org.springframework.dao.EmptyResultDataAccessException;
|
||||||
@@ -36,24 +25,15 @@ import org.springframework.stereotype.Service;
|
|||||||
public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatformService {
|
public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatformService {
|
||||||
|
|
||||||
private final PlatformSecurityContext context;
|
private final PlatformSecurityContext context;
|
||||||
private final CurrencyReadPlatformService currencyReadPlatformService;
|
|
||||||
private final JdbcTemplate jdbcTemplate;
|
private final JdbcTemplate jdbcTemplate;
|
||||||
private final LoanDropdownReadPlatformService dropdownReadPlatformService;
|
|
||||||
private final FundReadPlatformService fundReadPlatformService;
|
|
||||||
private final ChargeReadPlatformService chargeReadPlatformService;
|
private final ChargeReadPlatformService chargeReadPlatformService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public LoanProductReadPlatformServiceImpl(
|
public LoanProductReadPlatformServiceImpl(
|
||||||
final PlatformSecurityContext context,
|
final PlatformSecurityContext context,
|
||||||
final CurrencyReadPlatformService currencyReadPlatformService,
|
|
||||||
final FundReadPlatformService fundReadPlatformService,
|
|
||||||
final LoanDropdownReadPlatformService dropdownReadPlatformService,
|
|
||||||
final ChargeReadPlatformService chargeReadPlatformService,
|
final ChargeReadPlatformService chargeReadPlatformService,
|
||||||
final TenantAwareRoutingDataSource dataSource) {
|
final TenantAwareRoutingDataSource dataSource) {
|
||||||
this.context = context;
|
this.context = context;
|
||||||
this.currencyReadPlatformService = currencyReadPlatformService;
|
|
||||||
this.fundReadPlatformService = fundReadPlatformService;
|
|
||||||
this.dropdownReadPlatformService = dropdownReadPlatformService;
|
|
||||||
this.chargeReadPlatformService = chargeReadPlatformService;
|
this.chargeReadPlatformService = chargeReadPlatformService;
|
||||||
this.jdbcTemplate = new JdbcTemplate(dataSource);
|
this.jdbcTemplate = new JdbcTemplate(dataSource);
|
||||||
}
|
}
|
||||||
@@ -62,19 +42,14 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
|
|||||||
public LoanProductData retrieveLoanProduct(final Long loanProductId) {
|
public LoanProductData retrieveLoanProduct(final Long loanProductId) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
LoanProductMapper rm = new LoanProductMapper();
|
final Collection<ChargeData> charges = this.chargeReadPlatformService.retrieveLoanProductCharges(loanProductId);
|
||||||
String sql = "select " + rm.loanProductSchema()
|
|
||||||
+ " where lp.id = ?";
|
|
||||||
|
|
||||||
LoanProductData productData = this.jdbcTemplate.queryForObject(sql,
|
final LoanProductMapper rm = new LoanProductMapper(charges);
|
||||||
rm, new Object[] { loanProductId });
|
final String sql = "select " + rm.loanProductSchema() + " where lp.id = ?";
|
||||||
|
|
||||||
Collection<ChargeData> charges = this.chargeReadPlatformService.retrieveLoanProductCharges(loanProductId);
|
|
||||||
productData.setCharges(charges);
|
|
||||||
|
|
||||||
populateProductDataWithDropdownOptions(productData);
|
return this.jdbcTemplate.queryForObject(sql, rm, new Object[] { loanProductId });
|
||||||
|
|
||||||
return productData;
|
|
||||||
} catch (EmptyResultDataAccessException e) {
|
} catch (EmptyResultDataAccessException e) {
|
||||||
throw new LoanProductNotFoundException(loanProductId);
|
throw new LoanProductNotFoundException(loanProductId);
|
||||||
}
|
}
|
||||||
@@ -85,69 +60,37 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
|
|||||||
|
|
||||||
this.context.authenticatedUser();
|
this.context.authenticatedUser();
|
||||||
|
|
||||||
LoanProductMapper rm = new LoanProductMapper();
|
final LoanProductMapper rm = new LoanProductMapper(null);
|
||||||
|
|
||||||
String sql = "select " + rm.loanProductSchema();
|
final String sql = "select " + rm.loanProductSchema();
|
||||||
|
|
||||||
Collection<LoanProductData> loanProducts = this.jdbcTemplate.query(sql, rm, new Object[] {});
|
return this.jdbcTemplate.query(sql, rm, new Object[] {});
|
||||||
for (LoanProductData loanProduct : loanProducts){
|
|
||||||
Collection<ChargeData> charges = this.chargeReadPlatformService.retrieveLoanProductCharges(loanProduct.getId());
|
|
||||||
loanProduct.setCharges(charges);
|
|
||||||
}
|
|
||||||
|
|
||||||
return loanProducts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Collection<LoanProductLookup> retrieveAllLoanProductsForLookup() {
|
public Collection<LoanProductData> retrieveAllLoanProductsForLookup() {
|
||||||
|
|
||||||
this.context.authenticatedUser();
|
this.context.authenticatedUser();
|
||||||
|
|
||||||
LoanProductLookupMapper rm = new LoanProductLookupMapper();
|
final LoanProductLookupMapper rm = new LoanProductLookupMapper();
|
||||||
|
|
||||||
String sql = "select " + rm.loanProductLookupSchema();
|
final String sql = "select " + rm.loanProductLookupSchema();
|
||||||
|
|
||||||
return this.jdbcTemplate.query(sql, rm, new Object[] {});
|
return this.jdbcTemplate.query(sql, rm, new Object[] {});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoanProductData retrieveNewLoanProductDetails() {
|
public LoanProductData retrieveNewLoanProductDetails() {
|
||||||
|
return LoanProductData.sensibleDefaultsForNewLoanProductCreation();
|
||||||
LoanProductData productData = new LoanProductData();
|
|
||||||
|
|
||||||
productData.setAmortizationType(LoanEnumerations.amortizationType(AmortizationMethod.EQUAL_INSTALLMENTS));
|
|
||||||
productData.setInterestType(LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE));
|
|
||||||
|
|
||||||
productData.setLoanTermFrequencyType(LoanEnumerations.loanTermFrequencyType(PeriodFrequencyType.MONTHS));
|
|
||||||
|
|
||||||
productData.setRepaymentFrequencyType(LoanEnumerations.repaymentFrequencyType(PeriodFrequencyType.MONTHS));
|
|
||||||
|
|
||||||
productData.setInterestRateFrequencyType(LoanEnumerations.interestRateFrequencyType(PeriodFrequencyType.MONTHS));
|
|
||||||
|
|
||||||
productData.setInterestCalculationPeriodType(LoanEnumerations.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD));
|
|
||||||
|
|
||||||
productData.setChargeOptions(this.chargeReadPlatformService.retrieveLoanApplicableCharges());
|
|
||||||
|
|
||||||
populateProductDataWithDropdownOptions(productData);
|
|
||||||
|
|
||||||
productData.setPrincipal(BigDecimal.ZERO);
|
|
||||||
productData.setInArrearsTolerance(BigDecimal.ZERO);
|
|
||||||
|
|
||||||
CurrencyData currency = new CurrencyData("", "", 0, "", "");
|
|
||||||
productData.setCurrency(currency);
|
|
||||||
|
|
||||||
if (productData.getCurrencyOptions().size() == 1) {
|
|
||||||
currency = productData.getCurrencyOptions().get(0);
|
|
||||||
productData.setCurrency(currency);
|
|
||||||
}
|
|
||||||
|
|
||||||
return productData;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class LoanProductMapper implements
|
private static final class LoanProductMapper implements
|
||||||
RowMapper<LoanProductData> {
|
RowMapper<LoanProductData> {
|
||||||
|
|
||||||
public LoanProductMapper() {
|
private final Collection<ChargeData> charges;
|
||||||
|
|
||||||
|
public LoanProductMapper(final Collection<ChargeData> charges) {
|
||||||
|
this.charges = charges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String loanProductSchema() {
|
public String loanProductSchema() {
|
||||||
@@ -170,115 +113,78 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
|
|||||||
public LoanProductData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
public LoanProductData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
|
|
||||||
Long id = rs.getLong("id");
|
final Long id = rs.getLong("id");
|
||||||
String name = rs.getString("name");
|
final String name = rs.getString("name");
|
||||||
String description = rs.getString("description");
|
final String description = rs.getString("description");
|
||||||
|
final Long fundId = JdbcSupport.getLong(rs, "fundId");
|
||||||
|
final String fundName = rs.getString("fundName");
|
||||||
|
final Long transactionStrategyId = JdbcSupport.getLong(rs, "transactionStrategyId");
|
||||||
|
final String transactionStrategyName = rs.getString("transactionStrategyName");
|
||||||
|
|
||||||
Long fundId = JdbcSupport.getLong(rs, "fundId");
|
final String currencyCode = rs.getString("currencyCode");
|
||||||
String fundName = rs.getString("fundName");
|
final String currencyName = rs.getString("currencyName");
|
||||||
|
final String currencyNameCode = rs.getString("currencyNameCode");
|
||||||
|
final String currencyDisplaySymbol = rs.getString("currencyDisplaySymbol");
|
||||||
|
final Integer currencyDigits = JdbcSupport.getInteger(rs, "currencyDigits");
|
||||||
|
|
||||||
Long transactionStrategyId = JdbcSupport.getLong(rs, "transactionStrategyId");
|
final CurrencyData currency = new CurrencyData(currencyCode,
|
||||||
String transactionStrategyName = rs.getString("transactionStrategyName");
|
|
||||||
|
|
||||||
String currencyCode = rs.getString("currencyCode");
|
|
||||||
String currencyName = rs.getString("currencyName");
|
|
||||||
String currencyNameCode = rs.getString("currencyNameCode");
|
|
||||||
String currencyDisplaySymbol = rs
|
|
||||||
.getString("currencyDisplaySymbol");
|
|
||||||
Integer currencyDigits = JdbcSupport.getInteger(rs,
|
|
||||||
"currencyDigits");
|
|
||||||
|
|
||||||
CurrencyData currencyData = new CurrencyData(currencyCode,
|
|
||||||
currencyName, currencyDigits, currencyDisplaySymbol,
|
currencyName, currencyDigits, currencyDisplaySymbol,
|
||||||
currencyNameCode);
|
currencyNameCode);
|
||||||
|
|
||||||
BigDecimal principal = rs.getBigDecimal("principal");
|
final BigDecimal principal = rs.getBigDecimal("principal");
|
||||||
BigDecimal tolerance = rs.getBigDecimal("tolerance");
|
final BigDecimal tolerance = rs.getBigDecimal("tolerance");
|
||||||
|
|
||||||
MoneyData principalMoney = MoneyData.of(currencyData, principal);
|
final Integer numberOfRepayments = JdbcSupport.getInteger(rs,"numberOfRepayments");
|
||||||
MoneyData toleranceMoney = MoneyData.of(currencyData, tolerance);
|
final Integer repaymentEvery = JdbcSupport.getInteger(rs, "repaidEvery");
|
||||||
|
final Integer loanTermFrequency = repaymentEvery * numberOfRepayments;
|
||||||
|
final BigDecimal interestRatePerPeriod = rs.getBigDecimal("interestRatePerPeriod");
|
||||||
|
final BigDecimal annualInterestRate = rs.getBigDecimal("annualInterestRate");
|
||||||
|
|
||||||
Integer numberOfRepayments = JdbcSupport.getInteger(rs,"numberOfRepayments");
|
final int repaymentFrequencyTypeId = JdbcSupport.getInteger(rs, "repaymentPeriodFrequency");
|
||||||
Integer repaymentEvery = JdbcSupport.getInteger(rs, "repaidEvery");
|
final EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(repaymentFrequencyTypeId);
|
||||||
Integer loanTermFrequency = repaymentEvery * numberOfRepayments;
|
|
||||||
BigDecimal interestRatePerPeriod = rs.getBigDecimal("interestRatePerPeriod");
|
|
||||||
BigDecimal annualInterestRate = rs.getBigDecimal("annualInterestRate");
|
|
||||||
|
|
||||||
int repaymentFrequencyTypeId = JdbcSupport.getInteger(rs, "repaymentPeriodFrequency");
|
final EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(repaymentFrequencyTypeId);
|
||||||
EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(repaymentFrequencyTypeId);
|
|
||||||
|
|
||||||
EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(repaymentFrequencyTypeId);
|
final int amortizationTypeId = JdbcSupport.getInteger(rs, "amortizationMethod");
|
||||||
|
final EnumOptionData amortizationType = LoanEnumerations.amortizationType(amortizationTypeId);
|
||||||
|
|
||||||
int amortizationTypeId = JdbcSupport.getInteger(rs,
|
final int interestRateFrequencyTypeId = JdbcSupport.getInteger(rs,"interestRatePerPeriodFreq");
|
||||||
"amortizationMethod");
|
final EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeId);
|
||||||
EnumOptionData amortizationType = LoanEnumerations
|
|
||||||
.amortizationType(amortizationTypeId);
|
|
||||||
|
|
||||||
int interestRateFrequencyTypeId = JdbcSupport.getInteger(rs,"interestRatePerPeriodFreq");
|
final int interestTypeId = JdbcSupport.getInteger(rs, "interestMethod");
|
||||||
EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeId);
|
final EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId);
|
||||||
|
|
||||||
int interestTypeId = JdbcSupport.getInteger(rs, "interestMethod");
|
final int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs,"interestCalculationInPeriodMethod");
|
||||||
EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId);
|
final EnumOptionData interestCalculationPeriodType = LoanEnumerations.interestCalculationPeriodType(interestCalculationPeriodTypeId);
|
||||||
|
|
||||||
int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs,
|
final DateTime createdOn = JdbcSupport.getDateTime(rs, "createdon");
|
||||||
"interestCalculationInPeriodMethod");
|
final DateTime lastModifedOn = JdbcSupport.getDateTime(rs, "modifiedon");
|
||||||
EnumOptionData interestCalculationPeriodType = LoanEnumerations
|
|
||||||
.interestCalculationPeriodType(interestCalculationPeriodTypeId);
|
|
||||||
|
|
||||||
DateTime createdOn = JdbcSupport.getDateTime(rs, "createdon");
|
|
||||||
DateTime lastModifedOn = JdbcSupport.getDateTime(rs, "modifiedon");
|
|
||||||
|
|
||||||
return new LoanProductData(createdOn, lastModifedOn, id, name,
|
return new LoanProductData(createdOn, lastModifedOn, id, name,
|
||||||
description, principalMoney, toleranceMoney,
|
description, currency, principal, tolerance,
|
||||||
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod,
|
numberOfRepayments, loanTermFrequency, repaymentEvery, interestRatePerPeriod,
|
||||||
annualInterestRate, loanTermFrequencyType, repaymentFrequencyType,
|
annualInterestRate, loanTermFrequencyType, repaymentFrequencyType,
|
||||||
interestRateFrequencyType, amortizationType, interestType,
|
interestRateFrequencyType, amortizationType, interestType,
|
||||||
interestCalculationPeriodType, fundId, fundName, transactionStrategyId, transactionStrategyName);
|
interestCalculationPeriodType, fundId, fundName, transactionStrategyId, transactionStrategyName, this.charges);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final class LoanProductLookupMapper implements
|
private static final class LoanProductLookupMapper implements
|
||||||
RowMapper<LoanProductLookup> {
|
RowMapper<LoanProductData> {
|
||||||
|
|
||||||
public String loanProductLookupSchema() {
|
public String loanProductLookupSchema() {
|
||||||
return "lp.id as id, lp.name as name from m_product_loan lp";
|
return "lp.id as id, lp.name as name from m_product_loan lp";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LoanProductLookup mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
public LoanProductData mapRow(final ResultSet rs, @SuppressWarnings("unused") final int rowNum)
|
||||||
throws SQLException {
|
throws SQLException {
|
||||||
|
|
||||||
Long id = rs.getLong("id");
|
final Long id = rs.getLong("id");
|
||||||
String name = rs.getString("name");
|
final String name = rs.getString("name");
|
||||||
|
|
||||||
return new LoanProductLookup(id, name);
|
return LoanProductData.lookup(id, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void populateProductDataWithDropdownOptions(final LoanProductData productData) {
|
|
||||||
|
|
||||||
List<CurrencyData> currencyOptions = currencyReadPlatformService.retrieveAllowedCurrencies();
|
|
||||||
List<EnumOptionData> amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
|
||||||
List<EnumOptionData> interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
|
||||||
List<EnumOptionData> interestCalculationPeriodTypeOptions = dropdownReadPlatformService.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
|
||||||
List<EnumOptionData> loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
|
||||||
List<EnumOptionData> repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
|
||||||
List<EnumOptionData> interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
|
||||||
|
|
||||||
Collection<FundData> fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
|
||||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
|
||||||
|
|
||||||
productData.setCurrencyOptions(currencyOptions);
|
|
||||||
productData.setAmortizationTypeOptions(amortizationTypeOptions);
|
|
||||||
productData.setInterestTypeOptions(interestTypeOptions);
|
|
||||||
productData.setInterestCalculationPeriodTypeOptions(interestCalculationPeriodTypeOptions);
|
|
||||||
productData.setLoanTermFrequencyTypeOptions(loanTermFrequencyTypeOptions);
|
|
||||||
productData.setRepaymentFrequencyTypeOptions(repaymentFrequencyTypeOptions);
|
|
||||||
productData.setInterestRateFrequencyTypeOptions(interestRateFrequencyTypeOptions);
|
|
||||||
productData.setFundOptions(fundOptions);
|
|
||||||
productData.setTransactionProcessingStrategyOptions(transactionProcessingStrategyOptions);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user