FINERACT-2354: Chargeback handling with backdated re-age - with default re-aging behaviour
This commit is contained in:
committed by
Adam Saghy
parent
352ef6317c
commit
f070ff4f5d
+3
@@ -3163,6 +3163,7 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
||||
installment.setReAged(true);
|
||||
}
|
||||
installment.setAdditional(false);
|
||||
installment.setCreditedPrincipal(rp.getCreditedPrincipal().getAmount());
|
||||
installment.updateObligationsMet(ctx.getCurrency(), transactionDate);
|
||||
}
|
||||
} else {
|
||||
@@ -3178,6 +3179,7 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
||||
newInstallment.addToInterest(transactionDate, rp.getDueInterest());
|
||||
}
|
||||
|
||||
newInstallment.setCreditedPrincipal(rp.getCreditedPrincipal().getAmount());
|
||||
newInstallment.updateObligationsMet(ctx.getCurrency(), transactionDate);
|
||||
iterator.add(newInstallment);
|
||||
}
|
||||
@@ -3227,6 +3229,7 @@ public class AdvancedPaymentScheduleTransactionProcessor extends AbstractLoanRep
|
||||
newInstallment.setTotalPaidInAdvance(paidInAdvanceBalances.getPaidInAdvance().getAmount());
|
||||
newInstallment.setTotalPaidLate(paidInAdvanceBalances.getPaidLate());
|
||||
paidInAdvanceBalances.loanTransactionToRepaymentScheduleMappings.forEach(m -> m.setInstallment(newInstallment));
|
||||
newInstallment.setCreditedPrincipal(rp.getCreditedPrincipal().getAmount());
|
||||
newInstallment.updateObligationsMet(currency, transactionDate);
|
||||
|
||||
return newInstallment;
|
||||
|
||||
+7
-1
@@ -570,13 +570,19 @@ public final class ProgressiveEMICalculator implements EMICalculator {
|
||||
public void updateModelRepaymentPeriodsDuringReAge(final ProgressiveLoanInterestScheduleModel scheduleModel,
|
||||
final LocalDate reAgePeriodStartDate, final LocalDate reAgeFirstDueDate, final LocalDate targetDate,
|
||||
final LoanApplicationTerms loanApplicationTerms, final MathContext mc) {
|
||||
moveOutstandingAmountsFromPeriodsBeforeTransactionDate(scheduleModel.repaymentPeriods(), targetDate);
|
||||
final Money futureCreditedPrincipals = scheduleModel.repaymentPeriods().stream()
|
||||
.filter(rp -> !rp.getFromDate().isBefore(targetDate)).filter(rp -> rp.getDueDate().isAfter(targetDate))
|
||||
.map(RepaymentPeriod::getCreditedPrincipal).reduce(scheduleModel.zero(), Money::add);
|
||||
|
||||
// calculate already paid balances from transaction date
|
||||
final OutstandingDetails paidBalancesFromTransactionDate = calculatePaidBalancesAfterDate(scheduleModel, targetDate);
|
||||
|
||||
accelerateMaturityDateTo(scheduleModel, targetDate);
|
||||
|
||||
addCredit(scheduleModel, targetDate, futureCreditedPrincipals, scheduleModel.zero());
|
||||
|
||||
moveOutstandingAmountsFromPeriodsBeforeTransactionDate(scheduleModel.repaymentPeriods(), targetDate);
|
||||
|
||||
final ProgressiveLoanInterestScheduleModel temporaryReAgedScheduleModel = generateTemporaryReAgedScheduleModel(loanApplicationTerms,
|
||||
mc, reAgePeriodStartDate);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user