FINERACT-2232: Capitalized income - income type config
This commit is contained in:
+33
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing,
|
||||
* software distributed under the License is distributed on an
|
||||
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
* KIND, either express or implied. See the License for the
|
||||
* specific language governing permissions and limitations
|
||||
* under the License.
|
||||
*/
|
||||
package org.apache.fineract.portfolio.loanaccount.domain;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.fineract.infrastructure.core.api.ApiFacingEnum;
|
||||
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public enum LoanCapitalizedIncomeType implements ApiFacingEnum<LoanCapitalizedIncomeType> {
|
||||
|
||||
FEE("capitalizedIncome.incomeType.fee", "Fee"), INTEREST("capitalizedIncome.incomeType.interest", "Interest");
|
||||
|
||||
private final String code;
|
||||
private final String humanReadableName;
|
||||
}
|
||||
+16
-5
@@ -48,6 +48,7 @@ import org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsData;
|
||||
import org.apache.fineract.portfolio.loanaccount.data.LoanTermVariationsDataWrapper;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeCalculationType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeStrategy;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanChargeOffBehaviour;
|
||||
import org.apache.fineract.portfolio.loanproduct.data.LoanProductRelatedDetailMinimumData;
|
||||
import org.apache.fineract.portfolio.loanproduct.domain.AmortizationMethod;
|
||||
@@ -237,6 +238,7 @@ public final class LoanApplicationTerms {
|
||||
private boolean enableIncomeCapitalization;
|
||||
private LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType;
|
||||
private LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy;
|
||||
private LoanCapitalizedIncomeType capitalizedIncomeType;
|
||||
|
||||
private LoanApplicationTerms(Builder builder) {
|
||||
this.currency = builder.currency;
|
||||
@@ -276,6 +278,7 @@ public final class LoanApplicationTerms {
|
||||
this.enableIncomeCapitalization = builder.enableIncomeCapitalization;
|
||||
this.capitalizedIncomeCalculationType = builder.capitalizedIncomeCalculationType;
|
||||
this.capitalizedIncomeStrategy = builder.capitalizedIncomeStrategy;
|
||||
this.capitalizedIncomeType = builder.capitalizedIncomeType;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
@@ -308,6 +311,7 @@ public final class LoanApplicationTerms {
|
||||
private boolean enableIncomeCapitalization;
|
||||
private LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType;
|
||||
private LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy;
|
||||
private LoanCapitalizedIncomeType capitalizedIncomeType;
|
||||
|
||||
public Builder currency(CurrencyData currency) {
|
||||
this.currency = currency;
|
||||
@@ -439,6 +443,11 @@ public final class LoanApplicationTerms {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder capitalizedIncomeType(LoanCapitalizedIncomeType value) {
|
||||
this.capitalizedIncomeType = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
public LoanApplicationTerms build() {
|
||||
return new LoanApplicationTerms(this);
|
||||
}
|
||||
@@ -508,7 +517,7 @@ public final class LoanApplicationTerms {
|
||||
final LoanChargeOffBehaviour chargeOffBehaviour, final boolean interestRecognitionOnDisbursementDate,
|
||||
final DaysInYearCustomStrategyType daysInYearCustomStrategy, final boolean enableIncomeCapitalization,
|
||||
final LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType,
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy) {
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy, final LoanCapitalizedIncomeType capitalizedIncomeType) {
|
||||
|
||||
final LoanRescheduleStrategyMethod rescheduleStrategyMethod = null;
|
||||
final CalendarHistoryDataWrapper calendarHistoryDataWrapper = null;
|
||||
@@ -529,7 +538,7 @@ public final class LoanApplicationTerms {
|
||||
isAutoRepaymentForDownPaymentEnabled, repaymentStartDateType, submittedOnDate, loanScheduleType, loanScheduleProcessingType,
|
||||
fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
|
||||
}
|
||||
|
||||
@@ -605,7 +614,7 @@ public final class LoanApplicationTerms {
|
||||
loanProductRelatedDetail.getSupportedInterestRefundTypes(), loanProductRelatedDetail.getChargeOffBehaviour(),
|
||||
loanProductRelatedDetail.isInterestRecognitionOnDisbursementDate(), loanProductRelatedDetail.getDaysInYearCustomStrategy(),
|
||||
loanProductRelatedDetail.isEnableIncomeCapitalization(), loanProductRelatedDetail.getCapitalizedIncomeCalculationType(),
|
||||
loanProductRelatedDetail.getCapitalizedIncomeStrategy());
|
||||
loanProductRelatedDetail.getCapitalizedIncomeStrategy(), loanProductRelatedDetail.getCapitalizedIncomeType());
|
||||
}
|
||||
|
||||
private LoanApplicationTerms(final CurrencyData currency, final Integer loanTermFrequency,
|
||||
@@ -638,7 +647,7 @@ public final class LoanApplicationTerms {
|
||||
final List<LoanSupportedInterestRefundTypes> supportedInterestRefundTypes, final LoanChargeOffBehaviour chargeOffBehaviour,
|
||||
final boolean interestRecognitionOnDisbursementDate, final DaysInYearCustomStrategyType daysInYearCustomStrategy,
|
||||
final boolean enableIncomeCapitalization, final LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType,
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy) {
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy, final LoanCapitalizedIncomeType capitalizedIncomeType) {
|
||||
|
||||
this.currency = currency;
|
||||
this.loanTermFrequency = loanTermFrequency;
|
||||
@@ -743,6 +752,7 @@ public final class LoanApplicationTerms {
|
||||
this.enableIncomeCapitalization = enableIncomeCapitalization;
|
||||
this.capitalizedIncomeCalculationType = capitalizedIncomeCalculationType;
|
||||
this.capitalizedIncomeStrategy = capitalizedIncomeStrategy;
|
||||
this.capitalizedIncomeType = capitalizedIncomeType;
|
||||
}
|
||||
|
||||
public Money adjustPrincipalIfLastRepaymentPeriod(final Money principalForPeriod, final Money totalCumulativePrincipalToDate,
|
||||
@@ -1605,7 +1615,8 @@ public final class LoanApplicationTerms {
|
||||
this.disbursedAmountPercentageForDownPayment, this.isAutoRepaymentForDownPaymentEnabled, this.loanScheduleType,
|
||||
this.loanScheduleProcessingType, this.fixedLength, this.enableAccrualActivityPosting, this.supportedInterestRefundTypes,
|
||||
this.chargeOffBehaviour, this.interestRecognitionOnDisbursementDate, this.daysInYearCustomStrategy,
|
||||
this.enableIncomeCapitalization, this.capitalizedIncomeCalculationType, this.capitalizedIncomeStrategy);
|
||||
this.enableIncomeCapitalization, this.capitalizedIncomeCalculationType, this.capitalizedIncomeStrategy,
|
||||
this.capitalizedIncomeType);
|
||||
}
|
||||
|
||||
public LoanProductMinimumRepaymentScheduleRelatedDetail toLoanProductRelatedDetailMinimumData() {
|
||||
|
||||
+1
@@ -176,4 +176,5 @@ public interface LoanProductConstants {
|
||||
String ENABLE_INCOME_CAPITALIZATION_PARAM_NAME = "enableIncomeCapitalization";
|
||||
String CAPITALIZED_INCOME_CALCULATION_TYPE_PARAM_NAME = "capitalizedIncomeCalculationType";
|
||||
String CAPITALIZED_INCOME_STRATEGY_PARAM_NAME = "capitalizedIncomeStrategy";
|
||||
String CAPITALIZED_INCOME_TYPE_PARAM_NAME = "capitalizedIncomeType";
|
||||
}
|
||||
|
||||
+12
@@ -201,6 +201,8 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public String capitalizedIncomeCalculationType;
|
||||
@Schema(example = "EQUAL_AMORTIZATION", allowableValues = "EQUAL_AMORTIZATION")
|
||||
public String capitalizedIncomeStrategy;
|
||||
@Schema(example = "FEE", allowableValues = { "FEE", "INTEREST" })
|
||||
public String capitalizedIncomeType;
|
||||
|
||||
// Interest Recalculation
|
||||
@Schema(example = "false")
|
||||
@@ -667,6 +669,8 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public StringEnumOptionData capitalizedIncomeCalculationType;
|
||||
@Schema(example = "EQUAL_AMORTIZATION")
|
||||
public StringEnumOptionData capitalizedIncomeStrategy;
|
||||
@Schema(example = "FEE")
|
||||
public StringEnumOptionData capitalizedIncomeType;
|
||||
}
|
||||
|
||||
@Schema(description = "GetLoanProductsTemplateResponse")
|
||||
@@ -1119,8 +1123,11 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public StringEnumOptionData capitalizedIncomeCalculationType;
|
||||
@Schema(example = "EQUAL_AMORTIZATION")
|
||||
public StringEnumOptionData capitalizedIncomeStrategy;
|
||||
@Schema(example = "FEE")
|
||||
public StringEnumOptionData capitalizedIncomeType;
|
||||
public List<StringEnumOptionData> capitalizedIncomeCalculationTypeOptions;
|
||||
public List<StringEnumOptionData> capitalizedIncomeStrategyOptions;
|
||||
public List<StringEnumOptionData> capitalizedIncomeTypeOptions;
|
||||
}
|
||||
|
||||
@Schema(description = "GetLoanProductsProductIdResponse")
|
||||
@@ -1448,8 +1455,11 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public StringEnumOptionData capitalizedIncomeCalculationType;
|
||||
@Schema(example = "EQUAL_AMORTIZATION")
|
||||
public StringEnumOptionData capitalizedIncomeStrategy;
|
||||
@Schema(example = "FEE")
|
||||
public StringEnumOptionData capitalizedIncomeType;
|
||||
public List<StringEnumOptionData> capitalizedIncomeCalculationTypeOptions;
|
||||
public List<StringEnumOptionData> capitalizedIncomeStrategyOptions;
|
||||
public List<StringEnumOptionData> capitalizedIncomeTypeOptions;
|
||||
}
|
||||
|
||||
@Schema(description = "PutLoanProductsProductIdRequest")
|
||||
@@ -1713,6 +1723,8 @@ public final class LoanProductsApiResourceSwagger {
|
||||
public String capitalizedIncomeCalculationType;
|
||||
@Schema(example = "EQUAL_AMORTIZATION", allowableValues = "EQUAL_AMORTIZATION")
|
||||
public String capitalizedIncomeStrategy;
|
||||
@Schema(example = "FEE", allowableValues = { "FEE", "INTEREST" })
|
||||
public String capitalizedIncomeType;
|
||||
}
|
||||
|
||||
public static final class AdvancedPaymentData {
|
||||
|
||||
+19
-6
@@ -51,6 +51,7 @@ import org.apache.fineract.portfolio.fund.data.FundData;
|
||||
import org.apache.fineract.portfolio.loanaccount.data.LoanInterestRecalculationData;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeCalculationType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeStrategy;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanChargeOffBehaviour;
|
||||
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleProcessingType;
|
||||
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType;
|
||||
@@ -244,8 +245,10 @@ public class LoanProductData implements Serializable {
|
||||
private Boolean enableIncomeCapitalization;
|
||||
private StringEnumOptionData capitalizedIncomeCalculationType;
|
||||
private StringEnumOptionData capitalizedIncomeStrategy;
|
||||
private final StringEnumOptionData capitalizedIncomeType;
|
||||
private List<StringEnumOptionData> capitalizedIncomeCalculationTypeOptions;
|
||||
private List<StringEnumOptionData> capitalizedIncomeStrategyOptions;
|
||||
private List<StringEnumOptionData> capitalizedIncomeTypeOptions;
|
||||
|
||||
/**
|
||||
* Used when returning lookup information about loan product for dropdowns.
|
||||
@@ -353,6 +356,7 @@ public class LoanProductData implements Serializable {
|
||||
final boolean enableIncomeCapitalization = false;
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType = null;
|
||||
final StringEnumOptionData capitalizedIncomeStrategy = null;
|
||||
final StringEnumOptionData capitalizedIncomeType = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -375,7 +379,7 @@ public class LoanProductData implements Serializable {
|
||||
paymentAllocation, creditAllocation, repaymentStartDateType, enableInstallmentLevelDelinquency, loanScheduleType,
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
|
||||
}
|
||||
|
||||
@@ -483,6 +487,7 @@ public class LoanProductData implements Serializable {
|
||||
final boolean enableIncomeCapitalization = false;
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType = null;
|
||||
final StringEnumOptionData capitalizedIncomeStrategy = null;
|
||||
final StringEnumOptionData capitalizedIncomeType = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -505,7 +510,7 @@ public class LoanProductData implements Serializable {
|
||||
paymentAllocation, creditAllocation, repaymentStartDateType, enableInstallmentLevelDelinquency, loanScheduleType,
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
|
||||
}
|
||||
|
||||
@@ -620,6 +625,7 @@ public class LoanProductData implements Serializable {
|
||||
final boolean enableIncomeCapitalization = false;
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType = null;
|
||||
final StringEnumOptionData capitalizedIncomeStrategy = null;
|
||||
final StringEnumOptionData capitalizedIncomeType = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -642,7 +648,7 @@ public class LoanProductData implements Serializable {
|
||||
paymentAllocation, creditAllocation, repaymentStartDateType, enableInstallmentLevelDelinquency, loanScheduleType,
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
|
||||
}
|
||||
|
||||
@@ -751,6 +757,7 @@ public class LoanProductData implements Serializable {
|
||||
final boolean enableIncomeCapitalization = false;
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType = null;
|
||||
final StringEnumOptionData capitalizedIncomeStrategy = null;
|
||||
final StringEnumOptionData capitalizedIncomeType = null;
|
||||
|
||||
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
|
||||
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
|
||||
@@ -773,7 +780,7 @@ public class LoanProductData implements Serializable {
|
||||
paymentAllocation, creditAllocationData, repaymentStartDateType, enableInstallmentLevelDelinquency, loanScheduleType,
|
||||
loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes, chargeOffBehaviour,
|
||||
interestRecognitionOnDisbursementDate, daysInYearTypeCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
}
|
||||
|
||||
public static LoanProductData withAccountingDetails(final LoanProductData productData, final Map<String, Object> accountingMappings,
|
||||
@@ -829,7 +836,8 @@ public class LoanProductData implements Serializable {
|
||||
final boolean enableAccrualActivityPosting, final List<StringEnumOptionData> supportedInterestRefundTypes,
|
||||
StringEnumOptionData chargeOffBehaviour, final boolean interestRecognitionOnDisbursementDate,
|
||||
final StringEnumOptionData daysInYearCustomStrategy, final boolean enableIncomeCapitalization,
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType, final StringEnumOptionData capitalizedIncomeStrategy) {
|
||||
final StringEnumOptionData capitalizedIncomeCalculationType, final StringEnumOptionData capitalizedIncomeStrategy,
|
||||
final StringEnumOptionData capitalizedIncomeType) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.shortName = shortName;
|
||||
@@ -889,6 +897,7 @@ public class LoanProductData implements Serializable {
|
||||
this.enableIncomeCapitalization = enableIncomeCapitalization;
|
||||
this.capitalizedIncomeCalculationType = capitalizedIncomeCalculationType;
|
||||
this.capitalizedIncomeStrategy = capitalizedIncomeStrategy;
|
||||
this.capitalizedIncomeType = capitalizedIncomeType;
|
||||
|
||||
this.chargeOptions = null;
|
||||
this.penaltyOptions = null;
|
||||
@@ -981,6 +990,7 @@ public class LoanProductData implements Serializable {
|
||||
this.capitalizedIncomeCalculationTypeOptions = ApiFacingEnum
|
||||
.getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeCalculationType.class);
|
||||
this.capitalizedIncomeStrategyOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeStrategy.class);
|
||||
this.capitalizedIncomeTypeOptions = ApiFacingEnum.getValuesAsStringEnumOptionDataList(LoanCapitalizedIncomeType.class);
|
||||
}
|
||||
|
||||
public LoanProductData(final LoanProductData productData, final Collection<ChargeData> chargeOptions,
|
||||
@@ -1007,7 +1017,8 @@ public class LoanProductData implements Serializable {
|
||||
final List<StringEnumOptionData> chargeOffBehaviourOptions, final List<CodeValueData> chargeOffReasonOptions,
|
||||
final List<StringEnumOptionData> daysInYearCustomStrategyOptions,
|
||||
final List<StringEnumOptionData> capitalizedIncomeCalculationTypeOptions,
|
||||
final List<StringEnumOptionData> capitalizedIncomeStrategyOptions) {
|
||||
final List<StringEnumOptionData> capitalizedIncomeStrategyOptions,
|
||||
final List<StringEnumOptionData> capitalizedIncomeTypeOptions) {
|
||||
|
||||
this.id = productData.id;
|
||||
this.name = productData.name;
|
||||
@@ -1174,8 +1185,10 @@ public class LoanProductData implements Serializable {
|
||||
this.enableIncomeCapitalization = productData.enableIncomeCapitalization;
|
||||
this.capitalizedIncomeCalculationType = productData.capitalizedIncomeCalculationType;
|
||||
this.capitalizedIncomeStrategy = productData.capitalizedIncomeStrategy;
|
||||
this.capitalizedIncomeType = productData.capitalizedIncomeType;
|
||||
this.capitalizedIncomeCalculationTypeOptions = capitalizedIncomeCalculationTypeOptions;
|
||||
this.capitalizedIncomeStrategyOptions = capitalizedIncomeStrategyOptions;
|
||||
this.capitalizedIncomeTypeOptions = capitalizedIncomeTypeOptions;
|
||||
}
|
||||
|
||||
private Collection<ChargeData> nullIfEmpty(final Collection<ChargeData> charges) {
|
||||
|
||||
+3
-2
@@ -61,6 +61,7 @@ import org.apache.fineract.portfolio.floatingrates.domain.FloatingRate;
|
||||
import org.apache.fineract.portfolio.fund.domain.Fund;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeCalculationType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeStrategy;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanChargeOffBehaviour;
|
||||
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleProcessingType;
|
||||
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType;
|
||||
@@ -284,7 +285,7 @@ public class LoanProduct extends AbstractPersistableCustom<Long> {
|
||||
final LoanChargeOffBehaviour chargeOffBehaviour, final boolean isInterestRecognitionOnDisbursementDate,
|
||||
final DaysInYearCustomStrategyType daysInYearCustomStrategy, final boolean enableIncomeCapitalization,
|
||||
final LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType,
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy) {
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy, final LoanCapitalizedIncomeType capitalizedIncomeType) {
|
||||
this.fund = fund;
|
||||
this.transactionProcessingStrategyCode = transactionProcessingStrategyCode;
|
||||
|
||||
@@ -335,7 +336,7 @@ public class LoanProduct extends AbstractPersistableCustom<Long> {
|
||||
isInterestRecalculationEnabled, isEqualAmortization, enableDownPayment, disbursedAmountPercentageForDownPayment,
|
||||
enableAutoRepaymentForDownPayment, loanScheduleType, loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting,
|
||||
supportedInterestRefundTypes, chargeOffBehaviour, isInterestRecognitionOnDisbursementDate, daysInYearCustomStrategy,
|
||||
enableIncomeCapitalization, capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
enableIncomeCapitalization, capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
|
||||
this.loanProductMinMaxConstraints = new LoanProductMinMaxConstraints(defaultMinPrincipal, defaultMaxPrincipal,
|
||||
defaultMinNominalInterestRatePerPeriod, defaultMaxNominalInterestRatePerPeriod, defaultMinNumberOfInstallments,
|
||||
|
||||
+9
-3
@@ -38,6 +38,7 @@ import org.apache.fineract.portfolio.common.domain.PeriodFrequencyType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeCalculationType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeStrategy;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeType;
|
||||
import org.apache.fineract.portfolio.loanaccount.domain.LoanChargeOffBehaviour;
|
||||
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleProcessingType;
|
||||
import org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanScheduleType;
|
||||
@@ -181,6 +182,10 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche
|
||||
@Column(name = "capitalized_income_strategy")
|
||||
private LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy;
|
||||
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "capitalized_income_type")
|
||||
private LoanCapitalizedIncomeType capitalizedIncomeType;
|
||||
|
||||
public static LoanProductRelatedDetail createFrom(final CurrencyData currencyData, final BigDecimal principal,
|
||||
final BigDecimal nominalInterestRatePerPeriod, final PeriodFrequencyType interestRatePeriodFrequencyType,
|
||||
final BigDecimal nominalAnnualInterestRate, final InterestMethod interestMethod,
|
||||
@@ -197,7 +202,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche
|
||||
final LoanChargeOffBehaviour chargeOffBehaviour, final boolean interestRecognitionOnDisbursementDate,
|
||||
final DaysInYearCustomStrategyType daysInYearCustomStrategy, final boolean enableIncomeCapitalization,
|
||||
final LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType,
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy) {
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy, final LoanCapitalizedIncomeType capitalizedIncomeType) {
|
||||
|
||||
final MonetaryCurrency currency = MonetaryCurrency.fromCurrencyData(currencyData);
|
||||
return new LoanProductRelatedDetail(currency, principal, nominalInterestRatePerPeriod, interestRatePeriodFrequencyType,
|
||||
@@ -208,7 +213,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche
|
||||
isEqualAmortization, enableDownPayment, disbursedAmountPercentageForDownPayment, enableAutoRepaymentForDownPayment,
|
||||
loanScheduleType, loanScheduleProcessingType, fixedLength, enableAccrualActivityPosting, supportedInterestRefundTypes,
|
||||
chargeOffBehaviour, interestRecognitionOnDisbursementDate, daysInYearCustomStrategy, enableIncomeCapitalization,
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy);
|
||||
capitalizedIncomeCalculationType, capitalizedIncomeStrategy, capitalizedIncomeType);
|
||||
}
|
||||
|
||||
protected LoanProductRelatedDetail() {
|
||||
@@ -231,7 +236,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche
|
||||
final LoanChargeOffBehaviour chargeOffBehaviour, final boolean interestRecognitionOnDisbursementDate,
|
||||
final DaysInYearCustomStrategyType daysInYearCustomStrategy, final boolean enableIncomeCapitalization,
|
||||
final LoanCapitalizedIncomeCalculationType capitalizedIncomeCalculationType,
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy) {
|
||||
final LoanCapitalizedIncomeStrategy capitalizedIncomeStrategy, final LoanCapitalizedIncomeType capitalizedIncomeType) {
|
||||
this.currency = currency;
|
||||
this.principal = defaultPrincipal;
|
||||
this.nominalInterestRatePerPeriod = defaultNominalInterestRatePerPeriod;
|
||||
@@ -272,6 +277,7 @@ public class LoanProductRelatedDetail implements LoanProductMinimumRepaymentSche
|
||||
this.enableIncomeCapitalization = enableIncomeCapitalization;
|
||||
this.capitalizedIncomeCalculationType = capitalizedIncomeCalculationType;
|
||||
this.capitalizedIncomeStrategy = capitalizedIncomeStrategy;
|
||||
this.capitalizedIncomeType = capitalizedIncomeType;
|
||||
}
|
||||
|
||||
private Integer defaultToNullIfZero(final Integer value) {
|
||||
|
||||
Reference in New Issue
Block a user