MIFOSX-32: continue WIP on abilit to modify loan application.
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package org.mifosng.platform.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.ws.rs.Consumes;
|
||||
@@ -26,24 +28,33 @@ import org.mifosng.platform.api.commands.LoanTransactionCommand;
|
||||
import org.mifosng.platform.api.commands.SubmitLoanApplicationCommand;
|
||||
import org.mifosng.platform.api.commands.UndoStateTransitionCommand;
|
||||
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.EnumOptionData;
|
||||
import org.mifosng.platform.api.data.FundData;
|
||||
import org.mifosng.platform.api.data.LoanAccountData;
|
||||
import org.mifosng.platform.api.data.LoanAccountSummaryData;
|
||||
import org.mifosng.platform.api.data.LoanBasicDetailsData;
|
||||
import org.mifosng.platform.api.data.LoanPermissionData;
|
||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentPeriodData;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentTransactionData;
|
||||
import org.mifosng.platform.api.data.LoanSchedule;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.NewLoanData;
|
||||
import org.mifosng.platform.api.data.TransactionProcessingStrategyData;
|
||||
import org.mifosng.platform.api.infrastructure.ApiDataConversionService;
|
||||
import org.mifosng.platform.api.infrastructure.ApiJsonSerializerService;
|
||||
import org.mifosng.platform.api.infrastructure.ApiParameterHelper;
|
||||
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
||||
import org.mifosng.platform.currency.service.CurrencyReadPlatformService;
|
||||
import org.mifosng.platform.exceptions.UnrecognizedQueryParamException;
|
||||
import org.mifosng.platform.fund.service.FundReadPlatformService;
|
||||
import org.mifosng.platform.loan.service.CalculationPlatformService;
|
||||
import org.mifosng.platform.loan.service.LoanReadPlatformService;
|
||||
import org.mifosng.platform.loan.service.LoanWritePlatformService;
|
||||
import org.mifosng.platform.loanproduct.service.LoanDropdownReadPlatformService;
|
||||
import org.mifosng.platform.loanproduct.service.LoanProductReadPlatformService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -58,7 +69,16 @@ public class LoansApiResource {
|
||||
|
||||
@Autowired
|
||||
private LoanWritePlatformService loanWritePlatformService;
|
||||
|
||||
@Autowired
|
||||
private LoanProductReadPlatformService loanProductReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private LoanDropdownReadPlatformService dropdownReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private FundReadPlatformService fundReadPlatformService;
|
||||
|
||||
@Autowired
|
||||
private ChargeReadPlatformService chargeReadPlatformService;
|
||||
|
||||
@@ -70,7 +90,7 @@ public class LoansApiResource {
|
||||
|
||||
@Autowired
|
||||
private ApiJsonSerializerService apiJsonSerializerService;
|
||||
|
||||
|
||||
@GET
|
||||
@Path("template")
|
||||
@Consumes({ MediaType.APPLICATION_JSON })
|
||||
@@ -110,7 +130,7 @@ public class LoansApiResource {
|
||||
"repaymentFrequencyType", "interestRateFrequencyType", "amortizationType", "interestType", "interestCalculationPeriodType",
|
||||
"submittedOnDate", "approvedOnDate", "expectedDisbursementDate", "actualDisbursementDate",
|
||||
"expectedFirstRepaymentOnDate", "interestChargedFromDate", "closedOnDate", "expectedMaturityDate",
|
||||
"lifeCycleStatusId", "lifeCycleStatusText", "lifeCycleStatusDate")
|
||||
"status", "lifeCycleStatusDate")
|
||||
);
|
||||
|
||||
Set<String> responseParameters = ApiParameterHelper.extractFieldsForResponseIfProvided(uriInfo.getQueryParameters());
|
||||
@@ -138,15 +158,47 @@ public class LoansApiResource {
|
||||
loanRepayments = this.loanReadPlatformService.retrieveLoanPayments(loanId);
|
||||
repaymentSchedule = this.loanReadPlatformService.retrieveRepaymentSchedule(loanId);
|
||||
|
||||
summary = this.loanReadPlatformService.retrieveSummary(loanBasicDetails.getPrincipal(), repaymentSchedule, loanRepayments);
|
||||
summary = this.loanReadPlatformService.retrieveSummary(loanBasicDetails.getCurrency(), repaymentSchedule, loanRepayments);
|
||||
|
||||
boolean isWaiveAllowed = summary.isWaiveAllowed(loanBasicDetails.getInArrearsTolerance());
|
||||
boolean isWaiveAllowed = summary.isWaiveAllowed(loanBasicDetails.getCurrency(), loanBasicDetails.getInArrearsTolerance());
|
||||
permissions = this.loanReadPlatformService.retrieveLoanPermissions(loanBasicDetails, isWaiveAllowed, loanRepayments.size());
|
||||
|
||||
charges = this.chargeReadPlatformService.retrieveLoanCharges(loanId);
|
||||
}
|
||||
|
||||
LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, summary, repaymentSchedule, loanRepayments, permissions, charges);
|
||||
Collection<LoanProductLookup> productOptions = new ArrayList<LoanProductLookup>();
|
||||
List<EnumOptionData> loanTermFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
List<EnumOptionData> repaymentFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions = new ArrayList<TransactionProcessingStrategyData>();
|
||||
|
||||
List<EnumOptionData> interestRateFrequencyTypeOptions = new ArrayList<EnumOptionData>();
|
||||
List<EnumOptionData> amortizationTypeOptions = new ArrayList<EnumOptionData>();
|
||||
List<EnumOptionData> interestTypeOptions = new ArrayList<EnumOptionData>();
|
||||
List<EnumOptionData> interestCalculationPeriodTypeOptions = new ArrayList<EnumOptionData>();
|
||||
Collection<FundData> fundOptions = new ArrayList<FundData>();
|
||||
|
||||
final boolean template = ApiParameterHelper.template(uriInfo.getQueryParameters());
|
||||
if(template) {
|
||||
responseParameters.addAll(Arrays.asList("productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
||||
|
||||
productOptions = this.loanProductReadPlatformService.retrieveAllLoanProductsForLookup();
|
||||
loanTermFrequencyTypeOptions = dropdownReadPlatformService.retrieveLoanTermFrequencyTypeOptions();
|
||||
repaymentFrequencyTypeOptions = dropdownReadPlatformService.retrieveRepaymentFrequencyTypeOptions();
|
||||
interestRateFrequencyTypeOptions = dropdownReadPlatformService.retrieveInterestRateFrequencyTypeOptions();
|
||||
|
||||
amortizationTypeOptions = dropdownReadPlatformService.retrieveLoanAmortizationTypeOptions();
|
||||
interestTypeOptions = dropdownReadPlatformService.retrieveLoanInterestTypeOptions();
|
||||
interestCalculationPeriodTypeOptions = dropdownReadPlatformService.retrieveLoanInterestRateCalculatedInPeriodOptions();
|
||||
|
||||
fundOptions = this.fundReadPlatformService.retrieveAllFunds();
|
||||
transactionProcessingStrategyOptions = this.dropdownReadPlatformService.retreiveTransactionProcessingStrategies();
|
||||
}
|
||||
|
||||
LoanAccountData loanAccount = new LoanAccountData(loanBasicDetails, summary, repaymentSchedule, loanRepayments, permissions, charges,
|
||||
productOptions, loanTermFrequencyTypeOptions, repaymentFrequencyTypeOptions,
|
||||
transactionProcessingStrategyOptions, interestRateFrequencyTypeOptions,
|
||||
fundOptions);
|
||||
|
||||
return this.apiJsonSerializerService.serialzieLoanAccountDataToJson(prettyPrint, responseParameters, loanAccount);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,10 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
public class EnumOptionData {
|
||||
|
||||
public class EnumOptionData implements Serializable {
|
||||
|
||||
private Long id;
|
||||
private String code;
|
||||
private String value;
|
||||
|
||||
protected EnumOptionData() {
|
||||
//
|
||||
}
|
||||
private final Long id;
|
||||
private final String code;
|
||||
private final String value;
|
||||
|
||||
public EnumOptionData(final Long id, final String code, final String value) {
|
||||
this.id = id;
|
||||
@@ -19,26 +13,14 @@ public class EnumOptionData implements Serializable {
|
||||
}
|
||||
|
||||
public Long getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void setId(final Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return this.value;
|
||||
}
|
||||
|
||||
public void setValue(final String value) {
|
||||
this.value = value;
|
||||
return id;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
+102
-46
@@ -2,6 +2,7 @@ package org.mifosng.platform.api.data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
|
||||
@@ -17,45 +18,54 @@ public class LoanAccountData {
|
||||
private final Long loanProductId;
|
||||
private final String loanProductName;
|
||||
private final String loanProductDescription;
|
||||
private final Integer lifeCycleStatusId;
|
||||
private final String lifeCycleStatusText;
|
||||
private final LocalDate lifeCycleStatusDate;
|
||||
|
||||
private final EnumOptionData status;
|
||||
private final Long fundId;
|
||||
private final String fundName;
|
||||
|
||||
private final CurrencyData currency;
|
||||
private final BigDecimal principal;
|
||||
private final BigDecimal inArrearsTolerance;
|
||||
|
||||
private final Integer termFrequency;
|
||||
private final EnumOptionData termPeriodFrequencyType;
|
||||
private final Integer numberOfRepayments;
|
||||
private final Integer repaymentEvery;
|
||||
private final EnumOptionData repaymentFrequencyType;
|
||||
private final Integer transactionStrategyId;
|
||||
private final EnumOptionData amortizationType;
|
||||
private final BigDecimal interestRatePerPeriod;
|
||||
private final EnumOptionData interestRateFrequencyType;
|
||||
private final BigDecimal annualInterestRate;
|
||||
private final EnumOptionData interestType;
|
||||
private final EnumOptionData interestCalculationPeriodType;
|
||||
|
||||
private Collection<ChargeData> charges;
|
||||
|
||||
private final LocalDate submittedOnDate;
|
||||
private final LocalDate approvedOnDate;
|
||||
private final LocalDate expectedDisbursementDate;
|
||||
private final LocalDate actualDisbursementDate;
|
||||
private final LocalDate expectedFirstRepaymentOnDate;
|
||||
private final LocalDate repaymentsStartingFromDate;
|
||||
private final LocalDate interestChargedFromDate;
|
||||
private final LocalDate closedOnDate;
|
||||
private final LocalDate expectedMaturityDate;
|
||||
|
||||
private final CurrencyData currency;
|
||||
private final MoneyData principal;
|
||||
private final MoneyData inArrearsTolerance;
|
||||
|
||||
private final Integer numberOfRepayments;
|
||||
private final Integer repaymentEvery;
|
||||
private final BigDecimal interestRatePerPeriod;
|
||||
private final BigDecimal annualInterestRate;
|
||||
|
||||
private final EnumOptionData repaymentFrequencyType;
|
||||
private final EnumOptionData interestRateFrequencyType;
|
||||
private final EnumOptionData amortizationType;
|
||||
private final EnumOptionData interestType;
|
||||
private final EnumOptionData interestCalculationPeriodType;
|
||||
|
||||
private final LocalDate lifeCycleStatusDate;
|
||||
|
||||
// template
|
||||
private final Collection<LoanProductLookup> productOptions;
|
||||
private final List<EnumOptionData> termFrequencyTypeOptions;
|
||||
private final List<EnumOptionData> repaymentFrequencyTypeOptions;
|
||||
private final Collection<TransactionProcessingStrategyData> repaymentStrategyOptions;
|
||||
private final Collection<FundData> fundOptions;
|
||||
|
||||
// associations
|
||||
private final LoanAccountSummaryData summary;
|
||||
private final Collection<LoanRepaymentPeriodData> repaymentSchedule;
|
||||
private final Collection<LoanRepaymentTransactionData> loanRepayments;
|
||||
|
||||
private final LoanPermissionData permissions;
|
||||
|
||||
private final LoanConvenienceData convenienceData;
|
||||
private Collection<ChargeData> charges;
|
||||
private final List<EnumOptionData> interestRateFrequencyTypeOptions;
|
||||
|
||||
|
||||
public LoanAccountData(
|
||||
final LoanBasicDetailsData basicDetails,
|
||||
@@ -63,12 +73,24 @@ public class LoanAccountData {
|
||||
final Collection<LoanRepaymentPeriodData> repaymentSchedule,
|
||||
final Collection<LoanRepaymentTransactionData> loanRepayments,
|
||||
final LoanPermissionData permissions,
|
||||
final Collection<ChargeData> charges) {
|
||||
final Collection<ChargeData> charges,
|
||||
final Collection<LoanProductLookup> productOptions,
|
||||
final List<EnumOptionData> termFrequencyTypeOptions,
|
||||
final List<EnumOptionData> repaymentFrequencyTypeOptions,
|
||||
final Collection<TransactionProcessingStrategyData> transactionProcessingStrategyOptions,
|
||||
final List<EnumOptionData> interestRateFrequencyTypeOptions,
|
||||
final Collection<FundData> fundOptions) {
|
||||
this.summary = summary;
|
||||
this.repaymentSchedule = repaymentSchedule;
|
||||
this.loanRepayments = loanRepayments;
|
||||
this.permissions = permissions;
|
||||
this.charges = charges;
|
||||
this.productOptions = productOptions;
|
||||
this.termFrequencyTypeOptions = termFrequencyTypeOptions;
|
||||
this.repaymentFrequencyTypeOptions = repaymentFrequencyTypeOptions;
|
||||
this.repaymentStrategyOptions = transactionProcessingStrategyOptions;
|
||||
this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions;
|
||||
this.fundOptions = fundOptions;
|
||||
|
||||
int maxSubmittedOnOffsetFromToday = basicDetails
|
||||
.getMaxSubmittedOnOffsetFromToday();
|
||||
@@ -104,16 +126,18 @@ public class LoanAccountData {
|
||||
this.actualDisbursementDate = basicDetails.getActualDisbursementDate();
|
||||
this.closedOnDate = basicDetails.getClosedOnDate();
|
||||
this.expectedMaturityDate = basicDetails.getExpectedMaturityDate();
|
||||
this.expectedFirstRepaymentOnDate = basicDetails
|
||||
.getExpectedFirstRepaymentOnDate();
|
||||
this.interestChargedFromDate = basicDetails
|
||||
.getInterestChargedFromDate();
|
||||
this.repaymentsStartingFromDate = basicDetails.getExpectedFirstRepaymentOnDate();
|
||||
this.interestChargedFromDate = basicDetails.getInterestChargedFromDate();
|
||||
|
||||
this.currency = basicDetails.getCurrency();
|
||||
this.principal = basicDetails.getPrincipal();
|
||||
this.inArrearsTolerance = basicDetails.getInArrearsTolerance();
|
||||
|
||||
this.termFrequency = basicDetails.getTermFrequency();
|
||||
this.termPeriodFrequencyType = basicDetails.getTermPeriodFrequencyType();
|
||||
this.numberOfRepayments = basicDetails.getNumberOfRepayments();
|
||||
this.repaymentEvery = basicDetails.getRepaymentEvery();
|
||||
this.transactionStrategyId = basicDetails.getTransactionStrategyId();
|
||||
this.interestRatePerPeriod = basicDetails.getInterestRatePerPeriod();
|
||||
this.annualInterestRate = basicDetails.getAnnualInterestRate();
|
||||
this.repaymentFrequencyType = basicDetails.getRepaymentFrequencyType();
|
||||
@@ -123,8 +147,8 @@ public class LoanAccountData {
|
||||
this.interestType = basicDetails.getInterestType();
|
||||
this.interestCalculationPeriodType = basicDetails
|
||||
.getInterestCalculationPeriodType();
|
||||
this.lifeCycleStatusText = basicDetails.getLifeCycleStatusText();
|
||||
this.lifeCycleStatusId = basicDetails.getLifeCycleStatusId();
|
||||
|
||||
this.status = basicDetails.getStatus();
|
||||
this.lifeCycleStatusDate = basicDetails.getLifeCycleStatusDate();
|
||||
}
|
||||
|
||||
@@ -155,6 +179,10 @@ public class LoanAccountData {
|
||||
public String getLoanProductDescription() {
|
||||
return loanProductDescription;
|
||||
}
|
||||
|
||||
public EnumOptionData getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public Long getFundId() {
|
||||
return fundId;
|
||||
@@ -179,9 +207,9 @@ public class LoanAccountData {
|
||||
public LocalDate getActualDisbursementDate() {
|
||||
return actualDisbursementDate;
|
||||
}
|
||||
|
||||
public LocalDate getExpectedFirstRepaymentOnDate() {
|
||||
return expectedFirstRepaymentOnDate;
|
||||
|
||||
public LocalDate getRepaymentsStartingFromDate() {
|
||||
return repaymentsStartingFromDate;
|
||||
}
|
||||
|
||||
public LocalDate getInterestChargedFromDate() {
|
||||
@@ -200,12 +228,20 @@ public class LoanAccountData {
|
||||
return currency;
|
||||
}
|
||||
|
||||
public MoneyData getPrincipal() {
|
||||
return principal;
|
||||
public BigDecimal getPrincipal() {
|
||||
return this.principal;
|
||||
}
|
||||
|
||||
public MoneyData getInArrearsTolerance() {
|
||||
return inArrearsTolerance;
|
||||
public BigDecimal getInArrearsTolerance() {
|
||||
return this.inArrearsTolerance;
|
||||
}
|
||||
|
||||
public Integer getTermFrequency() {
|
||||
return termFrequency;
|
||||
}
|
||||
|
||||
public EnumOptionData getTermPeriodFrequencyType() {
|
||||
return termPeriodFrequencyType;
|
||||
}
|
||||
|
||||
public Integer getNumberOfRepayments() {
|
||||
@@ -215,6 +251,10 @@ public class LoanAccountData {
|
||||
public Integer getRepaymentEvery() {
|
||||
return repaymentEvery;
|
||||
}
|
||||
|
||||
public Integer getTransactionStrategyId() {
|
||||
return transactionStrategyId;
|
||||
}
|
||||
|
||||
public BigDecimal getInterestRatePerPeriod() {
|
||||
return interestRatePerPeriod;
|
||||
@@ -244,14 +284,6 @@ public class LoanAccountData {
|
||||
return interestCalculationPeriodType;
|
||||
}
|
||||
|
||||
public Integer getLifeCycleStatusId() {
|
||||
return lifeCycleStatusId;
|
||||
}
|
||||
|
||||
public String getLifeCycleStatusText() {
|
||||
return lifeCycleStatusText;
|
||||
}
|
||||
|
||||
public LocalDate getLifeCycleStatusDate() {
|
||||
return lifeCycleStatusDate;
|
||||
}
|
||||
@@ -283,4 +315,28 @@ public class LoanAccountData {
|
||||
public void setCharges(Collection<ChargeData> charges) {
|
||||
this.charges = charges;
|
||||
}
|
||||
|
||||
public Collection<LoanProductLookup> getProductOptions() {
|
||||
return productOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getTermFrequencyTypeOptions() {
|
||||
return termFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getRepaymentFrequencyTypeOptions() {
|
||||
return repaymentFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public Collection<TransactionProcessingStrategyData> getRepaymentStrategyOptions() {
|
||||
return repaymentStrategyOptions;
|
||||
}
|
||||
|
||||
public List<EnumOptionData> getInterestRateFrequencyTypeOptions() {
|
||||
return interestRateFrequencyTypeOptions;
|
||||
}
|
||||
|
||||
public Collection<FundData> getFundOptions() {
|
||||
return fundOptions;
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -1,5 +1,7 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
public class LoanAccountSummaryData {
|
||||
|
||||
private MoneyData originalPrincipal;
|
||||
@@ -46,7 +48,8 @@ public class LoanAccountSummaryData {
|
||||
this.totalInArrears = totalInArrears;
|
||||
}
|
||||
|
||||
public boolean isWaiveAllowed(MoneyData tolerance) {
|
||||
public boolean isWaiveAllowed(final CurrencyData currency, final BigDecimal toleranceAmount) {
|
||||
MoneyData tolerance = MoneyData.of(currency, toleranceAmount);
|
||||
return this.totalOutstanding.isGreaterThanZero() && (tolerance.isGreaterThan(this.totalOutstanding) || tolerance.isEqualTo(this.totalOutstanding));
|
||||
}
|
||||
|
||||
|
||||
+35
-21
@@ -18,6 +18,7 @@ public class LoanBasicDetailsData {
|
||||
private final String loanProductDescription;
|
||||
private final Long fundId;
|
||||
private final String fundName;
|
||||
private final EnumOptionData status;
|
||||
|
||||
private final LocalDate submittedOnDate;
|
||||
private final LocalDate approvedOnDate;
|
||||
@@ -29,11 +30,14 @@ public class LoanBasicDetailsData {
|
||||
private final LocalDate expectedMaturityDate;
|
||||
|
||||
private final CurrencyData currency;
|
||||
private final MoneyData principal;
|
||||
private final MoneyData inArrearsTolerance;
|
||||
private final BigDecimal principal;
|
||||
private final BigDecimal inArrearsTolerance;
|
||||
|
||||
private final Integer termFrequency;
|
||||
private final EnumOptionData termPeriodFrequencyType;
|
||||
private final Integer numberOfRepayments;
|
||||
private final Integer repaymentEvery;
|
||||
private final Integer transactionStrategyId;
|
||||
private final BigDecimal interestRatePerPeriod;
|
||||
private final BigDecimal annualInterestRate;
|
||||
|
||||
@@ -43,8 +47,6 @@ public class LoanBasicDetailsData {
|
||||
private final EnumOptionData interestType;
|
||||
private final EnumOptionData interestCalculationPeriodType;
|
||||
|
||||
private final Integer lifeCycleStatusId;
|
||||
private final String lifeCycleStatusText;
|
||||
private final LocalDate lifeCycleStatusDate;
|
||||
|
||||
public LoanBasicDetailsData(
|
||||
@@ -64,8 +66,8 @@ public class LoanBasicDetailsData {
|
||||
final LocalDate expectedFirstRepaymentOnDate,
|
||||
final LocalDate interestChargedFromDate,
|
||||
final CurrencyData currency,
|
||||
final MoneyData principal,
|
||||
final MoneyData inArrearsTolerance,
|
||||
final BigDecimal principal,
|
||||
final BigDecimal inArrearsTolerance,
|
||||
final Integer numberOfRepayments,
|
||||
final Integer repaymentEvery,
|
||||
final BigDecimal interestRatePerPeriod,
|
||||
@@ -75,9 +77,11 @@ public class LoanBasicDetailsData {
|
||||
final EnumOptionData amortizationType,
|
||||
final EnumOptionData interestType,
|
||||
final EnumOptionData interestCalculationPeriodType,
|
||||
final Integer lifeCycleStatusId,
|
||||
final String lifeCycleStatusText,
|
||||
final LocalDate lifeCycleStatusDate) {
|
||||
final EnumOptionData status,
|
||||
final LocalDate lifeCycleStatusDate,
|
||||
final Integer termFrequency,
|
||||
final EnumOptionData termPeriodFrequencyType,
|
||||
final Integer transactionStrategyId) {
|
||||
this.id = id;
|
||||
this.externalId = externalId;
|
||||
this.clientId = clientId;
|
||||
@@ -107,9 +111,11 @@ public class LoanBasicDetailsData {
|
||||
this.amortizationType = amortizationType;
|
||||
this.interestType = interestType;
|
||||
this.interestCalculationPeriodType = interestCalculationPeriodType;
|
||||
this.lifeCycleStatusId = lifeCycleStatusId;
|
||||
this.lifeCycleStatusText = lifeCycleStatusText;
|
||||
this.status = status;
|
||||
this.lifeCycleStatusDate = lifeCycleStatusDate;
|
||||
this.termFrequency = termFrequency;
|
||||
this.termPeriodFrequencyType = termPeriodFrequencyType;
|
||||
this.transactionStrategyId = transactionStrategyId;
|
||||
}
|
||||
|
||||
public int getMaxSubmittedOnOffsetFromToday() {
|
||||
@@ -236,6 +242,18 @@ public class LoanBasicDetailsData {
|
||||
public String getLoanProductDescription() {
|
||||
return loanProductDescription;
|
||||
}
|
||||
|
||||
public EnumOptionData getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public Integer getTermFrequency() {
|
||||
return termFrequency;
|
||||
}
|
||||
|
||||
public EnumOptionData getTermPeriodFrequencyType() {
|
||||
return termPeriodFrequencyType;
|
||||
}
|
||||
|
||||
public LocalDate getSubmittedOnDate() {
|
||||
return submittedOnDate;
|
||||
@@ -273,11 +291,11 @@ public class LoanBasicDetailsData {
|
||||
return currency;
|
||||
}
|
||||
|
||||
public MoneyData getPrincipal() {
|
||||
public BigDecimal getPrincipal() {
|
||||
return principal;
|
||||
}
|
||||
|
||||
public MoneyData getInArrearsTolerance() {
|
||||
public BigDecimal getInArrearsTolerance() {
|
||||
return inArrearsTolerance;
|
||||
}
|
||||
|
||||
@@ -317,15 +335,11 @@ public class LoanBasicDetailsData {
|
||||
return interestCalculationPeriodType;
|
||||
}
|
||||
|
||||
public Integer getLifeCycleStatusId() {
|
||||
return lifeCycleStatusId;
|
||||
}
|
||||
|
||||
public String getLifeCycleStatusText() {
|
||||
return lifeCycleStatusText;
|
||||
}
|
||||
|
||||
public LocalDate getLifeCycleStatusDate() {
|
||||
return lifeCycleStatusDate;
|
||||
}
|
||||
|
||||
public Integer getTransactionStrategyId() {
|
||||
return transactionStrategyId;
|
||||
}
|
||||
}
|
||||
+10
-18
@@ -1,17 +1,17 @@
|
||||
package org.mifosng.platform.api.data;
|
||||
|
||||
import java.io.Serializable;
|
||||
/**
|
||||
* 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 {
|
||||
|
||||
public class LoanProductLookup implements Serializable {
|
||||
private final Long id;
|
||||
private final String name;
|
||||
|
||||
private Long id;
|
||||
private String name;
|
||||
|
||||
public LoanProductLookup() {
|
||||
//
|
||||
}
|
||||
|
||||
public LoanProductLookup(Long id, String name) {
|
||||
public LoanProductLookup(final Long id, final String name) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
}
|
||||
@@ -20,15 +20,7 @@ public class LoanProductLookup implements Serializable {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(Long id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
+4
-2
@@ -151,9 +151,11 @@ public class GoogleGsonApiJsonSerializerService implements
|
||||
"expectedDisbursementDate", "actualDisbursementDate",
|
||||
"expectedFirstRepaymentOnDate", "interestChargedFromDate",
|
||||
"closedOnDate", "expectedMaturityDate",
|
||||
"lifeCycleStatusId", "lifeCycleStatusText",
|
||||
"status",
|
||||
"lifeCycleStatusDate", "summary", "repaymentSchedule",
|
||||
"loanRepayments", "permissions", "convenienceData", "charges"));
|
||||
"loanRepayments", "permissions", "convenienceData", "charges",
|
||||
"productOptions", "amortizationTypeOptions", "interestTypeOptions", "interestCalculationPeriodTypeOptions",
|
||||
"repaymentFrequencyTypeOptions", "interestRateFrequencyTypeOptions", "fundOptions", "transactionProcessingStrategyOptions", "chargeOptions"));
|
||||
|
||||
private static final Set<String> LOAN_TRANSACTION_DATA_PARAMETERS = new HashSet<String>(
|
||||
Arrays.asList("id", "transactionType", "date", "principal",
|
||||
|
||||
+3
-3
@@ -2,13 +2,13 @@ package org.mifosng.platform.loan.service;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import org.mifosng.platform.api.data.CurrencyData;
|
||||
import org.mifosng.platform.api.data.LoanAccountSummaryData;
|
||||
import org.mifosng.platform.api.data.LoanBasicDetailsData;
|
||||
import org.mifosng.platform.api.data.LoanPermissionData;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentPeriodData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentTransactionData;
|
||||
import org.mifosng.platform.api.data.MoneyData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.NewLoanData;
|
||||
|
||||
public interface LoanReadPlatformService {
|
||||
@@ -19,7 +19,7 @@ public interface LoanReadPlatformService {
|
||||
|
||||
Collection<LoanRepaymentTransactionData> retrieveLoanPayments(Long loanId);
|
||||
|
||||
LoanAccountSummaryData retrieveSummary(MoneyData principal,
|
||||
LoanAccountSummaryData retrieveSummary(CurrencyData currency,
|
||||
Collection<LoanRepaymentPeriodData> repaymentSchedule,
|
||||
Collection<LoanRepaymentTransactionData> loanRepayments);
|
||||
|
||||
|
||||
+41
-53
@@ -17,8 +17,8 @@ import org.mifosng.platform.api.data.LoanPermissionData;
|
||||
import org.mifosng.platform.api.data.LoanProductData;
|
||||
import org.mifosng.platform.api.data.LoanProductLookup;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentPeriodData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.LoanRepaymentTransactionData;
|
||||
import org.mifosng.platform.api.data.LoanTransactionData;
|
||||
import org.mifosng.platform.api.data.MoneyData;
|
||||
import org.mifosng.platform.api.data.NewLoanData;
|
||||
import org.mifosng.platform.charge.service.ChargeReadPlatformService;
|
||||
@@ -33,7 +33,6 @@ import org.mifosng.platform.infrastructure.JdbcSupport;
|
||||
import org.mifosng.platform.infrastructure.TenantAwareRoutingDataSource;
|
||||
import org.mifosng.platform.loan.domain.Loan;
|
||||
import org.mifosng.platform.loan.domain.LoanRepository;
|
||||
import org.mifosng.platform.loan.domain.LoanStatus;
|
||||
import org.mifosng.platform.loan.domain.LoanTransaction;
|
||||
import org.mifosng.platform.loan.domain.LoanTransactionRepository;
|
||||
import org.mifosng.platform.loan.domain.LoanTransactionType;
|
||||
@@ -114,14 +113,10 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoanAccountSummaryData retrieveSummary(MoneyData principal,
|
||||
Collection<LoanRepaymentPeriodData> repaymentSchedule,
|
||||
Collection<LoanRepaymentTransactionData> loanRepayments) {
|
||||
|
||||
CurrencyData currencyData = new CurrencyData(
|
||||
principal.getCurrencyCode(), principal.getDefaultName(),
|
||||
principal.getDigitsAfterDecimal(),
|
||||
principal.getDisplaySymbol(), principal.getNameCode());
|
||||
public LoanAccountSummaryData retrieveSummary(
|
||||
final CurrencyData currencyData,
|
||||
final Collection<LoanRepaymentPeriodData> repaymentSchedule,
|
||||
final Collection<LoanRepaymentTransactionData> loanRepayments) {
|
||||
|
||||
BigDecimal originalPrincipal = BigDecimal.ZERO;
|
||||
BigDecimal principalPaid = BigDecimal.ZERO;
|
||||
@@ -214,11 +209,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
LoanBasicDetailsData loanBasicDetails, boolean isWaiverAllowed,
|
||||
int repaymentAndWaiveCount) {
|
||||
|
||||
boolean pendingApproval = (loanBasicDetails.getLifeCycleStatusId()
|
||||
.equals(100));
|
||||
boolean waitingForDisbursal = (loanBasicDetails.getLifeCycleStatusId()
|
||||
.equals(200));
|
||||
boolean isActive = (loanBasicDetails.getLifeCycleStatusId().equals(300));
|
||||
boolean pendingApproval = (loanBasicDetails.getStatus().getId().equals(100L));
|
||||
boolean waitingForDisbursal = (loanBasicDetails.getStatus().getId().equals(200L));
|
||||
boolean isActive = (loanBasicDetails.getStatus().getId().equals(300L));
|
||||
|
||||
boolean waiveAllowed = isWaiverAllowed && isActive;
|
||||
boolean makeRepaymentAllowed = isActive;
|
||||
@@ -421,8 +414,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
+ " l.principal_amount as principal, l.arrearstolerance_amount as inArrearsTolerance, l.number_of_repayments as numberOfRepayments, l.repay_every as repaymentEvery,"
|
||||
+ " l.nominal_interest_rate_per_period as interestRatePerPeriod, l.annual_nominal_interest_rate as annualInterestRate, "
|
||||
+ " l.repayment_period_frequency_enum as repaymentFrequencyType, l.interest_period_frequency_enum as interestRateFrequencyType, "
|
||||
+ " l.term_frequency as termFrequency, l.term_period_frequency_enum as termPeriodFrequencyType, "
|
||||
+ " l.amortization_method_enum as amortizationType, l.interest_method_enum as interestType, l.interest_calculated_in_period_enum as interestCalculationPeriodType,"
|
||||
+ " l.loan_status_id as lifeCycleStatusId, "
|
||||
+ " l.loan_status_id as lifeCycleStatusId, l.loan_transaction_strategy_id as transactionStrategyId, "
|
||||
+ " l.currency_code as currencyCode, l.currency_digits as currencyDigits, rc.`name` as currencyName, rc.display_symbol as currencyDisplaySymbol, rc.internationalized_name_code as currencyNameCode"
|
||||
+ " from m_loan l"
|
||||
+ " join m_client c on c.id = l.client_id"
|
||||
@@ -471,45 +465,37 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
LocalDate expectedMaturityDate = JdbcSupport.getLocalDate(rs,
|
||||
"expectedMaturityDate");
|
||||
|
||||
BigDecimal principalBD = rs.getBigDecimal("principal");
|
||||
MoneyData principal = MoneyData.of(currencyData, principalBD);
|
||||
BigDecimal inArrearsToleranceBD = rs
|
||||
.getBigDecimal("inArrearsTolerance");
|
||||
MoneyData inArrearsTolerance = MoneyData.of(currencyData,
|
||||
inArrearsToleranceBD);
|
||||
BigDecimal principal = rs.getBigDecimal("principal");
|
||||
BigDecimal inArrearsTolerance = rs.getBigDecimal("inArrearsTolerance");
|
||||
|
||||
Integer numberOfRepayments = JdbcSupport.getInteger(rs,
|
||||
"numberOfRepayments");
|
||||
Integer repaymentEvery = JdbcSupport.getInteger(rs,
|
||||
"repaymentEvery");
|
||||
BigDecimal interestRatePerPeriod = rs
|
||||
.getBigDecimal("interestRatePerPeriod");
|
||||
BigDecimal annualInterestRate = rs
|
||||
.getBigDecimal("annualInterestRate");
|
||||
Integer numberOfRepayments = JdbcSupport.getInteger(rs,"numberOfRepayments");
|
||||
Integer repaymentEvery = JdbcSupport.getInteger(rs,"repaymentEvery");
|
||||
BigDecimal interestRatePerPeriod = rs.getBigDecimal("interestRatePerPeriod");
|
||||
BigDecimal annualInterestRate = rs.getBigDecimal("annualInterestRate");
|
||||
|
||||
int repaymentFrequencyTypeInt = JdbcSupport.getInteger(rs,
|
||||
"repaymentFrequencyType");
|
||||
int interestRateFrequencyTypeInt = JdbcSupport.getInteger(rs,
|
||||
"interestRateFrequencyType");
|
||||
int amortizationTypeInt = JdbcSupport.getInteger(rs,
|
||||
"amortizationType");
|
||||
Integer termFrequency = JdbcSupport.getInteger(rs,"termFrequency");
|
||||
Integer termPeriodFrequencyTypeInt = JdbcSupport.getInteger(rs,"termPeriodFrequencyType");
|
||||
EnumOptionData termPeriodFrequencyType = LoanEnumerations.termFrequencyType(termPeriodFrequencyTypeInt);
|
||||
|
||||
int repaymentFrequencyTypeInt = JdbcSupport.getInteger(rs,"repaymentFrequencyType");
|
||||
EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(repaymentFrequencyTypeInt);
|
||||
|
||||
int interestRateFrequencyTypeInt = JdbcSupport.getInteger(rs,"interestRateFrequencyType");
|
||||
EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeInt);
|
||||
|
||||
Integer transactionStrategyId = JdbcSupport.getInteger(rs,"transactionStrategyId");
|
||||
|
||||
int amortizationTypeInt = JdbcSupport.getInteger(rs,"amortizationType");
|
||||
int interestTypeInt = JdbcSupport.getInteger(rs, "interestType");
|
||||
int interestCalculationPeriodTypeInt = JdbcSupport.getInteger(rs,
|
||||
"interestCalculationPeriodType");
|
||||
EnumOptionData repaymentFrequencyType = LoanEnumerations
|
||||
.repaymentFrequencyType(repaymentFrequencyTypeInt);
|
||||
EnumOptionData interestRateFrequencyType = LoanEnumerations
|
||||
.interestRateFrequencyType(interestRateFrequencyTypeInt);
|
||||
EnumOptionData amortizationType = LoanEnumerations
|
||||
.amortizationType(amortizationTypeInt);
|
||||
EnumOptionData interestType = LoanEnumerations
|
||||
.interestType(interestTypeInt);
|
||||
EnumOptionData interestCalculationPeriodType = LoanEnumerations
|
||||
.interestCalculationPeriodType(interestCalculationPeriodTypeInt);
|
||||
int interestCalculationPeriodTypeInt = JdbcSupport.getInteger(rs,"interestCalculationPeriodType");
|
||||
|
||||
EnumOptionData amortizationType = LoanEnumerations.amortizationType(amortizationTypeInt);
|
||||
EnumOptionData interestType = LoanEnumerations.interestType(interestTypeInt);
|
||||
EnumOptionData interestCalculationPeriodType = LoanEnumerations.interestCalculationPeriodType(interestCalculationPeriodTypeInt);
|
||||
|
||||
Integer lifeCycleStatusId = JdbcSupport.getInteger(rs, "lifeCycleStatusId");
|
||||
String lifeCycleStatusText = LoanStatus.fromInt(lifeCycleStatusId).getCode();
|
||||
|
||||
EnumOptionData status = LoanEnumerations.status(lifeCycleStatusId);
|
||||
|
||||
LocalDate lifeCycleStatusDate = submittedOnDate;
|
||||
if (approvedOnDate != null) {
|
||||
lifeCycleStatusDate = approvedOnDate;
|
||||
@@ -523,7 +509,8 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
|
||||
return new LoanBasicDetailsData(id, externalId, clientId, clientName,
|
||||
loanProductId, loanProductName, loanProductDescription,
|
||||
fundId, fundName, closedOnDate,
|
||||
fundId, fundName,
|
||||
closedOnDate,
|
||||
submittedOnDate, approvedOnDate, expectedDisbursementDate,
|
||||
actualDisbursementDate, expectedMaturityDate,
|
||||
expectedFirstRepaymentOnDate, interestChargedFromDate,
|
||||
@@ -532,8 +519,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
|
||||
repaymentEvery, interestRatePerPeriod, annualInterestRate,
|
||||
repaymentFrequencyType, interestRateFrequencyType,
|
||||
amortizationType, interestType,
|
||||
interestCalculationPeriodType, lifeCycleStatusId,
|
||||
lifeCycleStatusText, lifeCycleStatusDate);
|
||||
interestCalculationPeriodType,
|
||||
status,
|
||||
lifeCycleStatusDate, termFrequency, termPeriodFrequencyType, transactionStrategyId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+62
-2
@@ -4,6 +4,7 @@ import org.mifosng.platform.api.data.EnumOptionData;
|
||||
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.LoanStatus;
|
||||
import org.mifosng.platform.loan.domain.LoanTransactionType;
|
||||
import org.mifosng.platform.loan.domain.PeriodFrequencyType;
|
||||
|
||||
@@ -36,6 +37,30 @@ public class LoanEnumerations {
|
||||
return optionData;
|
||||
}
|
||||
|
||||
public static EnumOptionData termFrequencyType(final int id) {
|
||||
return termFrequencyType(PeriodFrequencyType.fromInt(id));
|
||||
}
|
||||
|
||||
public static EnumOptionData termFrequencyType(final PeriodFrequencyType type) {
|
||||
final String codePrefix = "termFrequency.";
|
||||
EnumOptionData optionData = null;
|
||||
switch (type) {
|
||||
case DAYS:
|
||||
optionData = new EnumOptionData(PeriodFrequencyType.DAYS.getValue().longValue(), codePrefix + PeriodFrequencyType.DAYS.getCode(), "Days");
|
||||
break;
|
||||
case WEEKS:
|
||||
optionData = new EnumOptionData(PeriodFrequencyType.WEEKS.getValue().longValue(), codePrefix + PeriodFrequencyType.WEEKS.getCode(), "Weeks");
|
||||
break;
|
||||
case MONTHS:
|
||||
optionData = new EnumOptionData(PeriodFrequencyType.MONTHS.getValue().longValue(), codePrefix + PeriodFrequencyType.MONTHS.getCode(), "Months");
|
||||
break;
|
||||
default:
|
||||
optionData = new EnumOptionData(PeriodFrequencyType.INVALID.getValue().longValue(), PeriodFrequencyType.INVALID.getCode(), "Invalid");
|
||||
break;
|
||||
}
|
||||
return optionData;
|
||||
}
|
||||
|
||||
public static EnumOptionData repaymentFrequencyType(final int id) {
|
||||
return repaymentFrequencyType(PeriodFrequencyType.fromInt(id));
|
||||
}
|
||||
@@ -141,11 +166,11 @@ public class LoanEnumerations {
|
||||
return optionData;
|
||||
}
|
||||
|
||||
public static EnumOptionData transactionType(Integer id) {
|
||||
public static EnumOptionData transactionType(final Integer id) {
|
||||
return transactionType(LoanTransactionType.fromInt(id));
|
||||
}
|
||||
|
||||
public static EnumOptionData transactionType(LoanTransactionType type) {
|
||||
public static EnumOptionData transactionType(final LoanTransactionType type) {
|
||||
EnumOptionData optionData = null;
|
||||
switch (type) {
|
||||
case DISBURSEMENT:
|
||||
@@ -166,4 +191,39 @@ public class LoanEnumerations {
|
||||
}
|
||||
return optionData;
|
||||
}
|
||||
|
||||
public static EnumOptionData status(final Integer statusId) {
|
||||
return status(LoanStatus.fromInt(statusId));
|
||||
}
|
||||
|
||||
public static EnumOptionData status(final LoanStatus status) {
|
||||
EnumOptionData optionData = null;
|
||||
switch (status) {
|
||||
case SUBMITED_AND_PENDING_APPROVAL:
|
||||
optionData = new EnumOptionData(LoanStatus.SUBMITED_AND_PENDING_APPROVAL.getValue().longValue(), LoanStatus.SUBMITED_AND_PENDING_APPROVAL.getCode(), "Submitted and pending approval");
|
||||
break;
|
||||
case APPROVED:
|
||||
optionData = new EnumOptionData(LoanStatus.APPROVED.getValue().longValue(), LoanStatus.APPROVED.getCode(), "Approved");
|
||||
break;
|
||||
case ACTIVE:
|
||||
optionData = new EnumOptionData(LoanStatus.ACTIVE.getValue().longValue(), LoanStatus.ACTIVE.getCode(), "Active");
|
||||
break;
|
||||
case REJECTED:
|
||||
optionData = new EnumOptionData(LoanStatus.REJECTED.getValue().longValue(), LoanStatus.REJECTED.getCode(), "Rejected");
|
||||
break;
|
||||
case WITHDRAWN_BY_CLIENT:
|
||||
optionData = new EnumOptionData(LoanStatus.WITHDRAWN_BY_CLIENT.getValue().longValue(), LoanStatus.WITHDRAWN_BY_CLIENT.getCode(), "Withdrawn by applicant");
|
||||
break;
|
||||
case CLOSED:
|
||||
optionData = new EnumOptionData(LoanStatus.CLOSED.getValue().longValue(), LoanStatus.CLOSED.getCode(), "Closed");
|
||||
break;
|
||||
case OVERPAID:
|
||||
optionData = new EnumOptionData(LoanStatus.OVERPAID.getValue().longValue(), LoanStatus.OVERPAID.getCode(), "Overpaid");
|
||||
break;
|
||||
default:
|
||||
optionData = new EnumOptionData(LoanStatus.INVALID.getValue().longValue(), LoanStatus.INVALID.getCode(), "Invalid");
|
||||
break;
|
||||
}
|
||||
return optionData;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user