FINERACT-64 issues resolved
This commit is contained in:
+17
-5
@@ -856,7 +856,7 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
if (loanCharge.isOverdueInstallmentCharge()) { return loanCharge.getAmountPercentageAppliedTo(); }
|
if (loanCharge.isOverdueInstallmentCharge()) { return loanCharge.getAmountPercentageAppliedTo(); }
|
||||||
switch (loanCharge.getChargeCalculation()) {
|
switch (loanCharge.getChargeCalculation()) {
|
||||||
case PERCENT_OF_AMOUNT:
|
case PERCENT_OF_AMOUNT:
|
||||||
amount = getPrincpal().getAmount();
|
amount = getDerivedAmountForCharge(loanCharge);
|
||||||
break;
|
break;
|
||||||
case PERCENT_OF_AMOUNT_AND_INTEREST:
|
case PERCENT_OF_AMOUNT_AND_INTEREST:
|
||||||
final BigDecimal totalInterestCharged = getTotalInterest();
|
final BigDecimal totalInterestCharged = getTotalInterest();
|
||||||
@@ -1074,7 +1074,7 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
if (loanCharge.getId() == null) {
|
if (loanCharge.getId() == null) {
|
||||||
LoanTrancheDisbursementCharge loanTrancheDisbursementCharge = null;
|
LoanTrancheDisbursementCharge loanTrancheDisbursementCharge = null;
|
||||||
loanCharge.update(this);
|
loanCharge.update(this);
|
||||||
if (this.loanProduct.isMultiDisburseLoan()) {
|
if (this.loanProduct.isMultiDisburseLoan() && loanCharge.isTrancheDisbursementCharge()) {
|
||||||
loanCharge.getTrancheDisbursementCharge().getloanDisbursementDetails().updateLoan(this);
|
loanCharge.getTrancheDisbursementCharge().getloanDisbursementDetails().updateLoan(this);
|
||||||
for (final LoanDisbursementDetails loanDisbursementDetails : this.disbursementDetails) {
|
for (final LoanDisbursementDetails loanDisbursementDetails : this.disbursementDetails) {
|
||||||
if (loanCharge.getTrancheDisbursementCharge().getloanDisbursementDetails().getId() == null) {
|
if (loanCharge.getTrancheDisbursementCharge().getloanDisbursementDetails().getId() == null) {
|
||||||
@@ -2576,7 +2576,7 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
updateLoanSchedule(loanSchedule, currentUser);
|
updateLoanSchedule(loanSchedule, currentUser);
|
||||||
Set<LoanCharge> charges = this.charges();
|
Set<LoanCharge> charges = this.charges();
|
||||||
for (LoanCharge loanCharge : 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;
|
final Integer installmentNumber = null;
|
||||||
for (final LoanCharge charge : charges()) {
|
for (final LoanCharge charge : charges()) {
|
||||||
Date actualDisbursementDate = getActualDisbursementDate(charge);
|
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()
|
|| (charge.getCharge().getChargeTimeType() == ChargeTimeType.TRANCHE_DISBURSEMENT.getValue()
|
||||||
&& disbursedOn.equals(new LocalDate(actualDisbursementDate)) && actualDisbursementDate != null
|
&& disbursedOn.equals(new LocalDate(actualDisbursementDate)) && actualDisbursementDate != null
|
||||||
&& !charge.isWaived() && !charge.isFullyPaid())) {
|
&& !charge.isWaived() && !charge.isFullyPaid())) {
|
||||||
@@ -5530,7 +5532,7 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Date getActualDisbursementDate(final LoanCharge loanCharge) {
|
private Date getActualDisbursementDate(final LoanCharge loanCharge) {
|
||||||
Date actualDisbursementDate = null;
|
Date actualDisbursementDate = this.actualDisbursementDate;
|
||||||
if (loanCharge.isDueAtDisbursement() && loanCharge.isActive()) {
|
if (loanCharge.isDueAtDisbursement() && loanCharge.isActive()) {
|
||||||
LoanTrancheDisbursementCharge trancheDisbursementCharge = loanCharge.getTrancheDisbursementCharge();
|
LoanTrancheDisbursementCharge trancheDisbursementCharge = loanCharge.getTrancheDisbursementCharge();
|
||||||
if (trancheDisbursementCharge != null) {
|
if (trancheDisbursementCharge != null) {
|
||||||
@@ -5698,5 +5700,15 @@ public class Loan extends AbstractPersistable<Long> {
|
|||||||
}
|
}
|
||||||
return nextRepaymentDate;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-5
@@ -162,8 +162,11 @@ public class LoanChargeAssembler {
|
|||||||
final LoanCharge loanCharge = LoanCharge.createNewWithoutLoan(chargeDefinition, principal, amount,
|
final LoanCharge loanCharge = LoanCharge.createNewWithoutLoan(chargeDefinition, principal, amount,
|
||||||
chargeTime, chargeCalculation, dueDate, chargePaymentModeEnum, numberOfRepayments);
|
chargeTime, chargeCalculation, dueDate, chargePaymentModeEnum, numberOfRepayments);
|
||||||
loanCharges.add(loanCharge);
|
loanCharges.add(loanCharge);
|
||||||
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge, disbursementDetail);
|
if (loanCharge.isTrancheDisbursementCharge()) {
|
||||||
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
|
||||||
|
disbursementDetail);
|
||||||
|
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if (disbursementDetail.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
|
if (disbursementDetail.expectedDisbursementDateAsLocalDate().equals(expectedDisbursementDate)) {
|
||||||
final LoanCharge loanCharge = LoanCharge.createNewWithoutLoan(chargeDefinition,
|
final LoanCharge loanCharge = LoanCharge.createNewWithoutLoan(chargeDefinition,
|
||||||
@@ -171,9 +174,11 @@ public class LoanChargeAssembler {
|
|||||||
disbursementDetail.expectedDisbursementDateAsLocalDate(), chargePaymentModeEnum,
|
disbursementDetail.expectedDisbursementDateAsLocalDate(), chargePaymentModeEnum,
|
||||||
numberOfRepayments);
|
numberOfRepayments);
|
||||||
loanCharges.add(loanCharge);
|
loanCharges.add(loanCharge);
|
||||||
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
|
if (loanCharge.isTrancheDisbursementCharge()) {
|
||||||
disbursementDetail);
|
loanTrancheDisbursementCharge = new LoanTrancheDisbursementCharge(loanCharge,
|
||||||
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
disbursementDetail);
|
||||||
|
loanCharge.updateLoanTrancheDisbursementCharge(loanTrancheDisbursementCharge);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user