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)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -308,7 +308,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true)) .graceOnArrearsAgeing(true))
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -416,7 +416,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true)) .graceOnArrearsAgeing(true))
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -704,7 +704,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.allowVariableInstallments(false)// .allowVariableInstallments(false)//
.amortizationType(AMORTIZATION_TYPE)// .amortizationType(AMORTIZATION_TYPE)//
.canDefineInstallmentAmount(true)// .canDefineInstallmentAmount(true)//
@@ -865,7 +865,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -978,7 +978,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true)) .graceOnArrearsAgeing(true))
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -1089,7 +1089,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -1219,7 +1219,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -1337,7 +1337,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -1471,7 +1471,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -1576,7 +1576,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -1714,7 +1714,7 @@ public class LoanProductsRequestFactory {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -122,7 +122,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
String name4 = DefaultLoanProduct.LP1_INTEREST_DECLINING_BALANCE_PERIOD_DAILY.getName(); String name4 = DefaultLoanProduct.LP1_INTEREST_DECLINING_BALANCE_PERIOD_DAILY.getName();
PostLoanProductsRequest loanProductsRequestInterestDecliningPeriodDaily = loanProductsRequestFactory PostLoanProductsRequest loanProductsRequestInterestDecliningPeriodDaily = loanProductsRequestFactory
.defaultLoanProductsRequestLP1InterestDeclining().name(name4) .defaultLoanProductsRequestLP1InterestDeclining().name(name4)
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalcualtion(false); .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalculation(false);
PostLoanProductsResponse responseInterestDecliningPeriodDaily = createLoanProductIdempotent( PostLoanProductsResponse responseInterestDecliningPeriodDaily = createLoanProductIdempotent(
loanProductsRequestInterestDecliningPeriodDaily); loanProductsRequestInterestDecliningPeriodDaily);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_DECLINING_PERIOD_DAILY, 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)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT.value)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);// .outstandingLoanBalance(10000.0);//
PostLoanProductsResponse responseInterestDecliningBalanceSaRRecalculationSameAsRepaymentCompoundingNoneMultiDisbursement = createLoanProductIdempotent( PostLoanProductsResponse responseInterestDecliningBalanceSaRRecalculationSameAsRepaymentCompoundingNoneMultiDisbursement = createLoanProductIdempotent(
@@ -686,7 +686,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(name33)// .name(name33)//
.enableAccrualActivityPosting(true)// .enableAccrualActivityPosting(true)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)// .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false);// .allowPartialPeriodInterestCalculation(false);//
PostLoanProductsResponse responseInterestDecliningPeriodDailyAccrualActivity = createLoanProductIdempotent( PostLoanProductsResponse responseInterestDecliningPeriodDailyAccrualActivity = createLoanProductIdempotent(
loanProductsRequestInterestDecliningPeriodDailyAccrualActivity); loanProductsRequestInterestDecliningPeriodDailyAccrualActivity);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_DECLINING_PERIOD_DAILY_ACCRUAL_ACTIVITY, 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)// .name(name34)//
.enableAccrualActivityPosting(true)// .enableAccrualActivityPosting(true)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)// .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false);// .allowPartialPeriodInterestCalculation(false);//
PostLoanProductsResponse responseLP1InterestDecliningBalanceDailyRecalculationCompoundingNoneAccrualActivity = createLoanProductIdempotent( PostLoanProductsResponse responseLP1InterestDecliningBalanceDailyRecalculationCompoundingNoneAccrualActivity = createLoanProductIdempotent(
loanProductsRequestLP1InterestDecliningBalanceDailyRecalculationCompoundingNoneAccrualActivity); loanProductsRequestLP1InterestDecliningBalanceDailyRecalculationCompoundingNoneAccrualActivity);
TestContext.INSTANCE.set( TestContext.INSTANCE.set(
@@ -1315,7 +1315,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.enableDownPayment(false)// .enableDownPayment(false)//
.interestRecalculationCompoundingMethod(0)// .interestRecalculationCompoundingMethod(0)//
.repaymentFrequencyType(REPAYMENT_FREQUENCY_TYPE_MONTHS)// .repaymentFrequencyType(REPAYMENT_FREQUENCY_TYPE_MONTHS)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.paymentAllocation(List.of(// .paymentAllocation(List.of(//
createPaymentAllocation("DEFAULT", "NEXT_INSTALLMENT")));// createPaymentAllocation("DEFAULT", "NEXT_INSTALLMENT")));//
PostLoanProductsResponse responseLP2AdvancedPaymentInterestEmi36030InterestRecalculationDailyAllowPartialPeriod = createLoanProductIdempotent( PostLoanProductsResponse responseLP2AdvancedPaymentInterestEmi36030InterestRecalculationDailyAllowPartialPeriod = createLoanProductIdempotent(
@@ -1952,7 +1952,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.defaultLoanProductsRequestLP1InterestDeclining().name(name81).isInterestRecalculationEnabled(true) .defaultLoanProductsRequestLP1InterestDeclining().name(name81).isInterestRecalculationEnabled(true)
.preClosureInterestCalculationStrategy(1).rescheduleStrategyMethod(1).interestRecalculationCompoundingMethod(0) .preClosureInterestCalculationStrategy(1).rescheduleStrategyMethod(1).interestRecalculationCompoundingMethod(0)
.recalculationRestFrequencyType(2).recalculationRestFrequencyInterval(1) .recalculationRestFrequencyType(2).recalculationRestFrequencyInterval(1)
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalcualtion(false); .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalculation(false);
final PostLoanProductsResponse responseInterestDecliningPeriodDailyIntRecalc = createLoanProductIdempotent( final PostLoanProductsResponse responseInterestDecliningPeriodDailyIntRecalc = createLoanProductIdempotent(
loanProductsRequestInterestDecliningPeriodDailyIntRecalc); loanProductsRequestInterestDecliningPeriodDailyIntRecalc);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_DECLINING_PERIOD_DAILY_INT_RECALC, 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 final PostLoanProductsRequest loanProductsRequestInterest36030DecliningPeriodDailyIntRecalc = loanProductsRequestFactory
.defaultLoanProductsRequestLP1InterestDeclining().name(name82).isInterestRecalculationEnabled(false) .defaultLoanProductsRequestLP1InterestDeclining().name(name82).isInterestRecalculationEnabled(false)
.daysInYearType(DaysInYearType.DAYS360.value).daysInMonthType(DaysInMonthType.DAYS30.value) .daysInYearType(DaysInYearType.DAYS360.value).daysInMonthType(DaysInMonthType.DAYS30.value)
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalcualtion(false); .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value).allowPartialPeriodInterestCalculation(false);
final PostLoanProductsResponse responseInterest36030DecliningPeriodDailyIntRecalc = createLoanProductIdempotent( final PostLoanProductsResponse responseInterest36030DecliningPeriodDailyIntRecalc = createLoanProductIdempotent(
loanProductsRequestInterest36030DecliningPeriodDailyIntRecalc); loanProductsRequestInterest36030DecliningPeriodDailyIntRecalc);
TestContext.INSTANCE.set(TestContextKey.DEFAULT_LOAN_PRODUCT_CREATE_RESPONSE_LP1_INTEREST_360_30__DECLINING_PERIOD_DAILY_INT_RECALC, 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)// .disbursedAmountPercentageForDownPayment(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.paymentAllocation(List.of(// .paymentAllocation(List.of(//
@@ -3202,7 +3202,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.disbursedAmountPercentageForDownPayment(null)// .disbursedAmountPercentageForDownPayment(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.paymentAllocation(List.of(// .paymentAllocation(List.of(//
@@ -3259,7 +3259,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.installmentAmountInMultiplesOf(null)// .installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.paymentAllocation(List.of(// .paymentAllocation(List.of(//
@@ -3377,7 +3377,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
// .interestType(INTEREST_TYPE_DECLINING_BALANCE)// // .interestType(INTEREST_TYPE_DECLINING_BALANCE)//
.defaultLoanProductsRequestLP1() // .defaultLoanProductsRequestLP1() //
.interestCalculationPeriodType(0)// .interestCalculationPeriodType(0)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
// .allowApprovedDisbursedAmountsOverApplied(false)// // .allowApprovedDisbursedAmountsOverApplied(false)//
.name(name130)// .name(name130)//
.transactionProcessingStrategyCode( .transactionProcessingStrategyCode(
@@ -3419,7 +3419,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), // createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), //
createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))// createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);// .outstandingLoanBalance(10000.0);//
@@ -3452,7 +3452,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), // createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), //
createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))// createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);// .outstandingLoanBalance(10000.0);//
@@ -3485,7 +3485,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), // createPaymentAllocation("MERCHANT_ISSUED_REFUND", "REAMORTIZATION"), //
createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))// createPaymentAllocation("PAYOUT_REFUND", "NEXT_INSTALLMENT")))//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);// .outstandingLoanBalance(10000.0);//
@@ -3839,7 +3839,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.installmentAmountInMultiplesOf(null)// .installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.allowApprovedDisbursedAmountsOverApplied(true)// .allowApprovedDisbursedAmountsOverApplied(true)//
@@ -3866,7 +3866,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.installmentAmountInMultiplesOf(null)// .installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.allowApprovedDisbursedAmountsOverApplied(true)// .allowApprovedDisbursedAmountsOverApplied(true)//
@@ -3886,7 +3886,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(name145)// .name(name145)//
.interestType(INTEREST_TYPE_FLAT)// .interestType(INTEREST_TYPE_FLAT)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)// .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY.value)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY.value)//
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.daysInYearType(DaysInYearType.DAYS360.value)// .daysInYearType(DaysInYearType.DAYS360.value)//
@@ -3917,7 +3917,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.enableDownPayment(true)// .enableDownPayment(true)//
.enableAutoRepaymentForDownPayment(true)// .enableAutoRepaymentForDownPayment(true)//
.disbursedAmountPercentageForDownPayment(new BigDecimal(25))// .disbursedAmountPercentageForDownPayment(new BigDecimal(25))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0);// .outstandingLoanBalance(10000.0);//
PostLoanProductsResponse responseLoanProductsRequestInterestFlatSaRRecalculationSameAsRepaymentMultiDisbursementAUtoDownPayment = createLoanProductIdempotent( PostLoanProductsResponse responseLoanProductsRequestInterestFlatSaRRecalculationSameAsRepaymentMultiDisbursementAUtoDownPayment = createLoanProductIdempotent(
@@ -4144,7 +4144,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(DefaultLoanProduct.LP1_INTEREST_FLAT_DAILY_RECALCULATION_SAR_MULTIDISB_EXPECT_TRANCHES.getName())// .name(DefaultLoanProduct.LP1_INTEREST_FLAT_DAILY_RECALCULATION_SAR_MULTIDISB_EXPECT_TRANCHES.getName())//
.interestType(INTEREST_TYPE_FLAT)// .interestType(INTEREST_TYPE_FLAT)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)// .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT.value)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT.value)//
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.installmentAmountInMultiplesOf(null)// .installmentAmountInMultiplesOf(null)//
@@ -4181,7 +4181,7 @@ public class LoanProductGlobalInitializerStep implements FineractGlobalInitializ
.name(DefaultLoanProduct.LP1_INTEREST_FLAT_DAILY_ACTUAL_ACTUAL_MULTIDISB_EXPECT_TRANCHES.getName())// .name(DefaultLoanProduct.LP1_INTEREST_FLAT_DAILY_ACTUAL_ACTUAL_MULTIDISB_EXPECT_TRANCHES.getName())//
.interestType(INTEREST_TYPE_FLAT)// .interestType(INTEREST_TYPE_FLAT)//
.interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)// .interestCalculationPeriodType(InterestCalculationPeriodTime.DAILY.value)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY.value)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY.value)//
.interestRecalculationCompoundingMethod(0)// .interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
@@ -463,7 +463,7 @@ public class LoanAccountData {
final EnumOptionData amortizationType, final BigDecimal interestRatePerPeriod, final EnumOptionData interestRateFrequencyType, final EnumOptionData amortizationType, final BigDecimal interestRatePerPeriod, final EnumOptionData interestRateFrequencyType,
final BigDecimal annualInterestRate, final EnumOptionData interestType, final boolean isFloatingInterestRate, final BigDecimal annualInterestRate, final EnumOptionData interestType, final boolean isFloatingInterestRate,
final BigDecimal interestRateDifferential, final EnumOptionData interestCalculationPeriodType, final BigDecimal interestRateDifferential, final EnumOptionData interestCalculationPeriodType,
Boolean allowPartialPeriodInterestCalcualtion, final LocalDate expectedFirstRepaymentOnDate, Boolean allowPartialPeriodInterestCalculation, final LocalDate expectedFirstRepaymentOnDate,
final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods,
final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, final LocalDate interestChargedFromDate, final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, final LocalDate interestChargedFromDate,
final LoanApplicationTimelineData timeline, final LoanSummaryData loanSummary, final LoanApplicationTimelineData timeline, final LoanSummaryData loanSummary,
@@ -508,7 +508,7 @@ public class LoanAccountData {
.setInterestRateFrequencyType(interestRateFrequencyType).setAnnualInterestRate(annualInterestRate) .setInterestRateFrequencyType(interestRateFrequencyType).setAnnualInterestRate(annualInterestRate)
.setInterestType(interestType).setFloatingInterestRate(isFloatingInterestRate) .setInterestType(interestType).setFloatingInterestRate(isFloatingInterestRate)
.setInterestRateDifferential(interestRateDifferential).setInterestCalculationPeriodType(interestCalculationPeriodType) .setInterestRateDifferential(interestRateDifferential).setInterestCalculationPeriodType(interestCalculationPeriodType)
.setAllowPartialPeriodInterestCalculation(allowPartialPeriodInterestCalcualtion) .setAllowPartialPeriodInterestCalculation(allowPartialPeriodInterestCalculation)
.setExpectedFirstRepaymentOnDate(expectedFirstRepaymentOnDate).setGraceOnPrincipalPayment(graceOnPrincipalPayment) .setExpectedFirstRepaymentOnDate(expectedFirstRepaymentOnDate).setGraceOnPrincipalPayment(graceOnPrincipalPayment)
.setRecurringMoratoriumOnPrincipalPeriods(recurringMoratoriumOnPrincipalPeriods) .setRecurringMoratoriumOnPrincipalPeriods(recurringMoratoriumOnPrincipalPeriods)
.setGraceOnInterestPayment(graceOnInterestPayment).setGraceOnInterestCharged(graceOnInterestCharged) .setGraceOnInterestPayment(graceOnInterestPayment).setGraceOnInterestCharged(graceOnInterestCharged)
@@ -90,7 +90,7 @@ public final class LoanApplicationTerms {
private PeriodFrequencyType interestRatePeriodFrequencyType; private PeriodFrequencyType interestRatePeriodFrequencyType;
private BigDecimal annualNominalInterestRate; private BigDecimal annualNominalInterestRate;
private InterestCalculationPeriodMethod interestCalculationPeriodMethod; private InterestCalculationPeriodMethod interestCalculationPeriodMethod;
private boolean allowPartialPeriodInterestCalcualtion; private boolean allowPartialPeriodInterestCalculation;
private Money principal; private Money principal;
private LocalDate expectedDisbursementDate; private LocalDate expectedDisbursementDate;
@@ -293,7 +293,7 @@ public final class LoanApplicationTerms {
this.buyDownFeeIncomeType = builder.buyDownFeeIncomeType; this.buyDownFeeIncomeType = builder.buyDownFeeIncomeType;
this.merchantBuyDownFee = builder.merchantBuyDownFee; this.merchantBuyDownFee = builder.merchantBuyDownFee;
this.interestMethod = builder.interestMethod; this.interestMethod = builder.interestMethod;
this.allowPartialPeriodInterestCalcualtion = builder.allowPartialPeriodInterestCalculation; this.allowPartialPeriodInterestCalculation = builder.allowPartialPeriodInterestCalculation;
} }
public static class Builder { public static class Builder {
@@ -688,7 +688,7 @@ public final class LoanApplicationTerms {
final PeriodFrequencyType repaymentPeriodFrequencyType, final Integer nthDay, final DayOfWeekType weekDayType, final PeriodFrequencyType repaymentPeriodFrequencyType, final Integer nthDay, final DayOfWeekType weekDayType,
final AmortizationMethod amortizationMethod, final InterestMethod interestMethod, final BigDecimal interestRatePerPeriod, final AmortizationMethod amortizationMethod, final InterestMethod interestMethod, final BigDecimal interestRatePerPeriod,
final PeriodFrequencyType interestRatePeriodFrequencyType, final BigDecimal annualNominalInterestRate, 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 Money principal, final LocalDate expectedDisbursementDate, final LocalDate repaymentsStartingFromDate,
final LocalDate calculatedRepaymentsStartingFromDate, final Integer principalGrace, final LocalDate calculatedRepaymentsStartingFromDate, final Integer principalGrace,
final Integer recurringMoratoriumOnPrincipalPeriods, final Integer interestPaymentGrace, final Integer interestChargingGrace, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer interestPaymentGrace, final Integer interestChargingGrace,
@@ -733,7 +733,7 @@ public final class LoanApplicationTerms {
this.interestRatePeriodFrequencyType = interestRatePeriodFrequencyType; this.interestRatePeriodFrequencyType = interestRatePeriodFrequencyType;
this.annualNominalInterestRate = annualNominalInterestRate; this.annualNominalInterestRate = annualNominalInterestRate;
this.interestCalculationPeriodMethod = interestCalculationPeriodMethod; this.interestCalculationPeriodMethod = interestCalculationPeriodMethod;
this.allowPartialPeriodInterestCalcualtion = allowPartialPeriodInterestCalcualtion; this.allowPartialPeriodInterestCalculation = allowPartialPeriodInterestCalculation;
this.principal = principal; this.principal = principal;
this.disbursedPrincipal = principal; this.disbursedPrincipal = principal;
@@ -1106,7 +1106,7 @@ public final class LoanApplicationTerms {
case INVALID: case INVALID:
break; break;
case SAME_AS_REPAYMENT_PERIOD: case SAME_AS_REPAYMENT_PERIOD:
if (this.allowPartialPeriodInterestCalcualtion) { if (this.allowPartialPeriodInterestCalculation) {
LocalDate startDate = getExpectedDisbursementDate(); LocalDate startDate = getExpectedDisbursementDate();
if (getInterestChargedFromDate() != null) { if (getInterestChargedFromDate() != null) {
startDate = getInterestChargedFromLocalDate(); startDate = getInterestChargedFromLocalDate();
@@ -1407,7 +1407,7 @@ public final class LoanApplicationTerms {
private BigDecimal calculateLoanTermFrequency(final LocalDate periodStartDate, final LocalDate periodEndDate) { private BigDecimal calculateLoanTermFrequency(final LocalDate periodStartDate, final LocalDate periodEndDate) {
BigDecimal loanTermFrequencyBigDecimal = BigDecimal.valueOf(this.repaymentEvery); BigDecimal loanTermFrequencyBigDecimal = BigDecimal.valueOf(this.repaymentEvery);
if (this.interestCalculationPeriodMethod.isDaily() || this.allowPartialPeriodInterestCalcualtion) { if (this.interestCalculationPeriodMethod.isDaily() || this.allowPartialPeriodInterestCalculation) {
loanTermFrequencyBigDecimal = calculatePeriodsBetweenDates(periodStartDate, periodEndDate); loanTermFrequencyBigDecimal = calculatePeriodsBetweenDates(periodStartDate, periodEndDate);
} }
return loanTermFrequencyBigDecimal; return loanTermFrequencyBigDecimal;
@@ -1681,7 +1681,7 @@ public final class LoanApplicationTerms {
return LoanProductRelatedDetail.createFrom(currency, this.principal.getAmount(), this.interestRatePerPeriod, return LoanProductRelatedDetail.createFrom(currency, this.principal.getAmount(), this.interestRatePerPeriod,
this.interestRatePeriodFrequencyType, this.annualNominalInterestRate, this.interestMethod, 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.repaymentPeriodFrequencyType, this.numberOfRepayments, this.principalGrace, this.recurringMoratoriumOnPrincipalPeriods,
this.interestPaymentGrace, this.interestChargingGrace, this.amortizationMethod, this.inArrearsTolerance.getAmount(), this.interestPaymentGrace, this.interestChargingGrace, this.amortizationMethod, this.inArrearsTolerance.getAmount(),
this.graceOnArrearsAgeing, this.daysInMonthType.getValue(), this.daysInYearType.getValue(), this.graceOnArrearsAgeing, this.daysInMonthType.getValue(), this.daysInYearType.getValue(),
@@ -1702,7 +1702,7 @@ public final class LoanApplicationTerms {
interestCalculationPeriodMethod, daysInYearType, daysInMonthType, amortizationMethod, repaymentPeriodFrequencyType, interestCalculationPeriodMethod, daysInYearType, daysInMonthType, amortizationMethod, repaymentPeriodFrequencyType,
repaymentEvery, numberOfRepayments, repaymentEvery, numberOfRepayments,
isInterestChargedFromDateSameAsDisbursalDateEnabled != null && isInterestChargedFromDateSameAsDisbursalDateEnabled, isInterestChargedFromDateSameAsDisbursalDateEnabled != null && isInterestChargedFromDateSameAsDisbursalDateEnabled,
daysInYearCustomStrategy, allowPartialPeriodInterestCalcualtion, interestRecalculationEnabled, recalculationFrequencyType, daysInYearCustomStrategy, allowPartialPeriodInterestCalculation, interestRecalculationEnabled, recalculationFrequencyType,
preClosureInterestCalculationStrategy); preClosureInterestCalculationStrategy);
} }
@@ -130,7 +130,7 @@ public interface LoanProductConstants {
String minimumGapBetweenInstallments = "minimumGap"; String minimumGapBetweenInstallments = "minimumGap";
String maximumGapBetweenInstallments = "maximumGap"; 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"; String CAN_USE_FOR_TOPUP = "canUseForTopup";
@@ -159,7 +159,7 @@ public final class LoanProductsApiResourceSwagger {
@Schema(example = "FULL_LEAP_YEAR") @Schema(example = "FULL_LEAP_YEAR")
public String daysInYearCustomStrategy; public String daysInYearCustomStrategy;
@Schema(example = "true") @Schema(example = "true")
public Boolean allowPartialPeriodInterestCalcualtion; public Boolean allowPartialPeriodInterestCalculation;
@Schema(example = "179") @Schema(example = "179")
public Integer overdueDaysForNPA; public Integer overdueDaysForNPA;
@Schema(example = "3") @Schema(example = "3")
@@ -1662,7 +1662,7 @@ public final class LoanProductsApiResourceSwagger {
@Schema(example = "FULL_LEAP_YEAR") @Schema(example = "FULL_LEAP_YEAR")
public String daysInYearCustomStrategy; public String daysInYearCustomStrategy;
@Schema(example = "true") @Schema(example = "true")
public Boolean allowPartialPeriodInterestCalcualtion; public Boolean allowPartialPeriodInterestCalculation;
@Schema(example = "179") @Schema(example = "179")
public Integer overdueDaysForNPA; public Integer overdueDaysForNPA;
@Schema(example = "3") @Schema(example = "3")
@@ -305,7 +305,7 @@ public class LoanProductData implements Serializable {
final EnumOptionData amortizationType = null; final EnumOptionData amortizationType = null;
final EnumOptionData interestType = null; final EnumOptionData interestType = null;
final EnumOptionData interestCalculationPeriodType = null; final EnumOptionData interestCalculationPeriodType = null;
final Boolean allowPartialPeriodInterestCalcualtion = null; final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null; final Long fundId = null;
final String fundName = null; final String fundName = null;
final String transactionProcessingStrategyCode = 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, return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName, amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment, transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariations, includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariations,
@@ -444,7 +444,7 @@ public class LoanProductData implements Serializable {
final EnumOptionData amortizationType = null; final EnumOptionData amortizationType = null;
final EnumOptionData interestType = null; final EnumOptionData interestType = null;
final EnumOptionData interestCalculationPeriodType = null; final EnumOptionData interestCalculationPeriodType = null;
final Boolean allowPartialPeriodInterestCalcualtion = null; final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null; final Long fundId = null;
final String fundName = null; final String fundName = null;
final String transactionProcessingStrategyCode = 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, return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName, amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment, transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariations, 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 interestType = LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE);
final EnumOptionData interestCalculationPeriodType = LoanEnumerations final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD); .interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD);
final Boolean allowPartialPeriodInterestCalcualtion = null; final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null; final Long fundId = null;
final String fundName = null; final String fundName = null;
final String transactionProcessingStrategyCode = 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, return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName, amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment, transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariationsForBorrowerCycle, 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 interestType = LoanEnumerations.interestType(InterestMethod.DECLINING_BALANCE);
final EnumOptionData interestCalculationPeriodType = LoanEnumerations final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD); .interestCalculationPeriodType(InterestCalculationPeriodMethod.SAME_AS_REPAYMENT_PERIOD);
final Boolean allowPartialPeriodInterestCalcualtion = null; final Boolean allowPartialPeriodInterestCalculation = null;
final Long fundId = null; final Long fundId = null;
final String fundName = null; final String fundName = null;
final String transactionProcessingStrategyCode = 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, return new LoanProductData(id, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, tolerance,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, interestRateFrequencyType,
amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalcualtion, fundId, fundName, amortizationType, interestType, interestCalculationPeriodType, allowPartialPeriodInterestCalculation, fundId, fundName,
transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment, transactionProcessingStrategyCode, transactionProcessingStrategyName, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, charges, accountingType,
includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariationsForBorrowerCycle, includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, principalVariationsForBorrowerCycle,
@@ -213,7 +213,7 @@ public class LoanProductRelatedDetail {
public static LoanProductRelatedDetail createFrom(final CurrencyData currencyData, final BigDecimal principal, public static LoanProductRelatedDetail createFrom(final CurrencyData currencyData, final BigDecimal principal,
final BigDecimal nominalInterestRatePerPeriod, final PeriodFrequencyType interestRatePeriodFrequencyType, final BigDecimal nominalInterestRatePerPeriod, final PeriodFrequencyType interestRatePeriodFrequencyType,
final BigDecimal nominalAnnualInterestRate, final InterestMethod interestMethod, 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 repaymentEvery, final PeriodFrequencyType repaymentPeriodFrequencyType, final Integer numberOfRepayments,
final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods, final Integer graceOnPrincipalPayment, final Integer recurringMoratoriumOnPrincipalPeriods,
final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, final AmortizationMethod amortizationMethod, final Integer graceOnInterestPayment, final Integer graceOnInterestCharged, final AmortizationMethod amortizationMethod,
@@ -233,7 +233,7 @@ public class LoanProductRelatedDetail {
final MonetaryCurrency currency = MonetaryCurrency.fromCurrencyData(currencyData); final MonetaryCurrency currency = MonetaryCurrency.fromCurrencyData(currencyData);
return new LoanProductRelatedDetail(currency, principal, nominalInterestRatePerPeriod, interestRatePeriodFrequencyType, return new LoanProductRelatedDetail(currency, principal, nominalInterestRatePerPeriod, interestRatePeriodFrequencyType,
nominalAnnualInterestRate, interestMethod, interestCalculationPeriodMethod, allowPartialPeriodInterestCalcualtion, nominalAnnualInterestRate, interestMethod, interestCalculationPeriodMethod, allowPartialPeriodInterestCalculation,
repaymentEvery, repaymentPeriodFrequencyType, numberOfRepayments, graceOnPrincipalPayment, repaymentEvery, repaymentPeriodFrequencyType, numberOfRepayments, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, amortizationMethod, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, amortizationMethod,
inArrearsTolerance, graceOnArrearsAgeing, daysInMonthType, daysInYearType, isInterestRecalculationEnabled, 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" + "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" + "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=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" + "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" + "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" + "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" @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" + "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" + "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 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 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") + "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 final InterestCalculationPeriodMethod interestCalculationPeriodMethod = allowOverridingInterestCalcPeriod
? InterestCalculationPeriodMethod.fromInt(interestCalculationPeriodType) ? InterestCalculationPeriodMethod.fromInt(interestCalculationPeriodType)
: loanProduct.getLoanProductRelatedDetail().getInterestCalculationPeriodMethod(); : loanProduct.getLoanProductRelatedDetail().getInterestCalculationPeriodMethod();
Boolean allowPartialPeriodInterestCalcualtion = this.fromApiJsonHelper Boolean allowPartialPeriodInterestCalculation = this.fromApiJsonHelper
.extractBooleanNamed(LoanProductConstants.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME, element); .extractBooleanNamed(LoanProductConstants.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME, element);
if (allowPartialPeriodInterestCalcualtion == null) { if (allowPartialPeriodInterestCalculation == null) {
allowPartialPeriodInterestCalcualtion = loanProduct.getLoanProductRelatedDetail().isAllowPartialPeriodInterestCalculation(); allowPartialPeriodInterestCalculation = loanProduct.getLoanProductRelatedDetail().isAllowPartialPeriodInterestCalculation();
} }
final BigDecimal interestRatePerPeriod = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("interestRatePerPeriod", element); final BigDecimal interestRatePerPeriod = this.fromApiJsonHelper.extractBigDecimalWithLocaleNamed("interestRatePerPeriod", element);
@@ -536,7 +536,7 @@ public class LoanScheduleAssembler {
return LoanApplicationTerms.assembleFrom(applicationCurrency.toData(), loanTermFrequency, loanTermPeriodFrequencyType, return LoanApplicationTerms.assembleFrom(applicationCurrency.toData(), loanTermFrequency, loanTermPeriodFrequencyType,
numberOfRepayments, repaymentEvery, repaymentPeriodFrequencyType, nthDay, weekDayType, amortizationMethod, interestMethod, numberOfRepayments, repaymentEvery, repaymentPeriodFrequencyType, nthDay, weekDayType, amortizationMethod, interestMethod,
interestRatePerPeriod, interestRatePeriodFrequencyType, annualNominalInterestRate, interestCalculationPeriodMethod, interestRatePerPeriod, interestRatePeriodFrequencyType, annualNominalInterestRate, interestCalculationPeriodMethod,
allowPartialPeriodInterestCalcualtion, principalMoney, expectedDisbursementDate, repaymentsStartingFromDate, allowPartialPeriodInterestCalculation, principalMoney, expectedDisbursementDate, repaymentsStartingFromDate,
calculatedRepaymentsStartingFromDate, graceOnPrincipalPayment, recurringMoratoriumOnPrincipalPeriods, calculatedRepaymentsStartingFromDate, graceOnPrincipalPayment, recurringMoratoriumOnPrincipalPeriods,
graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, inArrearsToleranceMoney, graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, inArrearsToleranceMoney,
loanProduct.isMultiDisburseLoan(), emiAmount, disbursementDatas, maxOutstandingBalance, graceOnArrearsAgeing, loanProduct.isMultiDisburseLoan(), emiAmount, disbursementDatas, maxOutstandingBalance, graceOnArrearsAgeing,
@@ -94,7 +94,7 @@ public class LoanProductAssembler {
final InterestMethod interestMethod = InterestMethod.fromInt(command.integerValueOfParameterNamed("interestType")); final InterestMethod interestMethod = InterestMethod.fromInt(command.integerValueOfParameterNamed("interestType"));
final InterestCalculationPeriodMethod interestCalculationPeriodMethod = InterestCalculationPeriodMethod final InterestCalculationPeriodMethod interestCalculationPeriodMethod = InterestCalculationPeriodMethod
.fromInt(command.integerValueOfParameterNamed("interestCalculationPeriodType")); .fromInt(command.integerValueOfParameterNamed("interestCalculationPeriodType"));
final boolean allowPartialPeriodInterestCalcualtion = command final boolean allowPartialPeriodInterestCalculation = command
.booleanPrimitiveValueOfParameterNamed(LoanProductConstants.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME); .booleanPrimitiveValueOfParameterNamed(LoanProductConstants.ALLOW_PARTIAL_PERIOD_INTEREST_CALCUALTION_PARAM_NAME);
final AmortizationMethod amortizationMethod = AmortizationMethod.fromInt(command.integerValueOfParameterNamed("amortizationType")); final AmortizationMethod amortizationMethod = AmortizationMethod.fromInt(command.integerValueOfParameterNamed("amortizationType"));
final PeriodFrequencyType repaymentFrequencyType = PeriodFrequencyType final PeriodFrequencyType repaymentFrequencyType = PeriodFrequencyType
@@ -337,7 +337,7 @@ public class LoanProductAssembler {
return new LoanProduct(fund, loanTransactionProcessingStrategy, loanProductPaymentAllocationRules, loanProductCreditAllocationRules, return new LoanProduct(fund, loanTransactionProcessingStrategy, loanProductPaymentAllocationRules, loanProductCreditAllocationRules,
name, shortName, description, currency, principal, minPrincipal, maxPrincipal, interestRatePerPeriod, name, shortName, description, currency, principal, minPrincipal, maxPrincipal, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, interestFrequencyType, annualInterestRate, interestMethod, minInterestRatePerPeriod, maxInterestRatePerPeriod, interestFrequencyType, annualInterestRate, interestMethod,
interestCalculationPeriodMethod, allowPartialPeriodInterestCalcualtion, repaymentEvery, repaymentFrequencyType, interestCalculationPeriodMethod, allowPartialPeriodInterestCalculation, repaymentEvery, repaymentFrequencyType,
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, graceOnPrincipalPayment, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, amortizationMethod, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, amortizationMethod,
inArrearsTolerance, productCharges, accountingRuleType, includeInBorrowerCycle, startDate, closeDate, externalId, 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.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.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.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_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.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." + " 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 interestType = LoanEnumerations.interestType(interestTypeInt);
final EnumOptionData interestCalculationPeriodType = LoanEnumerations final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(interestCalculationPeriodTypeInt); .interestCalculationPeriodType(interestCalculationPeriodTypeInt);
final Boolean allowPartialPeriodInterestCalcualtion = rs.getBoolean("allowPartialPeriodInterestCalcualtion"); final Boolean allowPartialPeriodInterestCalculation = rs.getBoolean("allowPartialPeriodInterestCalculation");
final Integer lifeCycleStatusId = JdbcSupport.getInteger(rs, "lifeCycleStatusId"); final Integer lifeCycleStatusId = JdbcSupport.getInteger(rs, "lifeCycleStatusId");
final LoanStatusEnumData status = LoanEnumerations.status(lifeCycleStatusId); final LoanStatusEnumData status = LoanEnumerations.status(lifeCycleStatusId);
@@ -1264,7 +1264,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService, Loa
termFrequency, termPeriodFrequencyType, numberOfRepayments, repaymentEvery, repaymentFrequencyType, null, null, termFrequency, termPeriodFrequencyType, numberOfRepayments, repaymentEvery, repaymentFrequencyType, null, null,
transactionStrategyCode, transactionStrategyName, amortizationType, interestRatePerPeriod, interestRateFrequencyType, transactionStrategyCode, transactionStrategyName, amortizationType, interestRatePerPeriod, interestRateFrequencyType,
annualInterestRate, interestType, isFloatingInterestRate, interestRateDifferential, interestCalculationPeriodType, annualInterestRate, interestType, isFloatingInterestRate, interestRateDifferential, interestCalculationPeriodType,
allowPartialPeriodInterestCalcualtion, expectedFirstRepaymentOnDate, graceOnPrincipalPayment, allowPartialPeriodInterestCalculation, expectedFirstRepaymentOnDate, graceOnPrincipalPayment,
recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, interestChargedFromDate,
timeline, loanSummary, feeChargesDueAtDisbursementCharged, syncDisbursementWithMeeting, loanCounter, loanProductCounter, timeline, loanSummary, feeChargesDueAtDisbursementCharged, syncDisbursementWithMeeting, loanCounter, loanProductCounter,
multiDisburseLoan, canDefineInstallmentAmount, fixedEmiAmount, outstandingLoanBalance, inArrears, graceOnArrearsAgeing, 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" @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" + "\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" + "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 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 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" + "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.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.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.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.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.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, " + "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 EnumOptionData interestType = LoanEnumerations.interestType(interestTypeId);
final int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs, "interestCalculationInPeriodMethod"); final int interestCalculationPeriodTypeId = JdbcSupport.getInteger(rs, "interestCalculationInPeriodMethod");
final Boolean allowPartialPeriodInterestCalcualtion = rs.getBoolean("allowPartialPeriodInterestCalcualtion"); final Boolean allowPartialPeriodInterestCalculation = rs.getBoolean("allowPartialPeriodInterestCalculation");
final EnumOptionData interestCalculationPeriodType = LoanEnumerations final EnumOptionData interestCalculationPeriodType = LoanEnumerations
.interestCalculationPeriodType(interestCalculationPeriodTypeId); .interestCalculationPeriodType(interestCalculationPeriodTypeId);
@@ -586,7 +586,7 @@ public class LoanProductReadPlatformServiceImpl implements LoanProductReadPlatfo
numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod, numberOfRepayments, minNumberOfRepayments, maxNumberOfRepayments, repaymentEvery, interestRatePerPeriod,
minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType, minInterestRatePerPeriod, maxInterestRatePerPeriod, annualInterestRate, repaymentFrequencyType,
interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType, interestRateFrequencyType, amortizationType, interestType, interestCalculationPeriodType,
allowPartialPeriodInterestCalcualtion, fundId, fundName, transactionStrategyCode, transactionStrategyName, allowPartialPeriodInterestCalculation, fundId, fundName, transactionStrategyCode, transactionStrategyName,
graceOnPrincipalPayment, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged, graceOnPrincipalPayment, recurringMoratoriumOnPrincipalPeriods, graceOnInterestPayment, graceOnInterestCharged,
this.charges, accountingRuleType, includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId, this.charges, accountingRuleType, includeInBorrowerCycle, useBorrowerCycle, startDate, closeDate, status, externalId,
principalVariationsForBorrowerCycle, interestRateVariationsForBorrowerCycle, 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 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 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" + "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'") + "Showing request/response for 'Submit a new Loan Application'")
@RequestBody(required = true, content = @Content(schema = @Schema(implementation = SelfLoansApiResourceSwagger.PostSelfLoansRequest.class))) @RequestBody(required = true, content = @Content(schema = @Schema(implementation = SelfLoansApiResourceSwagger.PostSelfLoansRequest.class)))
@ApiResponses({ @ApiResponses({
@@ -63,7 +63,7 @@ import org.springframework.stereotype.Component;
+ "Example Values: 0=Equal principle payments, 1=Equal installments\n" + "interestType\n" + "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" + "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=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" + "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" + "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" + "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> <td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
</tr> </tr>
<tr class=alt> <tr class=alt>
<td>allowPartialPeriodInterestCalcualtion</td> <td>allowPartialPeriodInterestCalculation</td>
</tr> </tr>
<tr> <tr>
<td class=fielddesc>This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods. <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> <td><div class="fineractHeading2">Optional Fields</div></td>
</tr> </tr>
<tr class=alt> <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 fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true), daysInYearType
</td> </td>
</tr> </tr>
@@ -15688,7 +15688,7 @@ Request Body:
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td> <td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
</tr> </tr>
<tr class=alt> <tr class=alt>
<td>allowPartialPeriodInterestCalcualtion</td> <td>allowPartialPeriodInterestCalculation</td>
</tr> </tr>
<tr> <tr>
<td class=fielddesc>This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods. <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, numberOfRepaymentVariationsForBorrowerCycle,
interestRateVariationsForBorrowerCycle, interestRateVariationsForBorrowerCycle,
multiDisburseLoan,maxTrancheCount, multiDisburseLoan,maxTrancheCount,
outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalcualtion, rates outstandingLoanBalance,overdueDaysForNPA,holdGuaranteeFunds, principalThresholdForLastInstalment, accountMovesOutOfNPAOnlyOnArrearsCompletion, canDefineInstallmentAmount, installmentAmountInMultiplesOf, allowAttributeOverrides, allowPartialPeriodInterestCalculation, rates
</td> </td>
</tr> </tr>
</table> </table>
@@ -48399,7 +48399,7 @@ Request Body:
<td><div class="fineractHeading2">Optional Fields</div></td> <td><div class="fineractHeading2">Optional Fields</div></td>
</tr> </tr>
<tr class=alt> <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) fixedEmiAmount, maxOutstandingLoanBalance, disbursementData, graceOnArrearsAgeing, createStandingInstructionAtDisbursement (requires linkedAccountId if set to true)
</td> </td>
</tr> </tr>
@@ -51616,7 +51616,7 @@ No Request Body:
<td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td> <td class=fielddesc><span>Example Values:</span> 0=Daily, 1=Same as repayment period</td>
</tr> </tr>
<tr class=alt> <tr class=alt>
<td>allowPartialPeriodInterestCalcualtion</td> <td>allowPartialPeriodInterestCalculation</td>
</tr> </tr>
<tr> <tr>
<td class=fielddesc>This value will be supported along with interestCalculationPeriodType as Same as repayment period to calculate interest for partial periods. <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)// .repaymentEvery(1)//
.repaymentFrequencyType(2L)// .repaymentFrequencyType(2L)//
.enableDownPayment(true)// .enableDownPayment(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(false)// .enableAutoRepaymentForDownPayment(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
@@ -4512,7 +4512,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(2L)// .repaymentFrequencyType(2L)//
.enableDownPayment(true)// .enableDownPayment(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(false)// .enableAutoRepaymentForDownPayment(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
@@ -4575,7 +4575,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(2L)// .repaymentFrequencyType(2L)//
.enableDownPayment(true)// .enableDownPayment(true)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(false)// .enableAutoRepaymentForDownPayment(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
@@ -4637,7 +4637,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_365).numberOfRepayments(4)// .daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_365).numberOfRepayments(4)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(2L)// .repaymentFrequencyType(2L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -4739,7 +4739,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 110)// .maxInterestRatePerPeriod((double) 110)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(1L)// .repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -4918,7 +4918,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_365).numberOfRepayments(4)// .daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_365).numberOfRepayments(4)//
.repaymentEvery(5)// .repaymentEvery(5)//
.repaymentFrequencyType(0L)// .repaymentFrequencyType(0L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -4982,7 +4982,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(2L)// .repaymentFrequencyType(2L)//
.enableDownPayment(false)// .enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(null)// .enableAutoRepaymentForDownPayment(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
@@ -5064,7 +5064,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(2L)// .repaymentFrequencyType(2L)//
.enableDownPayment(false)// .enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(null)// .enableAutoRepaymentForDownPayment(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
@@ -5163,7 +5163,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())// .repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())//
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())// .repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)// .enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.enableAutoRepaymentForDownPayment(null)// .enableAutoRepaymentForDownPayment(null)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
@@ -5280,7 +5280,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())// .repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())//
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())// .repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)// .enableDownPayment(false)//
.allowPartialPeriodInterestCalcualtion(null)// .allowPartialPeriodInterestCalculation(null)//
.enableAutoRepaymentForDownPayment(null)// .enableAutoRepaymentForDownPayment(null)//
.isInterestRecalculationEnabled(true)// .isInterestRecalculationEnabled(true)//
.interestRecalculationCompoundingMethod(0)// .interestRecalculationCompoundingMethod(0)//
@@ -5454,7 +5454,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 0)// .maxInterestRatePerPeriod((double) 0)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(1L)// .repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5527,7 +5527,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 12)// .maxInterestRatePerPeriod((double) 12)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())// .repaymentFrequencyType(RepaymentFrequencyType.MONTHS.longValue())//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5574,7 +5574,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
PostLoanProductsRequest product = create4IProgressive().interestRateFrequencyType(YEARS).numberOfRepayments(6)// PostLoanProductsRequest product = create4IProgressive().interestRateFrequencyType(YEARS).numberOfRepayments(6)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(1L)// .repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(true)// .multiDisburseLoan(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.disallowExpectedDisbursements(true)// .disallowExpectedDisbursements(true)//
@@ -5757,7 +5757,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.maxInterestRatePerPeriod((double) 0)// .maxInterestRatePerPeriod((double) 0)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(1L)// .repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5915,7 +5915,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_360).numberOfRepayments(3)// .daysInMonthType(DaysInMonthType.ACTUAL).daysInYearType(DaysInYearType.DAYS_360).numberOfRepayments(3)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(1L)// .repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
.allowApprovedDisbursedAmountsOverApplied(null)// .allowApprovedDisbursedAmountsOverApplied(null)//
@@ -5973,7 +5973,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.interestRatePerPeriod(12.0).interestCalculationPeriodType(RepaymentFrequencyType.DAYS).numberOfRepayments(4)// .interestRatePerPeriod(12.0).interestCalculationPeriodType(RepaymentFrequencyType.DAYS).numberOfRepayments(4)//
.repaymentEvery(1)// .repaymentEvery(1)//
.repaymentFrequencyType(1L)// .repaymentFrequencyType(1L)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.installmentAmountInMultiplesOf(null)// .installmentAmountInMultiplesOf(null)//
.multiDisburseLoan(false)// .multiDisburseLoan(false)//
.disallowExpectedDisbursements(null)// .disallowExpectedDisbursements(null)//
@@ -6045,7 +6045,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())// .repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)// .enableDownPayment(false)//
.enableAccrualActivityPosting(true)// .enableAccrualActivityPosting(true)//
.allowPartialPeriodInterestCalcualtion(null)// .allowPartialPeriodInterestCalculation(null)//
.enableAutoRepaymentForDownPayment(null)// .enableAutoRepaymentForDownPayment(null)//
.isInterestRecalculationEnabled(true)// .isInterestRecalculationEnabled(true)//
.delinquencyBucketId(delinquencyBucketId.longValue())// .delinquencyBucketId(delinquencyBucketId.longValue())//
@@ -6187,7 +6187,7 @@ public class AdvancedPaymentAllocationLoanRepaymentScheduleTest extends BaseLoan
.repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())// .repaymentStartDateType(LoanProduct.RepaymentStartDateTypeEnum.SUBMITTED_ON_DATE.ordinal())//
.enableDownPayment(false)// .enableDownPayment(false)//
.enableAccrualActivityPosting(true)// .enableAccrualActivityPosting(true)//
.allowPartialPeriodInterestCalcualtion(null)// .allowPartialPeriodInterestCalculation(null)//
.enableAutoRepaymentForDownPayment(null)// .enableAutoRepaymentForDownPayment(null)//
.isInterestRecalculationEnabled(true)// .isInterestRecalculationEnabled(true)//
.delinquencyBucketId(delinquencyBucketId.longValue())// .delinquencyBucketId(delinquencyBucketId.longValue())//
@@ -434,7 +434,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)// .amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)// .interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)// .interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.creditAllocation(List.of())// .creditAllocation(List.of())//
.overdueDaysForNPA(179)// .overdueDaysForNPA(179)//
.daysInMonthType(30)// .daysInMonthType(30)//
@@ -530,7 +530,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)// .amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)// .interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)// .interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.transactionProcessingStrategyCode(ADVANCED_PAYMENT_ALLOCATION_STRATEGY)// .transactionProcessingStrategyCode(ADVANCED_PAYMENT_ALLOCATION_STRATEGY)//
.paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT")))// .paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT")))//
.creditAllocation(List.of())// .creditAllocation(List.of())//
@@ -632,7 +632,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)// .amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)// .interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)// .interestCalculationPeriodType(InterestCalculationPeriodType.DAILY)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.transactionProcessingStrategyCode(ADVANCED_PAYMENT_ALLOCATION_STRATEGY)// .transactionProcessingStrategyCode(ADVANCED_PAYMENT_ALLOCATION_STRATEGY)//
.paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT")))// .paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT")))//
.creditAllocation(List.of())// .creditAllocation(List.of())//
@@ -768,7 +768,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())// .charges(Collections.emptyList())//
@@ -824,7 +824,7 @@ public abstract class BaseLoanIntegrationTest extends IntegrationTest {
.loanScheduleProcessingType(LoanScheduleProcessingType.HORIZONTAL.toString()) // .loanScheduleProcessingType(LoanScheduleProcessingType.HORIZONTAL.toString()) //
.addPaymentAllocationItem(defaultAllocation).enableDownPayment(false) // .addPaymentAllocationItem(defaultAllocation).enableDownPayment(false) //
.isInterestRecalculationEnabled(true).interestRecalculationCompoundingMethod(0) // .isInterestRecalculationEnabled(true).interestRecalculationCompoundingMethod(0) //
.preClosureInterestCalculationStrategy(1).recalculationRestFrequencyType(1).allowPartialPeriodInterestCalcualtion(true) // .preClosureInterestCalculationStrategy(1).recalculationRestFrequencyType(1).allowPartialPeriodInterestCalculation(true) //
.rescheduleStrategyMethod(rescheduleStrategyMethod); .rescheduleStrategyMethod(rescheduleStrategyMethod);
} }
@@ -8324,7 +8324,7 @@ public class ClientLoanIntegrationTest extends BaseLoanIntegrationTest {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())// .charges(Collections.emptyList())//
@@ -751,7 +751,7 @@ public class LoanAccountChargeOffWithAdvancedPaymentAllocationTest extends BaseL
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -443,7 +443,7 @@ public class LoanAccountChargeReveseReplayWithAdvancedPaymentAllocationTest exte
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -261,7 +261,7 @@ public class LoanBuyDownFeeTest extends BaseLoanIntegrationTest {
.repaymentFrequencyType(RepaymentFrequencyType.MONTHS_L).interestRatePerPeriod(10.0).minInterestRatePerPeriod(0.0) .repaymentFrequencyType(RepaymentFrequencyType.MONTHS_L).interestRatePerPeriod(10.0).minInterestRatePerPeriod(0.0)
.maxInterestRatePerPeriod(120.0).interestRateFrequencyType(InterestRateFrequencyType.YEARS) .maxInterestRatePerPeriod(120.0).interestRateFrequencyType(InterestRateFrequencyType.YEARS)
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS).interestType(InterestType.DECLINING_BALANCE) .amortizationType(AmortizationType.EQUAL_INSTALLMENTS).interestType(InterestType.DECLINING_BALANCE)
.interestCalculationPeriodType(InterestCalculationPeriodType.DAILY).allowPartialPeriodInterestCalcualtion(false) .interestCalculationPeriodType(InterestCalculationPeriodType.DAILY).allowPartialPeriodInterestCalculation(false)
.transactionProcessingStrategyCode("advanced-payment-allocation-strategy") .transactionProcessingStrategyCode("advanced-payment-allocation-strategy")
.paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT"))).creditAllocation(List.of()) .paymentAllocation(List.of(createDefaultPaymentAllocation("NEXT_INSTALLMENT"))).creditAllocation(List.of())
.daysInMonthType(30).daysInYearType(360).isInterestRecalculationEnabled(false).accountingRule(3) // Accrual-based .daysInMonthType(30).daysInYearType(360).isInterestRecalculationEnabled(false).accountingRule(3) // Accrual-based
@@ -945,7 +945,7 @@ public class LoanChargeOffAccountingTest extends BaseLoanIntegrationTest {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())// .charges(Collections.emptyList())//
@@ -1212,7 +1212,7 @@ public class LoanPostChargeOffScenariosTest extends BaseLoanIntegrationTest {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -222,7 +222,7 @@ public class LoanProductChargeOffReasonMappingsTest extends BaseLoanIntegrationT
.interestRecalculationCompoundingMethod(0)// .interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyType(2)// .recalculationRestFrequencyType(2)//
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.allowPartialPeriodInterestCalcualtion(false);// .allowPartialPeriodInterestCalculation(false);//
} }
@NonNull @NonNull
@@ -1542,7 +1542,7 @@ public class LoanTransactionAccrualActivityPostingTest extends BaseLoanIntegrati
.interestRecalculationCompoundingMethod(0)// .interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyType(2)// .recalculationRestFrequencyType(2)//
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.allowPartialPeriodInterestCalcualtion(false);// .allowPartialPeriodInterestCalculation(false);//
} }
@@ -251,7 +251,7 @@ public class RepaymentReverseExternalIdTest extends BaseLoanIntegrationTest {
.interestRecalculationCompoundingMethod(0)// .interestRecalculationCompoundingMethod(0)//
.recalculationRestFrequencyType(2)// .recalculationRestFrequencyType(2)//
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.allowPartialPeriodInterestCalcualtion(false);// .allowPartialPeriodInterestCalculation(false);//
} }
private Integer createLoanAccount(final Integer clientID, final Long loanProductID, final String externalId) { private Integer createLoanAccount(final Integer clientID, final Long loanProductID, final String externalId) {
@@ -294,7 +294,7 @@ public class UndoRepaymentWithDownPaymentIntegrationTest extends BaseLoanIntegra
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(charges)// .charges(charges)//
@@ -96,7 +96,7 @@ public interface LoanProductTemplates {
.repaymentEvery(true)// .repaymentEvery(true)//
.graceOnPrincipalAndInterestPayment(true)// .graceOnPrincipalAndInterestPayment(true)//
.graceOnArrearsAgeing(true))// .graceOnArrearsAgeing(true))//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.maxTrancheCount(10)// .maxTrancheCount(10)//
.outstandingLoanBalance(10000.0)// .outstandingLoanBalance(10000.0)//
.charges(Collections.emptyList())// .charges(Collections.emptyList())//
@@ -171,7 +171,7 @@ public interface LoanProductTemplates {
.amortizationType(AmortizationType.EQUAL_INSTALLMENTS)// .amortizationType(AmortizationType.EQUAL_INSTALLMENTS)//
.interestType(InterestType.DECLINING_BALANCE)// .interestType(InterestType.DECLINING_BALANCE)//
.interestCalculationPeriodType(InterestCalculationPeriodType.SAME_AS_REPAYMENT_PERIOD)// .interestCalculationPeriodType(InterestCalculationPeriodType.SAME_AS_REPAYMENT_PERIOD)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.creditAllocation(List.of())// .creditAllocation(List.of())//
.overdueDaysForNPA(179)// .overdueDaysForNPA(179)//
.daysInMonthType(DaysInMonthType.DAYS_30)// .daysInMonthType(DaysInMonthType.DAYS_30)//
@@ -141,7 +141,7 @@ public class LoanProductTestBuilder {
private String graceOnPrincipalPayment = null; private String graceOnPrincipalPayment = null;
private String graceOnInterestPayment = null; private String graceOnInterestPayment = null;
private JsonObject allowAttributeOverrides = null; private JsonObject allowAttributeOverrides = null;
private Boolean allowPartialPeriodInterestCalcualtion = false; private Boolean allowPartialPeriodInterestCalculation = false;
private Boolean allowVariableInstallments = Boolean.FALSE; private Boolean allowVariableInstallments = Boolean.FALSE;
private Integer minimumGap; private Integer minimumGap;
@@ -290,7 +290,7 @@ public class LoanProductTestBuilder {
if (allowAttributeOverrides != null) { if (allowAttributeOverrides != null) {
map.put("allowAttributeOverrides", this.allowAttributeOverrides); map.put("allowAttributeOverrides", this.allowAttributeOverrides);
} }
map.put("allowPartialPeriodInterestCalcualtion", this.allowPartialPeriodInterestCalcualtion); map.put("allowPartialPeriodInterestCalculation", this.allowPartialPeriodInterestCalculation);
map.put("allowVariableInstallments", allowVariableInstallments); map.put("allowVariableInstallments", allowVariableInstallments);
if (allowVariableInstallments) { if (allowVariableInstallments) {
map.put("minimumGap", minimumGap); map.put("minimumGap", minimumGap);
@@ -471,9 +471,9 @@ public class LoanProductTestBuilder {
return this; return this;
} }
public LoanProductTestBuilder withInterestCalculationPeriodTypeAsRepaymentPeriod(final Boolean allowPartialPeriodInterestCalcualtion) { public LoanProductTestBuilder withInterestCalculationPeriodTypeAsRepaymentPeriod(final Boolean allowPartialPeriodInterestCalculation) {
this.interestCalculationPeriodType = CALCULATION_PERIOD_SAME_AS_REPAYMENT_PERIOD; this.interestCalculationPeriodType = CALCULATION_PERIOD_SAME_AS_REPAYMENT_PERIOD;
this.allowPartialPeriodInterestCalcualtion = allowPartialPeriodInterestCalcualtion; this.allowPartialPeriodInterestCalculation = allowPartialPeriodInterestCalculation;
return this; return this;
} }
@@ -814,8 +814,8 @@ public class LoanProductTestBuilder {
return this; return this;
} }
public LoanProductTestBuilder withAllowPartialPeriodInterestCalculation(final Boolean allowPartialPeriodInterestCalcualtion) { public LoanProductTestBuilder withAllowPartialPeriodInterestCalculation(final Boolean allowPartialPeriodInterestCalculation) {
this.allowPartialPeriodInterestCalcualtion = allowPartialPeriodInterestCalcualtion; this.allowPartialPeriodInterestCalculation = allowPartialPeriodInterestCalculation;
return this; return this;
} }
@@ -61,7 +61,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -85,7 +85,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -171,7 +171,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -242,7 +242,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -326,7 +326,7 @@ public class LoanApiIntegrationTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -80,7 +80,7 @@ public class LoanPenaltyBackdatedTransactionTest extends BaseLoanIntegrationTest
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -193,7 +193,7 @@ public class LoanPenaltyBackdatedTransactionTest extends BaseLoanIntegrationTest
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -307,7 +307,7 @@ public class LoanPenaltyBackdatedTransactionTest extends BaseLoanIntegrationTest
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -68,7 +68,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -208,7 +208,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -372,7 +372,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.ADJUST_LAST_UNPAID_PERIOD)// .rescheduleStrategyMethod(RescheduleStrategyMethod.ADJUST_LAST_UNPAID_PERIOD)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -543,7 +543,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -687,7 +687,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -785,7 +785,7 @@ public class LoanPointInTimeTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -63,7 +63,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.DAILY)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(false)// .allowPartialPeriodInterestCalculation(false)//
.disallowExpectedDisbursements(false)// .disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -159,7 +159,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT_PERIOD)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT_PERIOD)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.preClosureInterestCalculationStrategy(1).disallowExpectedDisbursements(false)// .preClosureInterestCalculationStrategy(1).disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//
@@ -242,7 +242,7 @@ public class LoanRepaymentTest extends BaseLoanIntegrationTest {
.recalculationRestFrequencyInterval(1)// .recalculationRestFrequencyInterval(1)//
.recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT_PERIOD)// .recalculationRestFrequencyType(RecalculationRestFrequencyType.SAME_AS_REPAYMENT_PERIOD)//
.rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)// .rescheduleStrategyMethod(RescheduleStrategyMethod.REDUCE_EMI_AMOUNT)//
.allowPartialPeriodInterestCalcualtion(true)// .allowPartialPeriodInterestCalculation(true)//
.preClosureInterestCalculationStrategy(2).disallowExpectedDisbursements(false)// .preClosureInterestCalculationStrategy(2).disallowExpectedDisbursements(false)//
.allowApprovedDisbursedAmountsOverApplied(false)// .allowApprovedDisbursedAmountsOverApplied(false)//
.overAppliedNumber(null)// .overAppliedNumber(null)//