diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java index d8bd92ef8..39b259e46 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/api/data/LoanProductData.java @@ -27,6 +27,7 @@ public class LoanProductData { private BigDecimal interestRatePerPeriod = BigDecimal.ZERO; private BigDecimal annualInterestRate = BigDecimal.ZERO; + private EnumOptionData loanTermFrequencyType; private EnumOptionData repaymentFrequencyType; private EnumOptionData interestRateFrequencyType; private EnumOptionData amortizationType; @@ -44,6 +45,7 @@ public class LoanProductData { private List interestCalculationPeriodTypeOptions = new ArrayList(); private List repaymentFrequencyTypeOptions = new ArrayList(); private List interestRateFrequencyTypeOptions = new ArrayList(); + private List loanTermFrequencyTypeOptions = new ArrayList(); public LoanProductData() { // @@ -54,6 +56,7 @@ public class LoanProductData { MoneyData tolerance, Integer numberOfRepayments, Integer repaymentEvery, BigDecimal interestRatePerPeriod, BigDecimal annualInterestRate, + EnumOptionData loanTermFrequencyType, EnumOptionData repaymentFrequencyType, EnumOptionData interestRateFrequencyType, EnumOptionData amortizationType, EnumOptionData interestType, @@ -70,6 +73,7 @@ public class LoanProductData { this.repaymentEvery = repaymentEvery; this.interestRatePerPeriod = interestRatePerPeriod; this.annualInterestRate = annualInterestRate; + this.loanTermFrequencyType = loanTermFrequencyType; this.repaymentFrequencyType = repaymentFrequencyType; this.interestRateFrequencyType = interestRateFrequencyType; this.amortizationType = amortizationType; @@ -261,6 +265,23 @@ public class LoanProductData { List interestRateFrequencyTypeOptions) { this.interestRateFrequencyTypeOptions = interestRateFrequencyTypeOptions; } + + public EnumOptionData getLoanTermFrequencyType() { + return loanTermFrequencyType; + } + + public void setLoanTermFrequencyType(EnumOptionData loanTermFrequencyType) { + this.loanTermFrequencyType = loanTermFrequencyType; + } + + public List getLoanTermFrequencyTypeOptions() { + return loanTermFrequencyTypeOptions; + } + + public void setLoanTermFrequencyTypeOptions( + List loanTermFrequencyTypeOptions) { + this.loanTermFrequencyTypeOptions = loanTermFrequencyTypeOptions; + } public List getCurrencyOptions() { return currencyOptions; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/PeriodFrequencyType.java b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/PeriodFrequencyType.java index 1b72e8918..b057b4191 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/PeriodFrequencyType.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loan/domain/PeriodFrequencyType.java @@ -1,7 +1,11 @@ package org.mifosng.platform.loan.domain; public enum PeriodFrequencyType { - DAYS(0, "periodFrequencyType.days"), WEEKS(1, "periodFrequencyType.weeks"), MONTHS(2, "periodFrequencyType.months"), YEARS(3, "periodFrequencyType.years"), INVALID(4, "periodFrequencyType.invalid"); + DAYS(0, "periodFrequencyType.days"), // + WEEKS(1, "periodFrequencyType.weeks"), // + MONTHS(2, "periodFrequencyType.months"), // + YEARS(3, "periodFrequencyType.years"), // + INVALID(4, "periodFrequencyType.invalid"); private final Integer value; private final String code; diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanEnumerations.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanEnumerations.java index be9b64a7a..129ccce15 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanEnumerations.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanEnumerations.java @@ -9,6 +9,33 @@ import org.mifosng.platform.loan.domain.PeriodFrequencyType; public class LoanEnumerations { + public static EnumOptionData loanTermFrequencyType(final int id) { + return loanTermFrequencyType(PeriodFrequencyType.fromInt(id)); + } + + public static EnumOptionData loanTermFrequencyType(final PeriodFrequencyType type) { + final String codePrefix = "loanTermFrequency."; + 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; + case YEARS: + optionData = new EnumOptionData(PeriodFrequencyType.YEARS.getValue().longValue(), codePrefix + PeriodFrequencyType.YEARS.getCode(), "Years"); + 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)); } diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java index 38fee39da..a1f4bb9c6 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/loanproduct/service/LoanProductReadPlatformServiceImpl.java @@ -31,8 +31,7 @@ import org.springframework.jdbc.core.RowMapper; import org.springframework.stereotype.Service; @Service -public class LoanProductReadPlatformServiceImpl implements - LoanProductReadPlatformService { +public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatformService { private final PlatformSecurityContext context; private final CurrencyReadPlatformService currencyReadPlatformService; @@ -188,24 +187,21 @@ public class LoanProductReadPlatformServiceImpl implements BigDecimal annualInterestRate = rs .getBigDecimal("annualInterestRate"); - int repaymentFrequencyTypeId = JdbcSupport.getInteger(rs, - "repaymentPeriodFrequency"); - EnumOptionData repaymentFrequencyType = LoanEnumerations - .repaymentFrequencyType(repaymentFrequencyTypeId); + int repaymentFrequencyTypeId = JdbcSupport.getInteger(rs, "repaymentPeriodFrequency"); + EnumOptionData repaymentFrequencyType = LoanEnumerations.repaymentFrequencyType(repaymentFrequencyTypeId); + + EnumOptionData loanTermFrequencyType = LoanEnumerations.loanTermFrequencyType(repaymentFrequencyTypeId); int amortizationTypeId = JdbcSupport.getInteger(rs, "amortizationMethod"); EnumOptionData amortizationType = LoanEnumerations .amortizationType(amortizationTypeId); - int interestRateFrequencyTypeId = JdbcSupport.getInteger(rs, - "interestRatePerPeriodFreq"); - EnumOptionData interestRateFrequencyType = LoanEnumerations - .interestRateFrequencyType(interestRateFrequencyTypeId); + int interestRateFrequencyTypeId = JdbcSupport.getInteger(rs,"interestRatePerPeriodFreq"); + EnumOptionData interestRateFrequencyType = LoanEnumerations.interestRateFrequencyType(interestRateFrequencyTypeId); int interestTypeId = JdbcSupport.getInteger(rs, "interestMethod"); - EnumOptionData interestType = LoanEnumerations - .interestType(interestTypeId); + EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId); int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs, "interestCalculationInPeriodMethod"); @@ -218,7 +214,7 @@ public class LoanProductReadPlatformServiceImpl implements return new LoanProductData(createdOn, lastModifedOn, id, name, description, principalMoney, toleranceMoney, numberOfRepayments, repaymentEvery, interestRatePerPeriod, - annualInterestRate, repaymentFrequencyType, + annualInterestRate, loanTermFrequencyType, repaymentFrequencyType, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, fundId, fundName, transactionStrategyId, transactionStrategyName); }