From 3ae8f8064d41250d8a920ef57ad19c1a58f19870 Mon Sep 17 00:00:00 2001 From: Wilfred Kigenyi Date: Tue, 12 Mar 2024 16:18:20 +0300 Subject: [PATCH] use48Weeks --- .../loanschedule/domain/LoanApplicationTerms.java | 6 +++--- .../domain/PaymentPeriodsInOneYearCalculator.java | 2 +- .../domain/DefaultPaymentPeriodsInOneYearCalculator.java | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java index f908d0df484..67ee002c985 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java @@ -1056,7 +1056,7 @@ private BigDecimal calculateLoanTermFrequency(final LocalDate periodStartDate, f public BigDecimal interestRateFor(final PaymentPeriodsInOneYearCalculator calculator, final MathContext mc, final Money outstandingBalance, final LocalDate fromDate, final LocalDate toDate) { - long loanTermPeriodsInOneYear = calculator.calculate(PeriodFrequencyType.DAYS).longValue(); + long loanTermPeriodsInOneYear = calculator.calculate(PeriodFrequencyType.DAYS,interestRatePeriodFrequencyType).longValue(); int repaymentEvery = Math.toIntExact(ChronoUnit.DAYS.between(fromDate, toDate)); if (isFallingInRepaymentPeriod(fromDate, toDate)) { loanTermPeriodsInOneYear = calculatePeriodsInOneYear(calculator); @@ -1081,13 +1081,13 @@ private long calculatePeriodsInOneYear(final PaymentPeriodsInOneYearCalculator c if (daysInYearToUse) { periodsInOneYear = this.daysInYearType.getValue().longValue(); } else { - periodsInOneYear = calculator.calculate(this.repaymentPeriodFrequencyType).longValue(); + periodsInOneYear = calculator.calculate(this.repaymentPeriodFrequencyType,interestRatePeriodFrequencyType).longValue(); } switch (this.interestCalculationPeriodMethod) { case DAILY: periodsInOneYear = !this.daysInYearType.getCode().equalsIgnoreCase("DaysInYearType.actual") ? this.daysInYearType.getValue().longValue() - : calculator.calculate(PeriodFrequencyType.DAYS).longValue(); + : calculator.calculate(PeriodFrequencyType.DAYS,interestRatePeriodFrequencyType).longValue(); break; case INVALID: break; diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java index 508c6379f0a..ce475b6f1be 100644 --- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java +++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/PaymentPeriodsInOneYearCalculator.java @@ -25,7 +25,7 @@ public interface PaymentPeriodsInOneYearCalculator { - Integer calculate(PeriodFrequencyType repaymentFrequencyType); + Integer calculate(PeriodFrequencyType repaymentFrequencyType, PeriodFrequencyType interestRatePeriodType); BigDecimal calculatePortionOfRepaymentPeriodInterestChargingGrace(LocalDate repaymentPeriodStartDate, LocalDate scheduledDueDate, LocalDate interestChargedFromLocalDate, PeriodFrequencyType repaymentPeriodFrequencyType, int repaidEvery, MathContext mc); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultPaymentPeriodsInOneYearCalculator.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultPaymentPeriodsInOneYearCalculator.java index 4c7cc946433..6e5d499ff53 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultPaymentPeriodsInOneYearCalculator.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/DefaultPaymentPeriodsInOneYearCalculator.java @@ -32,15 +32,15 @@ public class DefaultPaymentPeriodsInOneYearCalculator implements PaymentPeriodsInOneYearCalculator { @Override - public Integer calculate(final PeriodFrequencyType repaymentFrequencyType) { + public Integer calculate(final PeriodFrequencyType repaymentFrequencyType,final PeriodFrequencyType interestRateFrequencyMethod) { Integer paymentPeriodsInOneYear = 0; switch (repaymentFrequencyType) { case DAYS: - paymentPeriodsInOneYear = 365; + paymentPeriodsInOneYear = interestRateFrequencyMethod.isMonthly() ? Integer.valueOf(360) : Integer.valueOf(365); break; case WEEKS: - paymentPeriodsInOneYear = 52; + paymentPeriodsInOneYear = interestRateFrequencyMethod.isMonthly() ? Integer.valueOf(48) : Integer.valueOf(52); break; case MONTHS: paymentPeriodsInOneYear = 12;