Repository: incubator-fineract
Updated Branches:
  refs/heads/develop f1f3d6516 -> f159e59c1


FINERACT-89 : 1st tranche will appear twice in repayment schedule when 
disbursement date and first repayment date is on same date


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

Branch: refs/heads/develop
Commit: 069c8ada5688eda871246969fe1bf7d1f3c39f5a
Parents: b36ba8e
Author: nazeer1100126 <nazeer.sh...@confluxtechnologies.com>
Authored: Tue Mar 7 19:45:29 2017 +0530
Committer: nazeer1100126 <nazeer.sh...@confluxtechnologies.com>
Committed: Tue Mar 7 19:45:29 2017 +0530

----------------------------------------------------------------------
 .../service/LoanReadPlatformServiceImpl.java    | 39 +++++++++++---------
 1 file changed, 22 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/069c8ada/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
index 46d9795..4bf7326 100755
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
@@ -92,7 +92,6 @@ import 
org.apache.fineract.portfolio.loanaccount.data.ScheduleGeneratorDTO;
 import org.apache.fineract.portfolio.loanaccount.domain.Loan;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatus;
@@ -1065,30 +1064,36 @@ public class LoanReadPlatformServiceImpl implements 
LoanReadPlatformService {
                 final boolean complete = rs.getBoolean("complete");
                 if (disbursementData != null) {
                     BigDecimal principal = BigDecimal.ZERO;
-                    for (DisbursementData data : disbursementData) {
+                    for (final DisbursementData data : disbursementData) {
                         if 
(fromDate.equals(this.disbursement.disbursementDate()) && 
data.disbursementDate().equals(fromDate)) {
-                            principal = principal.add(data.amount());
-                            if (data.getChargeAmount() == null) {
-                                final LoanSchedulePeriodData periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(
-                                        data.disbursementDate(), 
data.amount(), disbursementChargeAmount, data.isDisbursed());
-                                periods.add(periodData);
-                            } else {
-                                final LoanSchedulePeriodData periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(
-                                        data.disbursementDate(), 
data.amount(), disbursementChargeAmount.add(data.getChargeAmount()), 
data.isDisbursed());
-                                periods.add(periodData);
+                            if (periods.size() == 0) {
+                                principal = principal.add(data.amount());
+                                LoanSchedulePeriodData periodData = null;
+                                if (data.getChargeAmount() == null) {
+                                    periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), 
data.amount(),
+                                            disbursementChargeAmount, 
data.isDisbursed());
+                                } else {
+                                    periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), 
data.amount(),
+                                            
disbursementChargeAmount.add(data.getChargeAmount()), data.isDisbursed());
+                                }
+                                if (periodData != null) {
+                                    periods.add(periodData);
+                                }
+                                this.outstandingLoanPrincipalBalance = 
this.outstandingLoanPrincipalBalance.add(data.amount());
                             }
-                            this.outstandingLoanPrincipalBalance = 
this.outstandingLoanPrincipalBalance.add(data.amount());
                         } else if (data.isDueForDisbursement(fromDate, 
dueDate)) {
                             if (!excludePastUndisbursed
                                     || (excludePastUndisbursed && 
(data.isDisbursed() || !data.disbursementDate().isBefore(LocalDate.now())))) {
                                 principal = principal.add(data.amount());
+                                LoanSchedulePeriodData periodData = null;
                                 if (data.getChargeAmount() == null) {
-                                    final LoanSchedulePeriodData periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(
-                                            data.disbursementDate(), 
data.amount(), BigDecimal.ZERO, data.isDisbursed());
-                                    periods.add(periodData);
+                                    periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), 
data.amount(),
+                                            BigDecimal.ZERO, 
data.isDisbursed());
                                 } else {
-                                    final LoanSchedulePeriodData periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(
-                                            data.disbursementDate(), 
data.amount(), data.getChargeAmount(), data.isDisbursed());
+                                    periodData = 
LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), 
data.amount(),
+                                            data.getChargeAmount(), 
data.isDisbursed());
+                                }
+                                if (periodData != null) {
                                     periods.add(periodData);
                                 }
                                 this.outstandingLoanPrincipalBalance = 
this.outstandingLoanPrincipalBalance.add(data.amount());

Reply via email to