Repository: fineract Updated Branches: refs/heads/develop 1ef276be5 -> 5b808fecc
475 tranche waive charge Project: http://git-wip-us.apache.org/repos/asf/fineract/repo Commit: http://git-wip-us.apache.org/repos/asf/fineract/commit/77b0625a Tree: http://git-wip-us.apache.org/repos/asf/fineract/tree/77b0625a Diff: http://git-wip-us.apache.org/repos/asf/fineract/diff/77b0625a Branch: refs/heads/develop Commit: 77b0625a5d378c73a556f90bf9ed84ed4810ed01 Parents: ee150b1 Author: nazeer shaik <nazeer.sh...@confluxtechnologies.com> Authored: Wed Jul 5 16:21:44 2017 +0530 Committer: nazeer shaik <nazeer.sh...@confluxtechnologies.com> Committed: Wed Jul 5 16:21:44 2017 +0530 ---------------------------------------------------------------------- .../loanaccount/data/DisbursementData.java | 12 +++++++++++- .../data/RepaymentScheduleRelatedLoanData.java | 3 ++- .../portfolio/loanaccount/domain/Loan.java | 4 ++-- .../domain/LoanDisbursementDetails.java | 3 ++- .../service/LoanScheduleAssembler.java | 3 ++- .../service/LoanReadPlatformServiceImpl.java | 18 +++++++++--------- 6 files changed, 28 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/fineract/blob/77b0625a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java index 97ab973..939a0ac 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/DisbursementData.java @@ -35,15 +35,17 @@ public class DisbursementData implements Comparable<DisbursementData> { @SuppressWarnings("unused") private final String loanChargeId; private final BigDecimal chargeAmount; + private final BigDecimal waivedChargeAmount; public DisbursementData(Long id, final LocalDate expectedDisbursementDate, final LocalDate actualDisbursementDate, - final BigDecimal principalDisbursed, final String loanChargeId, BigDecimal chargeAmount) { + final BigDecimal principalDisbursed, final String loanChargeId, BigDecimal chargeAmount, BigDecimal waivedChargeAmount) { this.id = id; this.expectedDisbursementDate = expectedDisbursementDate; this.actualDisbursementDate = actualDisbursementDate; this.principal = principalDisbursed; this.loanChargeId = loanChargeId; this.chargeAmount = chargeAmount; + this.waivedChargeAmount = waivedChargeAmount; } public LocalDate disbursementDate() { @@ -83,4 +85,12 @@ public class DisbursementData implements Comparable<DisbursementData> { return target != null && target.isAfter(fromNotInclusive) && !target.isAfter(upToAndInclusive); } + + public BigDecimal getWaivedChargeAmount() { + if(this.waivedChargeAmount == null){ + return BigDecimal.ZERO; + } + return this.waivedChargeAmount; + } + } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/fineract/blob/77b0625a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/RepaymentScheduleRelatedLoanData.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/RepaymentScheduleRelatedLoanData.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/RepaymentScheduleRelatedLoanData.java index 446ee3c..12bb038 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/RepaymentScheduleRelatedLoanData.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/data/RepaymentScheduleRelatedLoanData.java @@ -75,6 +75,7 @@ public class RepaymentScheduleRelatedLoanData { } public DisbursementData disbursementData() { - return new DisbursementData(null, this.expectedDisbursementDate, this.actualDisbursementDate, this.principal, null, null); + BigDecimal waivedChargeAmount = null; + return new DisbursementData(null, this.expectedDisbursementDate, this.actualDisbursementDate, this.principal, null, null, waivedChargeAmount); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/fineract/blob/77b0625a/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 b71205e..480b081 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 @@ -5576,9 +5576,9 @@ public class Loan extends AbstractPersistableCustom<Long> { if (loanDisbursementDetails.actualDisbursementDate() != null) { actualDisbursementDate = new LocalDate(loanDisbursementDetails.actualDisbursementDate()); } - + BigDecimal waivedChargeAmount = null; disbursementData.add(new DisbursementData(loanDisbursementDetails.getId(), expectedDisbursementDate, actualDisbursementDate, - loanDisbursementDetails.principal(), null, null)); + loanDisbursementDetails.principal(), null, null, waivedChargeAmount)); } return disbursementData; http://git-wip-us.apache.org/repos/asf/fineract/blob/77b0625a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java index ef70a18..d19b60f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanDisbursementDetails.java @@ -119,7 +119,8 @@ public class LoanDisbursementDetails extends AbstractPersistableCustom<Long> { if (this.actualDisbursementDate != null) { actualDisburseDate = new LocalDate(this.actualDisbursementDate); } - return new DisbursementData(getId(), expectedDisburseDate, actualDisburseDate, this.principal, null, null); + BigDecimal waivedChargeAmount = null; + return new DisbursementData(getId(), expectedDisburseDate, actualDisburseDate, this.principal, null, null, waivedChargeAmount); } public void updateActualDisbursementDate(Date actualDisbursementDate) { http://git-wip-us.apache.org/repos/asf/fineract/blob/77b0625a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java ---------------------------------------------------------------------- diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java index a335e9c..1d62273 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleAssembler.java @@ -515,7 +515,8 @@ public class LoanScheduleAssembler { && StringUtils.isNotBlank((jsonObject.get(LoanApiConstants.disbursementPrincipalParameterName).getAsString()))) { principal = jsonObject.getAsJsonPrimitive(LoanApiConstants.disbursementPrincipalParameterName).getAsBigDecimal(); } - disbursementDatas.add(new DisbursementData(null, expectedDisbursementDate, null, principal, null, null)); + BigDecimal waivedChargeAmount = null; + disbursementDatas.add(new DisbursementData(null, expectedDisbursementDate, null, principal, null, null, waivedChargeAmount)); i++; } while (i < disbursementDataArray.size()); } http://git-wip-us.apache.org/repos/asf/fineract/blob/77b0625a/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 19ea4ae..ab6c310 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 @@ -62,7 +62,6 @@ import org.apache.fineract.portfolio.calendar.data.CalendarData; import org.apache.fineract.portfolio.calendar.domain.CalendarEntityType; import org.apache.fineract.portfolio.calendar.service.CalendarReadPlatformService; import org.apache.fineract.portfolio.charge.data.ChargeData; -import org.apache.fineract.portfolio.charge.domain.ChargeCalculationType; import org.apache.fineract.portfolio.charge.domain.ChargeTimeType; import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; import org.apache.fineract.portfolio.client.data.ClientData; @@ -93,8 +92,6 @@ import org.apache.fineract.portfolio.loanaccount.data.PaidInAdvanceData; import org.apache.fineract.portfolio.loanaccount.data.RepaymentScheduleRelatedLoanData; import org.apache.fineract.portfolio.loanaccount.data.ScheduleGeneratorDTO; import org.apache.fineract.portfolio.loanaccount.domain.Loan; -import org.apache.fineract.portfolio.loanaccount.domain.LoanCharge; -import org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory; import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper; @@ -1056,7 +1053,10 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { @Override public LoanScheduleData extractData(final ResultSet rs) throws SQLException, DataAccessException { - + BigDecimal waivedChargeAmount = BigDecimal.ZERO; + for (DisbursementData disbursementDetail : disbursementData) { + waivedChargeAmount = waivedChargeAmount.add(disbursementDetail.getWaivedChargeAmount()); + } final LoanSchedulePeriodData disbursementPeriod = LoanSchedulePeriodData.disbursementOnlyPeriod( this.disbursement.disbursementDate(), this.disbursement.amount(), this.totalFeeChargesDueAtDisbursement, this.disbursement.isDisbursed()); @@ -1095,9 +1095,9 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { Money totalOutstanding = Money.zero(monCurrency); // update totals with details of fees charged during disbursement - totalFeeChargesCharged = totalFeeChargesCharged.plus(disbursementPeriod.feeChargesDue()); - totalRepaymentExpected = totalRepaymentExpected.plus(disbursementPeriod.feeChargesDue()); - totalRepayment = totalRepayment.plus(disbursementPeriod.feeChargesPaid()); + totalFeeChargesCharged = totalFeeChargesCharged.plus(disbursementPeriod.feeChargesDue().subtract(waivedChargeAmount)); + totalRepaymentExpected = totalRepaymentExpected.plus(disbursementPeriod.feeChargesDue()).minus(waivedChargeAmount); + totalRepayment = totalRepayment.plus(disbursementPeriod.feeChargesPaid()).minus(waivedChargeAmount); totalOutstanding = totalOutstanding.plus(disbursementPeriod.feeChargesDue()).minus(disbursementPeriod.feeChargesPaid()); Integer loanTermInDays = Integer.valueOf(0); @@ -1121,7 +1121,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { disbursementChargeAmount, data.isDisbursed()); } else { periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(data.disbursementDate(), data.amount(), - disbursementChargeAmount.add(data.getChargeAmount()), data.isDisbursed()); + disbursementChargeAmount.add(data.getChargeAmount()).subtract(waivedChargeAmount), data.isDisbursed()); } if (periodData != null) { periods.add(periodData); @@ -1543,7 +1543,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService { final BigDecimal waivedAmount = rs.getBigDecimal("waivedAmount"); if (chargeAmount != null && waivedAmount != null) chargeAmount = chargeAmount.subtract(waivedAmount); final DisbursementData disbursementData = new DisbursementData(id, expectedDisbursementdate, actualDisbursementdate, principal, - loanChargeId, chargeAmount); + loanChargeId, chargeAmount, waivedAmount); return disbursementData; }