in service/src/main/java/org/apache/fineract/cn/deposit/service/internal/service/TransactionService.java [231:258]
private void prepareCharges(@NotNull TransactionRequestData request, @NotNull AccountWrapper accountWrapper,
@NotNull List<Charge> charges, HashSet<Debtor> debtors, HashSet<Creditor> creditors,
TransactionEntity txn, String accountId) {
BigDecimal amount = request.getAmount().getAmount();
Currency currency = accountWrapper.productDefinition.getCurrency();
BigDecimal total = MathUtil.normalize(calcTotalCharges(charges, amount), currency);
if (MathUtil.isEmpty(total)) {
return;
}
txn.setFeeAmount(total);
if (creditors == null) {
creditors = new HashSet<>(1);
}
if (debtors == null) {
debtors = new HashSet<>(charges.size());
}
for(Charge charge : charges){
addCreditor(charge.getIncomeAccountIdentifier(), calcChargeAmount(amount, charge).doubleValue(), creditors);
addDebtor(accountWrapper.account.getIdentifier(), calcChargeAmount(amount, charge).doubleValue(), debtors);
createTransaction(request,TransactionTypeEnum.CHARGES_PAYMENT, getNow(), DEBIT, txn,
accountId, accountWrapper.instance);
}
}