Repository: incubator-fineract Updated Branches: refs/heads/develop 935d6146c -> f59dacbfc
FINERACT-303 - % Loan Amount + Interest or %Amount if collected as disbursement fees it is not working as expected Project: http://git-wip-us.apache.org/repos/asf/incubator-fineract/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-fineract/commit/f59dacbf Tree: http://git-wip-us.apache.org/repos/asf/incubator-fineract/tree/f59dacbf Diff: http://git-wip-us.apache.org/repos/asf/incubator-fineract/diff/f59dacbf Branch: refs/heads/develop Commit: f59dacbfc8a04031cd9521ed1c23bc57245d2c26 Parents: 935d614 Author: nazeer1100126 <nazeer.sh...@confluxtechnologies.com> Authored: Fri Mar 24 17:20:40 2017 +0530 Committer: nazeer1100126 <nazeer.sh...@confluxtechnologies.com> Committed: Fri Mar 24 17:20:40 2017 +0530 ---------------------------------------------------------------------- .../portfolio/loanaccount/domain/Loan.java | 31 +++++++++++++++++++- .../loanaccount/domain/LoanCharge.java | 4 +++ 2 files changed, 34 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/f59dacbf/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 3b35c53..8b1cc2a 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 @@ -862,7 +862,11 @@ public class Loan extends AbstractPersistableCustom<Long> { break; case PERCENT_OF_AMOUNT_AND_INTEREST: final BigDecimal totalInterestCharged = getTotalInterest(); - amount = getPrincpal().getAmount().add(totalInterestCharged); + if (isMultiDisburmentLoan() && loanCharge.isDisbursementCharge()) { + amount = getTotalAllTrancheDisbursementAmount().getAmount().add(totalInterestCharged); + }else{ + amount = getPrincpal().getAmount().add(totalInterestCharged); + } break; case PERCENT_OF_INTEREST: amount = getTotalInterest(); @@ -880,6 +884,31 @@ public class Loan extends AbstractPersistableCustom<Long> { return amount; } + private Money getTotalAllTrancheDisbursementAmount() { + Money amount = Money.zero(getCurrency()); + if (isMultiDisburmentLoan()) { + for (final LoanDisbursementDetails loanDisbursementDetail : this.disbursementDetails) { + amount = amount.plus(loanDisbursementDetail.principal()); + } + } + return amount; + } + + private boolean isFirstTrancheDisbursement() { + if (isMultiDisburmentLoan()) { + int totalTranchDisbursementCount = 0; + for (final LoanDisbursementDetails loanDisbursementDetail : this.disbursementDetails) { + if(loanDisbursementDetail.actualDisbursementDate() != null){ + totalTranchDisbursementCount++; + } + } + if(totalTranchDisbursementCount < 2){ + return true; + } + } + return false; + } + /** * @return */ http://git-wip-us.apache.org/repos/asf/incubator-fineract/blob/f59dacbf/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java index 88a8aee..5a8582f 100755 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanCharge.java @@ -990,6 +990,10 @@ public class LoanCharge extends AbstractPersistableCustom<Long> { return this.loan; } + public boolean isDisbursementCharge() { + return ChargeTimeType.fromInt(this.chargeTime).equals(ChargeTimeType.DISBURSEMENT); + } + public boolean isTrancheDisbursementCharge() { return ChargeTimeType.fromInt(this.chargeTime).equals(ChargeTimeType.TRANCHE_DISBURSEMENT); }