You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ra...@apache.org on 2016/06/17 06:16:56 UTC
[2/3] incubator-fineract git commit: fineract-170,171
fineract-170,171
Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/65767869
Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/65767869
Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/65767869
Branch: refs/heads/develop
Commit: 65767869b054c0c4d6ba3aad645359791bd69e20
Parents: 7fe5016
Author: keshav10 <ke...@confluxtechnologies.com>
Authored: Thu Jun 16 18:12:51 2016 +0530
Committer: keshav10 <ke...@confluxtechnologies.com>
Committed: Thu Jun 16 18:34:48 2016 +0530
----------------------------------------------------------------------
.../portfolio/loanaccount/domain/Loan.java | 27 ++++++++++++--------
1 file changed, 17 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/65767869/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
----------------------------------------------------------------------
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index c5e494b..42427c4 100755
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -40,7 +40,6 @@ import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
-import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
@@ -6018,15 +6017,13 @@ public class Loan extends AbstractPersistable<Long> {
final MonetaryCurrency currency = getCurrency();
Money interest = Money.zero(currency);
Money fee = Money.zero(currency);
- Money penalty = Money.zero(currency);
- boolean isArrearsPresent = false;
+ Money penalty = Money.zero(currency);
for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if (installment.isNotFullyPaidOff()) {
- if (!isArrearsPresent || !installment.getDueDate().isAfter(paymentDate)) {
+ if (!installment.getDueDate().isAfter(paymentDate)) {
interest = interest.plus(installment.getInterestOutstanding(currency));
fee = fee.plus(installment.getFeeChargesOutstanding(currency));
- penalty = penalty.plus(installment.getPenaltyChargesOutstanding(currency));
- isArrearsPresent = true;
+ penalty = penalty.plus(installment.getPenaltyChargesOutstanding(currency));
} else if (installment.getFromDate().isBefore(paymentDate)) {
Money[] balancesForCurrentPeroid = fetchInterestFeeAndPenalty(paymentDate, currency, installment);
interest = interest.plus(balancesForCurrentPeroid[0]);
@@ -6071,6 +6068,7 @@ public class Loan extends AbstractPersistable<Long> {
public Money[] retriveIncomeForOverlappingPeriod(final LocalDate paymentDate) {
Money[] balances = new Money[3];
final MonetaryCurrency currency = getCurrency();
+ balances[0] = balances[1] = balances[2] = Money.zero(currency);
for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if (installment.getDueDate().isEqual(paymentDate)){
Money interest = installment.getInterestOutstanding(currency);
@@ -6202,13 +6200,22 @@ public class Loan extends AbstractPersistable<Long> {
Money [] balances = retriveIncomeForOverlappingPeriod(transactionDate);
for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
if (!installment.getDueDate().isBefore(transactionDate)) {
- totalPrincipal = totalPrincipal.plus(installment.getPrincipalOutstanding(currency));
- newInstallments.remove(installment);
- }
+ if (!installment.isPartlyPaid() && !installment.isObligationsMet()) {
+ totalPrincipal = totalPrincipal.plus(installment.getPrincipalOutstanding(currency));
+ newInstallments.remove(installment);
+ }
+ }
}
+
+ LocalDate installmentStartDate = getDisbursementDate();
+
+ if (newInstallments.size() > 0) {
+ installmentStartDate = newInstallments.get((newInstallments.size() - 1)).getDueDate();
+ }
+
LoanRepaymentScheduleInstallment newInstallment = new LoanRepaymentScheduleInstallment(null, newInstallments.size() + 1,
- newInstallments.get((newInstallments.size() - 1)).getDueDate(), transactionDate, totalPrincipal.getAmount(),
+ installmentStartDate, transactionDate, totalPrincipal.getAmount(),
balances[0].getAmount(), balances[1].getAmount(), balances[2].getAmount(), true, null);
newInstallment.updateInstallmentNumber(newInstallments.size() + 1);
newInstallments.add(newInstallment);