FINERACT-108 : disbursement change with tranche loan

This commit is contained in:
pramod
2016-05-10 16:58:46 +05:30
parent f3f6f4bf8f
commit e58e591c89
2 changed files with 13 additions and 5 deletions
@@ -1683,7 +1683,7 @@ public class Loan extends AbstractPersistable<Long> {
public void updateDisbursementDetails(final JsonCommand jsonCommand, final Map<String, Object> actualChanges) { public void updateDisbursementDetails(final JsonCommand jsonCommand, final Map<String, Object> actualChanges) {
List<Long> disbursementList = fetchDisbursementIds(); List<Long> disbursementList = fetchDisbursementIds();
List<Long> loanChargeIds = fetchLoanChargeIds(); List<Long> loanChargeIds = fetchLoanTrancheChargeIds();
int chargeIdLength = loanChargeIds.size(); int chargeIdLength = loanChargeIds.size();
String chargeIds = null; String chargeIds = null;
// From modify application page, if user removes all charges, we should // From modify application page, if user removes all charges, we should
@@ -1807,10 +1807,12 @@ public class Loan extends AbstractPersistable<Long> {
} }
} }
private List<Long> fetchLoanChargeIds() { private List<Long> fetchLoanTrancheChargeIds() {
List<Long> list = new ArrayList<>(); List<Long> list = new ArrayList<>();
for (LoanCharge charge : this.charges) { for (LoanCharge charge : this.charges) {
list.add(charge.getId()); if (charge.isTrancheDisbursementCharge() && charge.isActive()) {
list.add(charge.getId());
}
} }
return list; return list;
} }
@@ -1027,6 +1027,7 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
final MonetaryCurrency monCurrency = new MonetaryCurrency(this.currency.code(), this.currency.decimalPlaces(), final MonetaryCurrency monCurrency = new MonetaryCurrency(this.currency.code(), this.currency.decimalPlaces(),
this.currency.currencyInMultiplesOf()); this.currency.currencyInMultiplesOf());
BigDecimal totalPrincipalDisbursed = BigDecimal.ZERO; BigDecimal totalPrincipalDisbursed = BigDecimal.ZERO;
BigDecimal disbursementChargeAmount = this.totalFeeChargesDueAtDisbursement;
if (disbursementData == null || disbursementData.isEmpty()) { if (disbursementData == null || disbursementData.isEmpty()) {
periods.add(disbursementPeriod); periods.add(disbursementPeriod);
totalPrincipalDisbursed = Money.of(monCurrency, this.disbursement.amount()).getAmount(); totalPrincipalDisbursed = Money.of(monCurrency, this.disbursement.amount()).getAmount();
@@ -1034,6 +1035,11 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
if (!this.disbursement.isDisbursed()) { if (!this.disbursement.isDisbursed()) {
excludePastUndisbursed = false; excludePastUndisbursed = false;
} }
for(DisbursementData disbursementData : disbursementData){
if(disbursementData.getChargeAmount() != null){
disbursementChargeAmount = disbursementChargeAmount.subtract(disbursementData.getChargeAmount());
}
}
this.outstandingLoanPrincipalBalance = BigDecimal.ZERO; this.outstandingLoanPrincipalBalance = BigDecimal.ZERO;
} }
@@ -1072,11 +1078,11 @@ public class LoanReadPlatformServiceImpl implements LoanReadPlatformService {
principal = principal.add(data.amount()); principal = principal.add(data.amount());
if (data.getChargeAmount() == null) { if (data.getChargeAmount() == null) {
final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod( final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(
data.disbursementDate(), data.amount(), BigDecimal.ZERO, data.isDisbursed()); data.disbursementDate(), data.amount(), disbursementChargeAmount, data.isDisbursed());
periods.add(periodData); periods.add(periodData);
} else { } else {
final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod( final LoanSchedulePeriodData periodData = LoanSchedulePeriodData.disbursementOnlyPeriod(
data.disbursementDate(), data.amount(), data.getChargeAmount(), data.isDisbursed()); data.disbursementDate(), data.amount(), disbursementChargeAmount.add(data.getChargeAmount()), data.isDisbursed());
periods.add(periodData); periods.add(periodData);
} }
this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount()); this.outstandingLoanPrincipalBalance = this.outstandingLoanPrincipalBalance.add(data.amount());