FINERACT-2232: Capitalized income - amortization in case of Charge-off event

This commit is contained in:
mariiaKraievska
2025-05-19 21:56:48 +02:00
committed by Arnold Gálovics
parent 39062ad1a1
commit 4861ad19fd
14 changed files with 523 additions and 15 deletions
@@ -2167,7 +2167,8 @@ public class Loan extends AbstractAuditableWithUTCDateTimeCustom<Long> {
public LoanTransaction getLastUserTransaction() {
return getLoanTransactions().stream() //
.filter(t -> t.isNotReversed() && !(t.isAccrual() || t.isAccrualAdjustment() || t.isIncomePosting())) //
.filter(t -> t.isNotReversed()
&& !(t.isAccrual() || t.isAccrualAdjustment() || t.isIncomePosting() || t.isCapitalizedIncomeAmortization())) //
.reduce((first, second) -> second) //
.orElse(null);
}
@@ -646,6 +646,10 @@ public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long
return LoanTransactionType.CAPITALIZED_INCOME.equals(getTypeOf()) && isNotReversed();
}
public boolean isCapitalizedIncomeAmortization() {
return LoanTransactionType.CAPITALIZED_INCOME_AMORTIZATION.equals(getTypeOf()) && isNotReversed();
}
public boolean isWaiver() {
return isInterestWaiver() || isChargesWaiver();
}
@@ -19,9 +19,14 @@
package org.apache.fineract.portfolio.loanaccount.service;
import org.apache.fineract.portfolio.loanaccount.domain.Loan;
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
import org.springframework.lang.NonNull;
public interface LoanCapitalizedIncomeAmortizationProcessingService {
void processCapitalizedIncomeAmortizationOnLoanClosure(@NonNull Loan loan);
void processCapitalizedIncomeAmortizationOnLoanChargeOff(@NonNull Loan loan);
void processCapitalizedIncomeAmortizationOnLoanUndoChargeOff(@NonNull LoanTransaction loanTransaction);
}