in service/src/main/java/org/apache/fineract/cn/individuallending/internal/service/ChargeDefinitionService.java [46:91]
public static Stream<ChargeDefinition> defaultConfigurableIndividualLoanCharges() {
final List<ChargeDefinition> ret = new ArrayList<>();
final ChargeDefinition processingFee = charge(
PROCESSING_FEE_NAME,
Action.DISBURSE,
BigDecimal.ONE,
AccountDesignators.CUSTOMER_LOAN_FEES,
AccountDesignators.PROCESSING_FEE_INCOME);
processingFee.setReadOnly(false);
final ChargeDefinition loanOriginationFee = charge(
LOAN_ORIGINATION_FEE_NAME,
Action.DISBURSE,
BigDecimal.ONE,
AccountDesignators.CUSTOMER_LOAN_FEES,
AccountDesignators.ORIGINATION_FEE_INCOME);
loanOriginationFee.setReadOnly(false);
final ChargeDefinition disbursementFee = charge(
DISBURSEMENT_FEE_NAME,
Action.DISBURSE,
BigDecimal.valueOf(0.1),
AccountDesignators.CUSTOMER_LOAN_FEES,
AccountDesignators.DISBURSEMENT_FEE_INCOME);
disbursementFee.setProportionalTo(ChargeProportionalDesignator.REQUESTED_DISBURSEMENT_DESIGNATOR.getValue());
disbursementFee.setReadOnly(false);
final ChargeDefinition lateFee = charge(
LATE_FEE_NAME,
Action.ACCEPT_PAYMENT,
BigDecimal.TEN,
AccountDesignators.CUSTOMER_LOAN_FEES,
AccountDesignators.LATE_FEE_INCOME);
lateFee.setAccrueAction(Action.MARK_LATE.name());
lateFee.setAccrualAccountDesignator(AccountDesignators.LATE_FEE_ACCRUAL);
lateFee.setProportionalTo(ChargeProportionalDesignator.CONTRACTUAL_REPAYMENT_DESIGNATOR.getValue());
lateFee.setChargeOnTop(true);
lateFee.setReadOnly(false);
ret.add(processingFee);
ret.add(loanOriginationFee);
ret.add(disbursementFee);
ret.add(lateFee);
return ret.stream();
}