FINERACT-108 : disbursement change with tranche loan
This commit is contained in:
+5
-3
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-2
@@ -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());
|
||||||
|
|||||||
Reference in New Issue
Block a user