FINERACT-2206: Fix typo in allowPartialPeriodInterestCalculation

Fixed misspelled 'allowPartialPeriodInterestCalcualtion' to
'allowPartialPeriodInterestCalculation' in REST API and code.
35 files updated as specified in JIRA.
This commit is contained in:
Monica
2026-01-03 19:49:44 +01:00
committed by Adam Saghy
parent b7306f19d0
commit ab9f4fd40e
35 changed files with 136 additions and 136 deletions
@@ -198,7 +198,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -308,7 +308,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -416,7 +416,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -704,7 +704,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.allowVariableInstallments(false)//
.amortizationType(AMORTIZATION_TYPE)//
.canDefineInstallmentAmount(true)//
@@ -865,7 +865,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -978,7 +978,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -1089,7 +1089,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -1219,7 +1219,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -1337,7 +1337,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -1471,7 +1471,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -1576,7 +1576,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -1714,7 +1714,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -122,7 +122,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
String name4 = DefaultLoanProduct.LP1_INTEREST_DECLINING_BALANCE_PERIOD_DAILY.getName();
PostLoanProductsRequest loanProductsRequestInterestDecliningPeriodDaily = loanProductsRequestFactory
.defaultLoanProductsRequestLP1InterestDeclining().name(name4)
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalcualtion(false);
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalculation(false);
PostLoanProductsResponse responseInterestDecliningPeriodDaily = createLoanProductIdempotent(
loanProductsRequestInterestDecliningPeriodDaily);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_DECLINING_PERIOD_DAILY,
@@ -209,7 +209,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT.value)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);//
PostLoanProductsResponse responseInterestDecliningBalanceSaRRecalculationSameAsRepaymentCompoundingNoneMultiDisbursement = createLoanProductIdempotent(
@@ -686,7 +686,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(name33)//
.enableAccrualActivityPosting(true)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false);//
.allowPartialPeriodInterestCalculation(false);//
PostLoanProductsResponse responseInterestDecliningPeriodDailyAccrualActivity = createLoanProductIdempotent(
loanProductsRequestInterestDecliningPeriodDailyAccrualActivity);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_DECLINING_PERIOD_DAILY_ACCRUAL_ACTIVITY,
@@ -701,7 +701,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(name34)//
.enableAccrualActivityPosting(true)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false);//
.allowPartialPeriodInterestCalculation(false);//
PostLoanProductsResponse responseLP1InterestDecliningBalanceDailyRecalculationCompoundingNoneAccrualActivity = createLoanProductIdempotent(
loanProductsRequestLP1InterestDecliningBalanceDailyRecalculationCompoundingNoneAccrualActivity);
TestContext.INSTANCE.set(
@@ -1315,7 +1315,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.enableDownPayment(false)//
.interestRecalculationCompoundingMethod(0)//
.repaymentFrequencyType(REPAYMENT_FREQUENCY_TYPE_MONTHS)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.paymentAllocation(List.of(//
createPaymentAllocation("DEFAULT", "NEXT_INSTALLMENT")));//
PostLoanProductsResponse responseLP2AdvancedPaymentInterestEmi36030InterestRecalculationDailyAllowPartialPeriod = createLoanProductIdempotent(
@@ -1952,7 +1952,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.defaultLoanProductsRequestLP1InterestDeclining().name(name81).isInterestRecalculationEnabled(true)
.preClosureInterestCalculationStrategy(1).rescheduleStrategyMethod(1).interestRecalculationCompoundingMethod(0)
.recalculationRestFrequencyType(2).recalculationRestFrequencyInterval(1)
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalcualtion(false);
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalculation(false);
final PostLoanProductsResponse responseInterestDecliningPeriodDailyIntRecalc = createLoanProductIdempotent(
loanProductsRequestInterestDecliningPeriodDailyIntRecalc);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_DECLINING_PERIOD_DAILY_INT_RECALC,
@@ -1964,7 +1964,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
final PostLoanProductsRequest loanProductsRequestInterest36030DecliningPeriodDailyIntRecalc = loanProductsRequestFactory
.defaultLoanProductsRequestLP1InterestDeclining().name(name82).isInterestRecalculationEnabled(false)
.daysInYearType(DaysInYearType.DAYS360.value).daysInMonthType(DaysInMonthType.DAYS30.value)
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalcualtion(false);
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalculation(false);
final PostLoanProductsResponse responseInterest36030DecliningPeriodDailyIntRecalc = createLoanProductIdempotent(
loanProductsRequestInterest36030DecliningPeriodDailyIntRecalc);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_360_30__DECLINING_PERIOD_DAILY_INT_RECALC,
@@ -3168,7 +3168,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.disbursedAmountPercentageForDownPayment(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.paymentAllocation(List.of(//
@@ -3202,7 +3202,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.disbursedAmountPercentageForDownPayment(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.paymentAllocation(List.of(//
@@ -3259,7 +3259,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.paymentAllocation(List.of(//
@@ -3377,7 +3377,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
// .interestType(INTEREST_TYPE_DECLINING_BALANCE)//
.defaultLoanProductsRequestLP1() //
.interestCalculationPeriodType(0)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
// .allowApprovedDisbursedAmountsOverApplied(false)//
.name(name130)//
.transactionProcessingStrategyCode(
@@ -3419,7 +3419,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), //
createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))//
.multiDisburseLoan(true)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.disallowExpectedDisbursements(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);//
@@ -3452,7 +3452,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), //
createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))//
.multiDisburseLoan(true)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.disallowExpectedDisbursements(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);//
@@ -3485,7 +3485,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), //
createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))//
.multiDisburseLoan(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);//
@@ -3839,7 +3839,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.allowApprovedDisbursedAmountsOverApplied(true)//
@@ -3866,7 +3866,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.allowApprovedDisbursedAmountsOverApplied(true)//
@@ -3886,7 +3886,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(name145)//
.interestType(INTEREST_TYPE_FLAT)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY.value)//
.recalculationRestFrequencyInterval(1)//
.daysInYearType(DaysInYearType.DAYS360.value)//
@@ -3917,7 +3917,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.enableDownPayment(true)//
.enableAutoRepaymentForDownPayment(true)//
.disbursedAmountPercentageForDownPayment(new BigDecimal(25))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);//
PostLoanProductsResponse responseLoanProductsRequestInterestFlatSaRRecalculationSameAsRepaymentMultiDisbursementAUtoDownPayment = createLoanProductIdempotent(
@@ -4144,7 +4144,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(DefaultLoanProduct.LP1_INTEREST_FLAT_DAILY_RECALCULATION_SAR_MULTIDISB_EXPECT_TRANCHES.getName())//
.interestType(INTEREST_TYPE_FLAT)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT.value)//
.recalculationRestFrequencyInterval(1)//
.installmentAmountInMultiplesOf(null)//
@@ -4181,7 +4181,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(DefaultLoanProduct.LP1_INTEREST_FLAT_DAILY_ACTUAL_ACTUAL_MULTIDISB_EXPECT_TRANCHES.getName())//
.interestType(INTEREST_TYPE_FLAT)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY.value)//
.interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyInterval(1)//
@@ -463,7 +463,7 @@ public class LoanAccountData {
final EnumOptionData amortizationType, final BigDecimal interestRatePerPeriod, final EnumOptionData interestRateFrequencyType,
final BigDecimal annualInterestRate, final EnumOptionData interestType, final boolean isFloatingInterestRate,
final BigDecimal interestRateDifferential, final EnumOptionData interestCalculationPeriodType,
Boolean allowPartialPeriodInterestCalcualtion, final LocalDate expectedFirstRepaymentOnDate,
Boolean allowPartialPeriodInterestCalculation, final LocalDate expectedFirstRepaymentOnDate,
final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods,
final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, final LocalDate interestChargedFromDate,
final LoanApplicationTimelineData timeline, final LoanSummaryData loanSummary,
@@ -508,7 +508,7 @@ public class LoanAccountData {
.setInterestRateFrequencyType(interestRateFrequencyType).setAnnualInterestRate(annualInterestRate)
.setInterestType(interestType).setFloatingInterestRate(isFloatingInterestRate)
.setInterestRateDifferential(interestRateDifferential).setInterestCalculationPeriodType(interestCalculationPeriodType)
.setAllowPartialPeriodInterestCalculation(allowPartialPeriodInterestCalcualtion)
.setAllowPartialPeriodInterestCalculation(allowPartialPeriodInterestCalculation)
.setExpectedFirstRepaymentOnDate(expectedFirstRepaymentOnDate).setGraceOnPrincipalPayment(graceOnPrincipalPayment)
.setRecurringMoratoriumOnPrincipalPeriods(recurringMoratoriumOnPrincipalPeriods)
.setGraceOnInterestPayment(graceOnInterestPayment).setGraceOnInterestCharged(graceOnInterestCharged)
@@ -90,7 +90,7 @@ public final class LoanApplicationTerms {
private PeriodFrequencyType interestRatePeriodFrequencyType;
private BigDecimal annualNominalInterestRate;
private InterestCalculationPeriodMethod interestCalculationPeriodMethod;
private boolean allowPartialPeriodInterestCalcualtion;
private boolean allowPartialPeriodInterestCalculation;
private Money principal;
private LocalDate expectedDisbursementDate;
@@ -293,7 +293,7 @@ public final class LoanApplicationTerms {
this.buyDownFeeIncomeType = builder.buyDownFeeIncomeType;
this.merchantBuyDownFee = builder.merchantBuyDownFee;
this.interestMethod = builder.interestMethod;
this.allowPartialPeriodInterestCalcualtion = builder.allowPartialPeriodInterestCalculation;
this.allowPartialPeriodInterestCalculation = builder.allowPartialPeriodInterestCalculation;
}
public static class Builder {
@@ -688,7 +688,7 @@ public final class LoanApplicationTerms {
final PeriodFrequencyType repaymentPeriodFrequencyType, final Integer nthDay, final DayOfWeekType weekDayType,
final AmortizationMethod amortizationMethod, final InterestMethod interestMethod, final BigDecimal interestRatePerPeriod,
final PeriodFrequencyType interestRatePeriodFrequencyType, final BigDecimal annualNominalInterestRate,
final InterestCalculationPeriodMethod interestCalculationPeriodMethod, final boolean allowPartialPeriodInterestCalcualtion,
final InterestCalculationPeriodMethod interestCalculationPeriodMethod, final boolean allowPartialPeriodInterestCalculation,
final Money principal, final LocalDate expectedDisbursementDate, final LocalDate repaymentsStartingFromDate,
final LocalDate calculatedRepaymentsStartingFromDate, final Integer principalGrace,
final Integer recurringMoratoriumOnPrincipalPeriods, final Integer interestPaymentGrace, final Integer interestChargingGrace,
@@ -733,7 +733,7 @@ public final class LoanApplicationTerms {
this.interestRatePeriodFrequencyType = interestRatePeriodFrequencyType;
this.annualNominalInterestRate = annualNominalInterestRate;
this.interestCalculationPeriodMethod = interestCalculationPeriodMethod;
this.allowPartialPeriodInterestCalcualtion = allowPartialPeriodInterestCalcualtion;
this.allowPartialPeriodInterestCalculation = allowPartialPeriodInterestCalculation;
this.principal = principal;
this.disbursedPrincipal = principal;
@@ -1106,7 +1106,7 @@ public final class LoanApplicationTerms {
case INVALID:
break;
case SAME_AS_REPAYMENT_PERIOD:
if (this.allowPartialPeriodInterestCalcualtion) {
if (this.allowPartialPeriodInterestCalculation) {
LocalDate startDate = getExpectedDisbursementDate();
if (getInterestChargedFromDate() != null) {
startDate = getInterestChargedFromLocalDate();
@@ -1407,7 +1407,7 @@ public final class LoanApplicationTerms {
private BigDecimal calculateLoanTermFrequency(final LocalDate periodStartDate, final LocalDate periodEndDate) {
BigDecimal loanTermFrequencyBigDecimal = BigDecimal.valueOf(this.repaymentEvery);
if (this.interestCalculationPeriodMethod.isDaily() || this.allowPartialPeriodInterestCalcualtion) {
if (this.interestCalculationPeriodMethod.isDaily() || this.allowPartialPeriodInterestCalculation) {
loanTermFrequencyBigDecimal = calculatePeriodsBetweenDates(periodStartDate, periodEndDate);
}
return loanTermFrequencyBigDecimal;
@@ -1681,7 +1681,7 @@ public final class LoanApplicationTerms {
return LoanProductRelatedDetail.createFrom(currency, this.principal.getAmount(), this.interestRatePerPeriod,
this.interestRatePeriodFrequencyType, this.annualNominalInterestRate, this.interestMethod,
this.interestCalculationPeriodMethod, this.allowPartialPeriodInterestCalcualtion, this.repaymentEvery,
this.interestCalculationPeriodMethod, this.allowPartialPeriodInterestCalculation, this.repaymentEvery,
this.repaymentPeriodFrequencyType, this.numberOfRepayments, this.principalGrace, this.recurringMoratoriumOnPrincipalPeriods,
this.interestPaymentGrace, this.interestChargingGrace, this.amortizationMethod, this.inArrearsTolerance.getAmount(),
this.graceOnArrearsAgeing, this.daysInMonthType.getValue(), this.daysInYearType.getValue(),
@@ -1702,7 +1702,7 @@ public final class LoanApplicationTerms {
interestCalculationPeriodMethod, daysInYearType, daysInMonthType, amortizationMethod, repaymentPeriodFrequencyType,
repaymentEvery, numberOfRepayments,
isInterestChargedFromDateSameAsDisbursalDateEnabled != null && isInterestChargedFromDateSameAsDisbursalDateEnabled,
daysInYearCustomStrategy, allowPartialPeriodInterestCalcualtion, interestRecalculationEnabled, recalculationFrequencyType,
daysInYearCustomStrategy, allowPartialPeriodInterestCalculation, interestRecalculationEnabled, recalculationFrequencyType,
preClosureInterestCalculationStrategy);
}
@@ -130,7 +130,7 @@ public interface LoanProductConstants {
String minimumGapBetweenInstallments = "minimumGap";
String maximumGapBetweenInstallments = "maximumGap";
String ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME = "allowPartialPeriodInterestCalcualtion";
String ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME = "allowPartialPeriodInterestCalculation";
String CAN_USE_FOR_TOPUP = "canUseForTopup";
@@ -159,7 +159,7 @@ public final class LoanProductsApiResourceSwagger {
@Schema(example = "FULL_LEAP_YEAR")
public String daysInYearCustomStrategy;
@Schema(example = "true")
public Boolean allowPartialPeriodInterestCalcualtion;
public Boolean allowPartialPeriodInterestCalculation;
@Schema(example = "179")
public Integer overdueDaysForNPA;
@Schema(example = "3")
@@ -1662,7 +1662,7 @@ public final class LoanProductsApiResourceSwagger {
@Schema(example = "FULL_LEAP_YEAR")
public String daysInYearCustomStrategy;
@Schema(example = "true")
public Boolean allowPartialPeriodInterestCalcualtion;
public Boolean allowPartialPeriodInterestCalculation;
@Schema(example = "179")
public Integer overdueDaysForNPA;
@Schema(example = "3")
@@ -305,7 +305,7 @@ public class LoanProductData implements Serializable {
final EnumOptionData amortizationType = null;
final EnumOptionData interestType = null;
final EnumOptionData interestCalculationPeriodType = null;
final Boolean allowPartialPeriodInterestCalcualtion = null;
final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null;
final String fundName = null;
final String transactionProcessingStrategyCode = null;
@@ -388,7 +388,7 @@ public class LoanProductData implements Serializable {
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariations,
@@ -444,7 +444,7 @@ public class LoanProductData implements Serializable {
final EnumOptionData amortizationType = null;
final EnumOptionData interestType = null;
final EnumOptionData interestCalculationPeriodType = null;
final Boolean allowPartialPeriodInterestCalcualtion = null;
final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null;
final String fundName = null;
final String transactionProcessingStrategyCode = null;
@@ -529,7 +529,7 @@ public class LoanProductData implements Serializable {
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariations,
@@ -590,7 +590,7 @@ public class LoanProductData implements Serializable {
final EnumOptionData interestType = LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE);
final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD);
final Boolean allowPartialPeriodInterestCalcualtion = null;
final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null;
final String fundName = null;
final String transactionProcessingStrategyCode = null;
@@ -677,7 +677,7 @@ public class LoanProductData implements Serializable {
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariationsForBorrowerCycle,
@@ -732,7 +732,7 @@ public class LoanProductData implements Serializable {
final EnumOptionData interestType = LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE);
final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD);
final Boolean allowPartialPeriodInterestCalcualtion = null;
final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null;
final String fundName = null;
final String transactionProcessingStrategyCode = null;
@@ -819,7 +819,7 @@ public class LoanProductData implements Serializable {
return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariationsForBorrowerCycle,
@@ -213,7 +213,7 @@ public class LoanProductRelatedDetail {
public static LoanProductRelatedDetail createFrom(final CurrencyData currencyData, final BigDecimal principal,
final BigDecimal nominalInterestRatePerPeriod, final PeriodFrequencyType interestRatePeriodFrequencyType,
final BigDecimal nominalAnnualInterestRate, final InterestMethod interestMethod,
final InterestCalculationPeriodMethod interestCalculationPeriodMethod, final boolean allowPartialPeriodInterestCalcualtion,
final InterestCalculationPeriodMethod interestCalculationPeriodMethod, final boolean allowPartialPeriodInterestCalculation,
final Integer repaymentEvery, final PeriodFrequencyType repaymentPeriodFrequencyType, final Integer numberOfRepayments,
final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods,
final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, final AmortizationMethod amortizationMethod,
@@ -233,7 +233,7 @@ public class LoanProductRelatedDetail {
final MonetaryCurrency currency = MonetaryCurrency.fromCurrencyData(currencyData);
return new LoanProductRelatedDetail(currency, principal, nominalInterestRatePerPeriod, interestRatePeriodFrequencyType,
nominalAnnualInterestRate, interestMethod, interestCalculationPeriodMethod, allowPartialPeriodInterestCalcualtion,
nominalAnnualInterestRate, interestMethod, interestCalculationPeriodMethod, allowPartialPeriodInterestCalculation,
repaymentEvery, repaymentPeriodFrequencyType, numberOfRepayments, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, amortizationMethod,
inArrearsTolerance, graceOnArrearsAgeing, daysInMonthType, daysInYearType, isInterestRecalculationEnabled,
@@ -220,7 +220,7 @@ import org.springframework.util.CollectionUtils;
+ "Example Values: 0=Equal principle payments, 1=Equal installments\n" + "interestType\n"
+ "Used like: interestRatePerPeriod% interestRateFrequencyType - interestType\n" + "e.g. 12.0000% Per year - Declining Balance \n"
+ "Example Values: 0=Declining Balance, 1=Flat\n" + "interestCalculationPeriodType\n"
+ "Example Values: 0=Daily, 1=Same as repayment period\n" + "allowPartialPeriodInterestCalcualtion\n"
+ "Example Values: 0=Daily, 1=Same as repayment period\n" + "allowPartialPeriodInterestCalculation\n"
+ "This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods. Example: Interest charged from is 5th of April , Principal is 10000 and interest is 1% per month then the interest will be (10000 * 1%)* (25/30) , it calculates for the month first then calculates exact periods between start date and end date(can be a decimal)\n"
+ "inArrearsTolerance\n" + "The amount that can be 'waived' at end of all loan payments because it is too small to worry about.\n"
+ "This is also the tolerance amount assessed when determining if a loan is in arrears.\n" + "transactionProcessingStrategyCode\n"
@@ -552,7 +552,7 @@ public class LoansApiResource {
@Operation(summary = "Calculate loan repayment schedule | Submit a new Loan Application", description = "It calculates the loan repayment Schedule\n"
+ "Submits a new loan application\n"
+ "Mandatory Fields: clientId, productId, principal, loanTermFrequency, loanTermFrequencyType, loanType, numberOfRepayments, repaymentEvery, repaymentFrequencyType, interestRatePerPeriod, amortizationType, interestType, interestCalculationPeriodType, transactionProcessingStrategyCode, expectedDisbursementDate, submittedOnDate, loanType\n"
+ "Optional Fields: graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalcualtion, fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)\n"
+ "Optional Fields: graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalculation, fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)\n"
+ "Additional Mandatory Fields if interest recalculation is enabled for product and Rest frequency not same as repayment period: recalculationRestFrequencyDate\n"
+ "Additional Mandatory Fields if interest recalculation with interest/fee compounding is enabled for product and compounding frequency not same as repayment period: recalculationCompoundingFrequencyDate\n"
+ "Additional Mandatory Field if Entity-Datatable Check is enabled for the entity of type loan: datatables")
@@ -243,10 +243,10 @@ public class LoanScheduleAssembler {
final InterestCalculationPeriodMethod interestCalculationPeriodMethod = allowOverridingInterestCalcPeriod
? InterestCalculationPeriodMethod.fromInt(interestCalculationPeriodType)
: loanProduct.getLoanProductRelatedDetail().getInterestCalculationPeriodMethod();
Boolean allowPartialPeriodInterestCalcualtion = this.fromApiJsonHelper
Boolean allowPartialPeriodInterestCalculation = this.fromApiJsonHelper
.extractBooleanNamed(LoanProductConstants.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME, element);
if (allowPartialPeriodInterestCalcualtion == null) {
allowPartialPeriodInterestCalcualtion = loanProduct.getLoanProductRelatedDetail().isAllowPartialPeriodInterestCalculation();
if (allowPartialPeriodInterestCalculation == null) {
allowPartialPeriodInterestCalculation = loanProduct.getLoanProductRelatedDetail().isAllowPartialPeriodInterestCalculation();
}
final BigDecimal interestRatePerPeriod = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("interestRatePerPeriod", element);
@@ -536,7 +536,7 @@ public class LoanScheduleAssembler {
return LoanApplicationTerms.assembleFrom(applicationCurrency.toData(), loanTermFrequency, loanTermPeriodFrequencyType,
numberOfRepayments, repaymentEvery, repaymentPeriodFrequencyType, nthDay, weekDayType, amortizationMethod, interestMethod,
interestRatePerPeriod, interestRatePeriodFrequencyType, annualNominalInterestRate, interestCalculationPeriodMethod,
allowPartialPeriodInterestCalcualtion, principalMoney, expectedDisbursementDate, repaymentsStartingFromDate,
allowPartialPeriodInterestCalculation, principalMoney, expectedDisbursementDate, repaymentsStartingFromDate,
calculatedRepaymentsStartingFromDate, graceOnPrincipalPayment, recurringMoratoriumOnPrincipalPeriods,
graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, inArrearsToleranceMoney,
loanProduct.isMultiDisburseLoan(), emiAmount, disbursementDatas, maxOutstandingBalance, graceOnArrearsAgeing,
@@ -94,7 +94,7 @@ public class LoanProductAssembler {
final InterestMethod interestMethod = InterestMethod.fromInt(command.integerValueOfParameterNamed("interestType"));
final InterestCalculationPeriodMethod interestCalculationPeriodMethod = InterestCalculationPeriodMethod
.fromInt(command.integerValueOfParameterNamed("interestCalculationPeriodType"));
final boolean allowPartialPeriodInterestCalcualtion = command
final boolean allowPartialPeriodInterestCalculation = command
.booleanPrimitiveValueOfParameterNamed(LoanProductConstants.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME);
final AmortizationMethod amortizationMethod = AmortizationMethod.fromInt(command.integerValueOfParameterNamed("amortizationType"));
final PeriodFrequencyType repaymentFrequencyType = PeriodFrequencyType
@@ -337,7 +337,7 @@ public class LoanProductAssembler {
return new LoanProduct(fund, loanTransactionProcessingStrategy, loanProductPaymentAllocationRules, loanProductCreditAllocationRules,
name, shortName, description, currency, principal, minPrincipal, maxPrincipal, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, interestFrequencyType, annualInterestRate, interestMethod,
interestCalculationPeriodMethod, allowPartialPeriodInterestCalcualtion, repaymentEvery, repaymentFrequencyType,
interestCalculationPeriodMethod, allowPartialPeriodInterestCalculation, repaymentEvery, repaymentFrequencyType,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, amortizationMethod,
inArrearsTolerance, productCharges, accountingRuleType, includeInBorrowerCycle, startDate, closeDate, externalId,
@@ -800,7 +800,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
+ " 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.is_equal_amortization as isEqualAmortization, l.interest_calculated_in_period_enum as interestCalculationPeriodType,"
+ " l.fixed_principal_percentage_per_installment fixedPrincipalPercentagePerInstallment, "
+ " l.allow_partial_period_interest_calcualtion as allowPartialPeriodInterestCalcualtion,"
+ " l.allow_partial_period_interest_calcualtion as allowPartialPeriodInterestCalculation,"
+ " l.loan_status_id as lifeCycleStatusId, l.loan_transaction_strategy_code as transactionStrategyCode, "
+ " l.loan_transaction_strategy_name as transactionStrategyName, l.enable_installment_level_delinquency as enableInstallmentLevelDelinquency, "
+ " l.currency_code as currencyCode, l.currency_digits as currencyDigits, l.currency_multiplesof as inMultiplesOf, rc."
@@ -1043,7 +1043,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
final EnumOptionData interestType = LoanEnumerations.interestType(interestTypeInt);
final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(interestCalculationPeriodTypeInt);
final Boolean allowPartialPeriodInterestCalcualtion = rs.getBoolean("allowPartialPeriodInterestCalcualtion");
final Boolean allowPartialPeriodInterestCalculation = rs.getBoolean("allowPartialPeriodInterestCalculation");
final Integer lifeCycleStatusId = JdbcSupport.getInteger(rs, "lifeCycleStatusId");
final LoanStatusEnumData status = LoanEnumerations.status(lifeCycleStatusId);
@@ -1264,7 +1264,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
termFrequency, termPeriodFrequencyType, numberOfRepayments, repaymentEvery, repaymentFrequencyType, null, null,
transactionStrategyCode, transactionStrategyName, amortizationType, interestRatePerPeriod, interestRateFrequencyType,
annualInterestRate, interestType, isFloatingInterestRate, interestRateDifferential, interestCalculationPeriodType,
allowPartialPeriodInterestCalcualtion, expectedFirstRepaymentOnDate, graceOnPrincipalPayment,
allowPartialPeriodInterestCalculation, expectedFirstRepaymentOnDate, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate,
timeline, loanSummary, feeChargesDueAtDisbursementCharged, syncDisbursementWithMeeting, loanCounter, loanProductCounter,
multiDisburseLoan, canDefineInstallmentAmount, fixedEmiAmount, outstandingLoanBalance, inArrears, graceOnArrearsAgeing,
@@ -178,7 +178,7 @@ public class LoanProductsApiResource {
@Operation(summary = "Create a Loan Product", description = "Depending of the Accounting Rule (accountingRule) selected, additional fields with details of the appropriate Ledger Account identifiers would need to be passed in.\n"
+ "\n" + "Refer MifosX Accounting Specs Draft for more details regarding the significance of the selected accounting rule\n\n"
+ "Mandatory Fields: name, shortName, currencyCode, digitsAfterDecimal, inMultiplesOf, principal, numberOfRepayments, repaymentEvery, repaymentFrequencyType, interestRatePerPeriod, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, transactionProcessingStrategyCode, accountingRule, isInterestRecalculationEnabled, daysInYearType, daysInMonthType\n\n"
+ "Optional Fields: inArrearsTolerance, graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, graceOnArrearsAgeing, charges, paymentChannelToFundSourceMappings, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, chargeOffReasonToExpenseAccountMappings, includeInBorrowerCycle, useBorrowerCycle,principalVariationsForBorrowerCycle, numberOfRepaymentVariationsForBorrowerCycle, interestRateVariationsForBorrowerCycle, multiDisburseLoan,maxTrancheCount, outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalcualtion,dueDaysForRepaymentEvent,overDueDaysForRepaymentEvent,enableDownPayment,disbursedAmountPercentageDownPayment,enableAutoRepaymentForDownPayment,repaymentStartDateType,enableBuyDownFee\n\n"
+ "Optional Fields: inArrearsTolerance, graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, graceOnArrearsAgeing, charges, paymentChannelToFundSourceMappings, feeToIncomeAccountMappings, penaltyToIncomeAccountMappings, chargeOffReasonToExpenseAccountMappings, includeInBorrowerCycle, useBorrowerCycle,principalVariationsForBorrowerCycle, numberOfRepaymentVariationsForBorrowerCycle, interestRateVariationsForBorrowerCycle, multiDisburseLoan,maxTrancheCount, outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalculation,dueDaysForRepaymentEvent,overDueDaysForRepaymentEvent,enableDownPayment,disbursedAmountPercentageDownPayment,enableAutoRepaymentForDownPayment,repaymentStartDateType,enableBuyDownFee\n\n"
+ "Additional Mandatory Fields for Cash(2) based accounting: fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, incomeFromFeeAccountId, incomeFromPenaltyAccountId, writeOffAccountId, transfersInSuspenseAccountId, overpaymentLiabilityAccountId\n\n"
+ "Additional Mandatory Fields for periodic (3) and upfront (4)accrual accounting: fundSourceAccountId, loanPortfolioAccountId, interestOnLoanAccountId, incomeFromFeeAccountId, incomeFromPenaltyAccountId, writeOffAccountId, receivableInterestAccountId, receivableFeeAccountId, receivablePenaltyAccountId, transfersInSuspenseAccountId, overpaymentLiabilityAccountId\n\n"
+ "Additional Mandatory Fields if interest recalculation is enabled(true): interestRecalculationCompoundingMethod, rescheduleStrategyMethod, recalculationRestFrequencyType\n\n"
@@ -247,7 +247,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
+ "lp.name as name, lp.short_name as shortName, lp.description as description, "
+ "lp.principal_amount as principal, lp.min_principal_amount as minPrincipal, lp.max_principal_amount as maxPrincipal, lp.currency_code as currencyCode, lp.currency_digits as currencyDigits, lp.currency_multiplesof as inMultiplesOf, "
+ "lp.nominal_interest_rate_per_period as interestRatePerPeriod, lp.min_nominal_interest_rate_per_period as minInterestRatePerPeriod, lp.max_nominal_interest_rate_per_period as maxInterestRatePerPeriod, lp.interest_period_frequency_enum as interestRatePerPeriodFreq, "
+ "lp.annual_nominal_interest_rate as annualInterestRate, lp.interest_method_enum as interestMethod, lp.interest_calculated_in_period_enum as interestCalculationInPeriodMethod,lp.allow_partial_period_interest_calcualtion as allowPartialPeriodInterestCalcualtion, "
+ "lp.annual_nominal_interest_rate as annualInterestRate, lp.interest_method_enum as interestMethod, lp.interest_calculated_in_period_enum as interestCalculationInPeriodMethod,lp.allow_partial_period_interest_calcualtion as allowPartialPeriodInterestCalculation, "
+ "lp.repay_every as repaidEvery, lp.repayment_period_frequency_enum as repaymentPeriodFrequency, lp.number_of_repayments as numberOfRepayments, lp.min_number_of_repayments as minNumberOfRepayments, lp.max_number_of_repayments as maxNumberOfRepayments, "
+ "lp.fixed_length as fixedLength, " + "lp.enable_accrual_activity_posting as enableAccrualActivityPosting, "
+ "lp.grace_on_principal_periods as graceOnPrincipalPayment, lp.recurring_moratorium_principal_periods as recurringMoratoriumOnPrincipalPeriods, lp.grace_on_interest_periods as graceOnInterestPayment, lp.grace_interest_free_periods as graceOnInterestCharged,lp.grace_on_arrears_ageing as graceOnArrearsAgeing,lp.overdue_days_for_npa as overdueDaysForNPA, "
@@ -392,7 +392,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
final EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId);
final int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs, "interestCalculationInPeriodMethod");
final Boolean allowPartialPeriodInterestCalcualtion = rs.getBoolean("allowPartialPeriodInterestCalcualtion");
final Boolean allowPartialPeriodInterestCalculation = rs.getBoolean("allowPartialPeriodInterestCalculation");
final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(interestCalculationPeriodTypeId);
@@ -586,7 +586,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType,
interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType,
allowPartialPeriodInterestCalcualtion, fundId, fundName, transactionStrategyCode, transactionStrategyName,
allowPartialPeriodInterestCalculation, fundId, fundName, transactionStrategyCode, transactionStrategyName,
graceOnPrincipalPayment, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged,
this.charges, accountingRuleType, includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId,
principalVariationsForBorrowerCycle, interestRateVariationsForBorrowerCycle,
@@ -198,7 +198,7 @@ public class SelfLoansApiResource {
+ "Additional Mandatory Fields if interest recalculation is enabled for product and Rest frequency not same as repayment period: recalculationRestFrequencyDate\n\n"
+ "Additional Mandatory Fields if interest recalculation with interest/fee compounding is enabled for product and compounding frequency not same as repayment period: recalculationCompoundingFrequencyDate\n\n"
+ "Additional Mandatory Field if Entity-Datatable Check is enabled for the entity of type loan: datatables\n\n"
+ "Optional Fields: graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalcualtion, fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)\n\n"
+ "Optional Fields: graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalculation, fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)\n\n"
+ "Showing request/response for 'Submit a new Loan Application'")
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = SelfLoansApiResourceSwagger.PostSelfLoansRequest.class)))
@ApiResponses({
@@ -63,7 +63,7 @@ import org.springframework.stereotype.Component;
+ "Example Values: 0=Equal principle payments, 1=Equal installments\n" + "interestType\n"
+ "Used like: interestRatePerPeriod% interestRateFrequencyType - interestType\n" + "e.g. 12.0000% Per year - Declining Balance \n"
+ "Example Values: 0=Declining Balance, 1=Flat\n" + "interestCalculationPeriodType\n"
+ "Example Values: 0=Daily, 1=Same as repayment period\n" + "allowPartialPeriodInterestCalcualtion\n"
+ "Example Values: 0=Daily, 1=Same as repayment period\n" + "allowPartialPeriodInterestCalculation\n"
+ "This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods. Example: Interest charged from is 5th of April , Principal is 10000 and interest is 1% per month then the interest will be (10000 * 1%)* (25/30) , it calculates for the month first then calculates exact periods between start date and end date(can be a decimal)\n"
+ "inArrearsTolerance\n" + "The amount that can be 'waived' at end of all loan payments because it is too small to worry about.\n"
+ "This is also the tolerance amount assessed when determining if a loan is in arrears.\n"
@@ -10303,7 +10303,7 @@ GET https://DomainName/fineract-provider/api/v1/groups/{groupId}/glimaccounts
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
</tr>
<tr class=alt>
<td>allowPartialPeriodInterestCalcualtion</td>
<td>allowPartialPeriodInterestCalculation</td>
</tr>
<tr>
<td class=fielddesc>This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods.
@@ -11629,7 +11629,7 @@ Request Body:
<td><div class="fineractHeading2">Optional Fields</div></td>
</tr>
<tr class=alt>
<td>graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalcualtion,
<td>graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalculation,
fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true), daysInYearType
</td>
</tr>
@@ -15688,7 +15688,7 @@ Request Body:
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
</tr>
<tr class=alt>
<td>allowPartialPeriodInterestCalcualtion</td>
<td>allowPartialPeriodInterestCalculation</td>
</tr>
<tr>
<td class=fielddesc>This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods.
@@ -17172,7 +17172,7 @@ GET https://DomainName/api/v1/loanproducts/{productId}
numberOfRepaymentVariationsForBorrowerCycle,
interestRateVariationsForBorrowerCycle,
multiDisburseLoan,maxTrancheCount,
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalcualtion, rates
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalculation, rates
</td>
</tr>
</table>
@@ -48399,7 +48399,7 @@ Request Body:
<td><div class="fineractHeading2">Optional Fields</div></td>
</tr>
<tr class=alt>
<td>graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalcualtion,
<td>graceOnPrincipalPayment, graceOnInterestPayment, graceOnInterestCharged, linkAccountId, allowPartialPeriodInterestCalculation,
fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)
</td>
</tr>
@@ -51616,7 +51616,7 @@ No Request Body:
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
</tr>
<tr class=alt>
<td>allowPartialPeriodInterestCalcualtion</td>
<td>allowPartialPeriodInterestCalculation</td>
</tr>
<tr>
<td class=fielddesc>This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods.
@@ -4450,7 +4450,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)//
.repaymentFrequencyType(2L)//
.enableDownPayment(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
@@ -4512,7 +4512,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)//
.repaymentFrequencyType(2L)//
.enableDownPayment(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
@@ -4575,7 +4575,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)//
.repaymentFrequencyType(2L)//
.enableDownPayment(true)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
@@ -4637,7 +4637,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_365).numberOfRepayments(4)//
.repaymentEvery(1)//
.repaymentFrequencyType(2L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -4739,7 +4739,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 110)//
.repaymentEvery(1)//
.repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -4918,7 +4918,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_365).numberOfRepayments(4)//
.repaymentEvery(5)//
.repaymentFrequencyType(0L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -4982,7 +4982,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)//
.repaymentFrequencyType(2L)//
.enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
@@ -5064,7 +5064,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)//
.repaymentFrequencyType(2L)//
.enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
@@ -5163,7 +5163,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())//
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(null)//
.multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)//
@@ -5280,7 +5280,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())//
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(null)//
.allowPartialPeriodInterestCalculation(null)//
.enableAutoRepaymentForDownPayment(null)//
.isInterestRecalculationEnabled(true)//
.interestRecalculationCompoundingMethod(0)//
@@ -5454,7 +5454,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 0)//
.repaymentEvery(1)//
.repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5527,7 +5527,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 12)//
.repaymentEvery(1)//
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5574,7 +5574,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
PostLoanProductsRequest product = create4IProgressive().interestRateFrequencyType(YEARS).numberOfRepayments(6)//
.repaymentEvery(1)//
.repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(true)//
.maxTrancheCount(10)//
.disallowExpectedDisbursements(true)//
@@ -5757,7 +5757,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 0)//
.repaymentEvery(1)//
.repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5915,7 +5915,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_360).numberOfRepayments(3)//
.repaymentEvery(1)//
.repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5973,7 +5973,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.interestRatePerPeriod(12.0).interestCalculationPeriodType(RepaymentFrequencyType.DAYS).numberOfRepayments(4)//
.repaymentEvery(1)//
.repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)//
@@ -6045,7 +6045,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)//
.enableAccrualActivityPosting(true)//
.allowPartialPeriodInterestCalcualtion(null)//
.allowPartialPeriodInterestCalculation(null)//
.enableAutoRepaymentForDownPayment(null)//
.isInterestRecalculationEnabled(true)//
.delinquencyBucketId(delinquencyBucketId.longValue())//
@@ -6187,7 +6187,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)//
.enableAccrualActivityPosting(true)//
.allowPartialPeriodInterestCalcualtion(null)//
.allowPartialPeriodInterestCalculation(null)//
.enableAutoRepaymentForDownPayment(null)//
.isInterestRecalculationEnabled(true)//
.delinquencyBucketId(delinquencyBucketId.longValue())//
@@ -434,7 +434,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.creditAllocation(List.of())//
.overdueDaysForNPA(179)//
.daysInMonthType(30)//
@@ -530,7 +530,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.transactionProcessingStrategyCode(ADVANCED_PAYMENT_ALLOCATION_STRATEGY)//
.paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT")))//
.creditAllocation(List.of())//
@@ -632,7 +632,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.transactionProcessingStrategyCode(ADVANCED_PAYMENT_ALLOCATION_STRATEGY)//
.paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT")))//
.creditAllocation(List.of())//
@@ -768,7 +768,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())//
@@ -824,7 +824,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.loanScheduleProcessingType(LoanScheduleProcessingType.HORIZONTAL.toString()) //
.addPaymentAllocationItem(defaultAllocation).enableDownPayment(false) //
.isInterestRecalculationEnabled(true).interestRecalculationCompoundingMethod(0) //
.preClosureInterestCalculationStrategy(1).recalculationRestFrequencyType(1).allowPartialPeriodInterestCalcualtion(true) //
.preClosureInterestCalculationStrategy(1).recalculationRestFrequencyType(1).allowPartialPeriodInterestCalculation(true) //
.rescheduleStrategyMethod(rescheduleStrategyMethod);
}
@@ -8324,7 +8324,7 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())//
@@ -751,7 +751,7 @@ public class LoanAccountChargeOffWithAdvancedPaymentAllocationTest extends BaseL
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -443,7 +443,7 @@ public class LoanAccountChargeReveseReplayWithAdvancedPaymentAllocationTest exte
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -261,7 +261,7 @@ public class LoanBuyDownFeeTest extends BaseLoanIntegrationTest {
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS_L).interestRatePerPeriod(10.0).minInterestRatePerPeriod(0.0)
.maxInterestRatePerPeriod(120.0).interestRateFrequencyType(InterestRateFrequencyType.YEARS)
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS).interestType(InterestType.DECLINING_BALANCE)
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY).allowPartialPeriodInterestCalcualtion(false)
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY).allowPartialPeriodInterestCalculation(false)
.transactionProcessingStrategyCode("advanced-payment-allocation-strategy")
.paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT"))).creditAllocation(List.of())
.daysInMonthType(30).daysInYearType(360).isInterestRecalculationEnabled(false).accountingRule(3) // Accrual-based
@@ -945,7 +945,7 @@ public class LoanChargeOffAccountingTest extends BaseLoanIntegrationTest {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())//
@@ -1212,7 +1212,7 @@ public class LoanPostChargeOffScenariosTest extends BaseLoanIntegrationTest {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -222,7 +222,7 @@ public class LoanProductChargeOffReasonMappingsTest extends BaseLoanIntegrationT
.interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyType(2)//
.recalculationRestFrequencyInterval(1)//
.allowPartialPeriodInterestCalcualtion(false);//
.allowPartialPeriodInterestCalculation(false);//
}
@NonNull
@@ -1542,7 +1542,7 @@ public class LoanTransactionAccrualActivityPostingTest extends BaseLoanIntegrati
.interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyType(2)//
.recalculationRestFrequencyInterval(1)//
.allowPartialPeriodInterestCalcualtion(false);//
.allowPartialPeriodInterestCalculation(false);//
}
@@ -251,7 +251,7 @@ public class RepaymentReverseExternalIdTest extends BaseLoanIntegrationTest {
.interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyType(2)//
.recalculationRestFrequencyInterval(1)//
.allowPartialPeriodInterestCalcualtion(false);//
.allowPartialPeriodInterestCalculation(false);//
}
private Integer createLoanAccount(final Integer clientID, final Long loanProductID, final String externalId) {
@@ -294,7 +294,7 @@ public class UndoRepaymentWithDownPaymentIntegrationTest extends BaseLoanIntegra
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(charges)//
@@ -96,7 +96,7 @@ public interface LoanProductTemplates {
.repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())//
@@ -171,7 +171,7 @@ public interface LoanProductTemplates {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.SAME_AS_REPAYMENT_PERIOD)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.creditAllocation(List.of())//
.overdueDaysForNPA(179)//
.daysInMonthType(DaysInMonthType.DAYS_30)//
@@ -141,7 +141,7 @@ public class LoanProductTestBuilder {
private String graceOnPrincipalPayment = null;
private String graceOnInterestPayment = null;
private JsonObject allowAttributeOverrides = null;
private Boolean allowPartialPeriodInterestCalcualtion = false;
private Boolean allowPartialPeriodInterestCalculation = false;
private Boolean allowVariableInstallments = Boolean.FALSE;
private Integer minimumGap;
@@ -290,7 +290,7 @@ public class LoanProductTestBuilder {
if (allowAttributeOverrides != null) {
map.put("allowAttributeOverrides", this.allowAttributeOverrides);
}
map.put("allowPartialPeriodInterestCalcualtion", this.allowPartialPeriodInterestCalcualtion);
map.put("allowPartialPeriodInterestCalculation", this.allowPartialPeriodInterestCalculation);
map.put("allowVariableInstallments", allowVariableInstallments);
if (allowVariableInstallments) {
map.put("minimumGap", minimumGap);
@@ -471,9 +471,9 @@ public class LoanProductTestBuilder {
return this;
}
public LoanProductTestBuilder withInterestCalculationPeriodTypeAsRepaymentPeriod(final Boolean allowPartialPeriodInterestCalcualtion) {
public LoanProductTestBuilder withInterestCalculationPeriodTypeAsRepaymentPeriod(final Boolean allowPartialPeriodInterestCalculation) {
this.interestCalculationPeriodType = CALCULATION_PERIOD_SAME_AS_REPAYMENT_PERIOD;
this.allowPartialPeriodInterestCalcualtion = allowPartialPeriodInterestCalcualtion;
this.allowPartialPeriodInterestCalculation = allowPartialPeriodInterestCalculation;
return this;
}
@@ -814,8 +814,8 @@ public class LoanProductTestBuilder {
return this;
}
public LoanProductTestBuilder withAllowPartialPeriodInterestCalculation(final Boolean allowPartialPeriodInterestCalcualtion) {
this.allowPartialPeriodInterestCalcualtion = allowPartialPeriodInterestCalcualtion;
public LoanProductTestBuilder withAllowPartialPeriodInterestCalculation(final Boolean allowPartialPeriodInterestCalculation) {
this.allowPartialPeriodInterestCalculation = allowPartialPeriodInterestCalculation;
return this;
}
@@ -61,7 +61,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -85,7 +85,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -171,7 +171,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -242,7 +242,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -326,7 +326,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -80,7 +80,7 @@ public class LoanPenaltyBackdatedTransactionTest extends BaseLoanIntegrationTest
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -193,7 +193,7 @@ public class LoanPenaltyBackdatedTransactionTest extends BaseLoanIntegrationTest
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -307,7 +307,7 @@ public class LoanPenaltyBackdatedTransactionTest extends BaseLoanIntegrationTest
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -68,7 +68,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -208,7 +208,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -372,7 +372,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.ADJUST_LAST_UNPAID_PERIOD)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -543,7 +543,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -687,7 +687,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -785,7 +785,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -63,7 +63,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)//
.allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -159,7 +159,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT_PERIOD)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.preClosureInterestCalculationStrategy(1).disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//
@@ -242,7 +242,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT_PERIOD)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(true)//
.allowPartialPeriodInterestCalculation(true)//
.preClosureInterestCalculationStrategy(2).disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)//