FINERACT-2232: Capitalized Incomce Adjustment template

This commit is contained in:
Jose Alberto Hernandez
2025-05-24 01:17:55 +02:00
committed by Adam Saghy
parent f6e24d420a
commit 544607a05a
16 changed files with 221 additions and 24 deletions
@@ -175,6 +175,7 @@ public interface LoanApiConstants {
String CHARGEBACK_TRANSACTION_COMMAND = "chargeback";
String MARK_AS_FRAUD_COMMAND = "markAsFraud";
String CAPITALIZED_INCOME_TRANSACTION_COMMAND = "capitalizedIncome";
String CAPITALIZED_INCOME_ADJUSTMENT_TRANSACTION_COMMAND = "capitalizedIncomeAdjustment";
// Data Validator names
String LOAN_FRAUD_DATAVALIDATOR_PREFIX = "loans.fraud";
@@ -54,5 +54,6 @@ public interface LoanTransactionApiConstants {
accrualAdjustment, //
capitalizedIncome, //
capitalizedIncomeAmortization, //
capitalizedIncomeAdjustment, //
}
}
@@ -313,6 +313,36 @@ public class LoanTransactionData implements Serializable {
null, null, outstandingLoanBalance, null, manuallyReversed, ExternalId.empty(), null, loanId);
}
public static LoanTransactionData loanTransactionDataForCreditTemplate(final LoanTransactionEnumData transactionType,
final LocalDate transactionDate, final BigDecimal transactionAmount, final Collection<PaymentTypeData> paymentOptions,
final CurrencyData currency) {
final Long id = null;
final Long loanId = null;
final ExternalId externalLoanId = ExternalId.empty();
final ExternalId externalId = ExternalId.empty();
final Long officeId = null;
final String officeName = null;
final PaymentDetailData paymentDetailData = null;
final BigDecimal unrecognizedIncomePortion = null;
final BigDecimal principalPortion = null;
final BigDecimal interestPortion = null;
final BigDecimal feeChargesPortion = null;
final BigDecimal penaltyChargesPortion = null;
final BigDecimal overpaymentPortion = null;
final BigDecimal netDisbursalAmount = null;
final BigDecimal fixedEmiAmount = null;
final BigDecimal outstandingLoanBalance = null;
final AccountTransferData transfer = null;
final LocalDate submittedOnDate = null;
final LocalDate possibleNextRepaymentDate = null;
final boolean manuallyReversed = false;
return new LoanTransactionData(id, officeId, officeName, transactionType, paymentDetailData, currency, transactionDate,
transactionAmount, netDisbursalAmount, principalPortion, interestPortion, feeChargesPortion, penaltyChargesPortion,
overpaymentPortion, unrecognizedIncomePortion, paymentOptions, transfer, externalId, fixedEmiAmount, outstandingLoanBalance,
submittedOnDate, manuallyReversed, possibleNextRepaymentDate, loanId, externalLoanId);
}
public static LoanTransactionData loanTransactionDataForDisbursalTemplate(final LoanTransactionEnumData transactionType,
final LocalDate expectedDisbursedOnLocalDateForTemplate, final BigDecimal disburseAmountForTemplate,
final BigDecimal netDisbursalAmount, final Collection<PaymentTypeData> paymentOptions, final BigDecimal retriveLastEmiAmount,
@@ -650,6 +650,10 @@ public class LoanTransaction extends AbstractAuditableWithUTCDateTimeCustom<Long
return LoanTransactionType.CAPITALIZED_INCOME_AMORTIZATION.equals(getTypeOf()) && isNotReversed();
}
public boolean isCapitalizedIncomeAdjustment() {
return LoanTransactionType.CAPITALIZED_INCOME_ADJUSTMENT.equals(getTypeOf()) && isNotReversed();
}
public boolean isWaiver() {
return isInterestWaiver() || isChargesWaiver();
}
@@ -69,6 +69,7 @@ public enum LoanTransactionType {
ACCRUAL_ADJUSTMENT(34, "loanTransactionType.accrualAdjustment"), //
CAPITALIZED_INCOME(35, "loanTransactionType.capitalizedIncome"), //
CAPITALIZED_INCOME_AMORTIZATION(36, "loanTransactionType.capitalizedIncomeAmortization"), //
CAPITALIZED_INCOME_ADJUSTMENT(37, "loanTransactionType.capitalizedIncomeAdjustment"), //
;
private final Integer value;
@@ -121,6 +122,7 @@ public enum LoanTransactionType {
case 34 -> LoanTransactionType.ACCRUAL_ADJUSTMENT;
case 35 -> LoanTransactionType.CAPITALIZED_INCOME;
case 36 -> LoanTransactionType.CAPITALIZED_INCOME_AMORTIZATION;
case 37 -> LoanTransactionType.CAPITALIZED_INCOME_ADJUSTMENT;
default -> LoanTransactionType.INVALID;
};
}
@@ -241,4 +243,8 @@ public enum LoanTransactionType {
public boolean isCapitalizedIncome() {
return this == LoanTransactionType.CAPITALIZED_INCOME;
}
public boolean isCapitalizedIncomeAdjustment() {
return this == LoanTransactionType.CAPITALIZED_INCOME_ADJUSTMENT;
}
}
@@ -63,7 +63,7 @@ public interface LoanReadPlatformService {
LoanTransactionData retrieveLoanTransactionTemplate(Long loanId);
LoanTransactionData retrieveLoanTransactionTemplate(Long loanId, LoanTransactionType transactionType);
LoanTransactionData retrieveLoanTransactionTemplate(Long loanId, LoanTransactionType transactionType, Long transactionId);
LoanTransactionData retrieveWaiveInterestDetails(Long loanId);
@@ -330,6 +330,9 @@ public final class LoanEnumerations {
case CAPITALIZED_INCOME_AMORTIZATION ->
new LoanTransactionEnumData(LoanTransactionType.CAPITALIZED_INCOME_AMORTIZATION.getValue().longValue(),
LoanTransactionType.CAPITALIZED_INCOME_AMORTIZATION.getCode(), "Capitalized Income Amortization");
case CAPITALIZED_INCOME_ADJUSTMENT ->
new LoanTransactionEnumData(LoanTransactionType.CAPITALIZED_INCOME_ADJUSTMENT.getValue().longValue(),
LoanTransactionType.CAPITALIZED_INCOME_ADJUSTMENT.getCode(), "Capitalized Income Adjustment");
};
}