in service/src/main/java/org/apache/fineract/cn/individuallending/internal/service/ChargeDefinitionService.java [93:166]
static Stream<ChargeDefinition> individualLoanChargesDerivedFromConfiguration() {
final List<ChargeDefinition> ret = new ArrayList<>();
final ChargeDefinition disbursePayment = new ChargeDefinition();
disbursePayment.setChargeAction(Action.DISBURSE.name());
disbursePayment.setIdentifier(DISBURSE_PAYMENT_ID);
disbursePayment.setName(DISBURSE_PAYMENT_NAME);
disbursePayment.setDescription(DISBURSE_PAYMENT_NAME);
disbursePayment.setFromAccountDesignator(AccountDesignators.CUSTOMER_LOAN_PRINCIPAL);
disbursePayment.setToAccountDesignator(AccountDesignators.ENTRY);
disbursePayment.setProportionalTo(ChargeProportionalDesignator.REQUESTED_DISBURSEMENT_DESIGNATOR.getValue());
disbursePayment.setChargeMethod(ChargeDefinition.ChargeMethod.PROPORTIONAL);
disbursePayment.setAmount(BigDecimal.valueOf(100));
disbursePayment.setReadOnly(true);
final ChargeDefinition interestCharge = new ChargeDefinition();
interestCharge.setIdentifier(INTEREST_ID);
interestCharge.setName(INTEREST_NAME);
interestCharge.setDescription(INTEREST_NAME);
interestCharge.setChargeAction(Action.ACCEPT_PAYMENT.name());
interestCharge.setAmount(BigDecimal.valueOf(100));
interestCharge.setFromAccountDesignator(AccountDesignators.CUSTOMER_LOAN_INTEREST);
interestCharge.setToAccountDesignator(AccountDesignators.INTEREST_INCOME);
interestCharge.setForCycleSizeUnit(ChronoUnit.YEARS);
interestCharge.setAccrueAction(Action.APPLY_INTEREST.name());
interestCharge.setAccrualAccountDesignator(AccountDesignators.INTEREST_ACCRUAL);
interestCharge.setProportionalTo(ChargeProportionalDesignator.PRINCIPAL_DESIGNATOR.getValue());
interestCharge.setChargeMethod(ChargeDefinition.ChargeMethod.INTEREST);
interestCharge.setReadOnly(true);
final ChargeDefinition customerFeeRepaymentCharge = new ChargeDefinition();
customerFeeRepaymentCharge.setChargeAction(Action.ACCEPT_PAYMENT.name());
customerFeeRepaymentCharge.setIdentifier(REPAY_FEES_ID);
customerFeeRepaymentCharge.setName(REPAY_FEES_NAME);
customerFeeRepaymentCharge.setDescription(REPAY_FEES_NAME);
customerFeeRepaymentCharge.setFromAccountDesignator(AccountDesignators.ENTRY);
customerFeeRepaymentCharge.setToAccountDesignator(AccountDesignators.CUSTOMER_LOAN_FEES);
customerFeeRepaymentCharge.setProportionalTo(ChargeProportionalDesignator.TO_ACCOUNT_DESIGNATOR.getValue());
customerFeeRepaymentCharge.setChargeMethod(ChargeDefinition.ChargeMethod.PROPORTIONAL);
customerFeeRepaymentCharge.setAmount(BigDecimal.valueOf(100));
customerFeeRepaymentCharge.setReadOnly(true);
final ChargeDefinition customerInterestRepaymentCharge = new ChargeDefinition();
customerInterestRepaymentCharge.setChargeAction(Action.ACCEPT_PAYMENT.name());
customerInterestRepaymentCharge.setIdentifier(REPAY_INTEREST_ID);
customerInterestRepaymentCharge.setName(REPAY_INTEREST_NAME);
customerInterestRepaymentCharge.setDescription(REPAY_INTEREST_NAME);
customerInterestRepaymentCharge.setFromAccountDesignator(AccountDesignators.ENTRY);
customerInterestRepaymentCharge.setToAccountDesignator(AccountDesignators.CUSTOMER_LOAN_INTEREST);
customerInterestRepaymentCharge.setProportionalTo(ChargeProportionalDesignator.TO_ACCOUNT_DESIGNATOR.getValue());
customerInterestRepaymentCharge.setChargeMethod(ChargeDefinition.ChargeMethod.PROPORTIONAL);
customerInterestRepaymentCharge.setAmount(BigDecimal.valueOf(100));
customerInterestRepaymentCharge.setReadOnly(true);
final ChargeDefinition customerPrincipalRepaymentCharge = new ChargeDefinition();
customerPrincipalRepaymentCharge.setChargeAction(Action.ACCEPT_PAYMENT.name());
customerPrincipalRepaymentCharge.setIdentifier(REPAY_PRINCIPAL_ID);
customerPrincipalRepaymentCharge.setName(REPAY_PRINCIPAL_NAME);
customerPrincipalRepaymentCharge.setDescription(REPAY_PRINCIPAL_NAME);
customerPrincipalRepaymentCharge.setFromAccountDesignator(AccountDesignators.ENTRY);
customerPrincipalRepaymentCharge.setToAccountDesignator(AccountDesignators.CUSTOMER_LOAN_PRINCIPAL);
customerPrincipalRepaymentCharge.setProportionalTo(ChargeProportionalDesignator.REQUESTED_REPAYMENT_DESIGNATOR.getValue());
customerPrincipalRepaymentCharge.setChargeMethod(ChargeDefinition.ChargeMethod.PROPORTIONAL);
customerPrincipalRepaymentCharge.setAmount(BigDecimal.valueOf(100));
customerPrincipalRepaymentCharge.setReadOnly(true);
ret.add(disbursePayment);
ret.add(interestCharge);
ret.add(customerPrincipalRepaymentCharge);
ret.add(customerInterestRepaymentCharge);
ret.add(customerFeeRepaymentCharge);
return ret.stream();
}