Merge branch 'FINERACT64' into develop

This commit is contained in:
Nazeer Hussain Shaik
2016-03-22 14:59:41 +05:30
2 changed files with 27 additions and 10 deletions
@@ -856,7 +856,7 @@ public class Loan extends AbstractPersistable<Long> {
if (loanCharge.isOverdueInstallmentCharge()) { return loanCharge.getAmountPercentageAppliedTo(); }
switch (loanCharge.getChargeCalculation()) {
case PERCENT_OF_AMOUNT:
amount = getPrincpal().getAmount();
amount = getDerivedAmountForCharge(loanCharge);
break;
case PERCENT_OF_AMOUNT_AND_INTEREST:
final BigDecimal totalInterestCharged = getTotalInterest();
@@ -1074,7 +1074,7 @@ public class Loan extends AbstractPersistable<Long> {
if (loanCharge.getId() == null) {
LoanTrancheDisbursementCharge loanTrancheDisbursementCharge = null;
loanCharge.update(this);
if (this.loanProduct.isMultiDisburseLoan()) {
if (this.loanProduct.isMultiDisburseLoan() && loanCharge.isTrancheDisbursementCharge()) {
loanCharge.getTrancheDisbursementCharge().getloanDisbursementDetails().updateLoan(this);
for (final LoanDisbursementDetails loanDisbursementDetails : this.disbursementDetails) {
if (loanCharge.getTrancheDisbursementCharge().getloanDisbursementDetails().getId() == null) {
@@ -2576,7 +2576,7 @@ public class Loan extends AbstractPersistable<Long> {
updateLoanSchedule(loanSchedule, currentUser);
Set<LoanCharge> charges = this.charges();
for (LoanCharge loanCharge : charges) {
recalculateLoanCharge(loanCharge, scheduleGeneratorDTO.getPenaltyWaitPeriod());
recalculateLoanCharge(loanCharge, scheduleGeneratorDTO.getPenaltyWaitPeriod());
}
}
@@ -2640,7 +2640,9 @@ public class Loan extends AbstractPersistable<Long> {
final Integer installmentNumber = null;
for (final LoanCharge charge : charges()) {
Date actualDisbursementDate = getActualDisbursementDate(charge);
if (charge.getCharge().getChargeTimeType() == ChargeTimeType.DISBURSEMENT.getValue()
if ((charge.getCharge().getChargeTimeType() == ChargeTimeType.DISBURSEMENT.getValue()
&& disbursedOn.equals(new LocalDate(actualDisbursementDate)) && actualDisbursementDate != null
&& !charge.isWaived() && !charge.isFullyPaid())
|| (charge.getCharge().getChargeTimeType() == ChargeTimeType.TRANCHE_DISBURSEMENT.getValue()
&& disbursedOn.equals(new LocalDate(actualDisbursementDate)) && actualDisbursementDate != null
&& !charge.isWaived() && !charge.isFullyPaid())) {
@@ -5530,7 +5532,7 @@ public class Loan extends AbstractPersistable<Long> {
}
private Date getActualDisbursementDate(final LoanCharge loanCharge) {
Date actualDisbursementDate = null;
Date actualDisbursementDate = this.actualDisbursementDate;
if (loanCharge.isDueAtDisbursement() && loanCharge.isActive()) {
LoanTrancheDisbursementCharge trancheDisbursementCharge = loanCharge.getTrancheDisbursementCharge();
if (trancheDisbursementCharge != null) {
@@ -5698,5 +5700,15 @@ public class Loan extends AbstractPersistable<Long> {
}
return nextRepaymentDate;
}
public BigDecimal getDerivedAmountForCharge(LoanCharge loanCharge) {
BigDecimal amount = BigDecimal.ZERO;
if (isMultiDisburmentLoan() && (loanCharge.getCharge().getChargeTimeType() == ChargeTimeType.DISBURSEMENT.getValue())) {
amount = getApprovedPrincipal();
} else {
amount = getPrincpal().getAmount();
}
return amount;
}
}
@@ -162,8 +162,11 @@ public class LoanChargeAssembler {
final LoanCharge loanCharge = LoanCharge.createNewWithoutLoan(chargeDefinition, principal, amount,
chargeTime, chargeCalculation, dueDate, chargePaymentModeEnum, numberOfRepayments);
loanCharges.add(loanCharge);
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge, disbursementDetail);
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
if (loanCharge.isTrancheDisbursementCharge()) {
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
disbursementDetail);
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
}
} else {
if (disbursementDetail.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
final LoanCharge loanCharge = LoanCharge.createNewWithoutLoan(chargeDefinition,
@@ -171,9 +174,11 @@ public class LoanChargeAssembler {
disbursementDetail.expectedDisbursementDateAsLocalDate(), chargePaymentModeEnum,
numberOfRepayments);
loanCharges.add(loanCharge);
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
disbursementDetail);
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
if (loanCharge.isTrancheDisbursementCharge()) {
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
disbursementDetail);
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
}
}
}
}