Repository: incubator-fineract
Updated Branches:
  refs/heads/develop f55a16755 -> 7b0fcc567


[Fineract-361] Partial periods not to be considered for PMT calculations


Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/5fe0e529
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/5fe0e529
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/5fe0e529

Branch: refs/heads/develop
Commit: 5fe0e529e7762c6972bd8926b5de6b9a0d0fb5ab
Parents: 9a6b5d1
Author: Adi Narayana Raju <adi.r...@confluxtechnologies.com>
Authored: Mon Jan 2 16:10:30 2017 +0530
Committer: Adi Narayana Raju <adi.r...@confluxtechnologies.com>
Committed: Mon Jan 2 16:10:30 2017 +0530

----------------------------------------------------------------------
 .../loanschedule/domain/LoanApplicationTerms.java  | 17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/5fe0e529/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java
----------------------------------------------------------------------
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java
index 0746522..b7aaf12 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/domain/LoanApplicationTerms.java
@@ -633,7 +633,7 @@ public final class LoanApplicationTerms {
         // with periodic interest for default month and year for
         // equal installment
         final BigDecimal periodicInterestRateForRepaymentPeriod = 
periodicInterestRate(calculator, mc, DaysInMonthType.DAYS_30,
-                DaysInYearType.DAYS_365, periodStartDate, periodEndDate);
+                DaysInYearType.DAYS_365, periodStartDate, periodEndDate, true);
         Money totalPmtForThisInstallment = 
calculateTotalDueForEqualInstallmentRepaymentPeriod(periodicInterestRateForRepaymentPeriod,
                 outstandingBalance, periodsElapsed);
         return totalPmtForThisInstallment;
@@ -966,7 +966,13 @@ public final class LoanApplicationTerms {
     }
 
     private BigDecimal periodicInterestRate(final 
PaymentPeriodsInOneYearCalculator calculator, final MathContext mc,
-            final DaysInMonthType daysInMonthType, final DaysInYearType 
daysInYearType, LocalDate periodStartDate, LocalDate periodEndDate) {
+            final DaysInMonthType daysInMonthType, final DaysInYearType 
daysInYearType, LocalDate periodStartDate,
+            LocalDate periodEndDate) {
+        return periodicInterestRate(calculator, mc, daysInMonthType, 
daysInYearType, periodStartDate, periodEndDate, false);
+    }
+
+    private BigDecimal periodicInterestRate(final 
PaymentPeriodsInOneYearCalculator calculator, final MathContext mc, final 
DaysInMonthType daysInMonthType,
+            final DaysInYearType daysInYearType, LocalDate periodStartDate, 
LocalDate periodEndDate, boolean isForPMT) {
 
         final long loanTermPeriodsInOneYear = 
calculatePeriodsInOneYear(calculator);
 
@@ -974,7 +980,12 @@ public final class LoanApplicationTerms {
         final BigDecimal loanTermPeriodsInYearBigDecimal = 
BigDecimal.valueOf(loanTermPeriodsInOneYear);
 
         BigDecimal periodicInterestRate = BigDecimal.ZERO;
-        BigDecimal loanTermFrequencyBigDecimal = 
calculateLoanTermFrequency(periodStartDate, periodEndDate);
+        BigDecimal loanTermFrequencyBigDecimal = BigDecimal.ONE;
+        if(isForPMT){
+            loanTermFrequencyBigDecimal = 
BigDecimal.valueOf(this.repaymentEvery);
+        } else {
+            loanTermFrequencyBigDecimal = 
calculateLoanTermFrequency(periodStartDate, periodEndDate);
+        }
         switch (this.interestCalculationPeriodMethod) {
             case INVALID:
             break;

Reply via email to