in service/src/main/java/org/apache/fineract/cn/deposit/service/internal/command/handler/InterestBearingBalanceCalculator.java [77:107]
private void calculateAndSaveIBB(ProductInstanceEntity productInstanceEntity, List<TransactionEntity> transactions,
LocalDate dueDate) {
BigDecimal ibBalance = BigDecimal.ZERO;
for(TransactionEntity transaction: transactions){
SubTransactionTypeEntity subTransactionTypeEntity = getSubTxnTypeEntityFromTxn(transaction);
if(subTransactionTypeEntity!= null && (subTransactionTypeEntity.getIbbConfPlusDays() != 0
|| subTransactionTypeEntity.getIbbConfMinusDays() !=0)) {
if(TransactionService.CREDIT.equals(transaction.getType()) &&
isTxnDateOnOrAfterTodayPlusX(dueDate, transaction.getTransactionDate().toLocalDate(),
subTransactionTypeEntity.getIbbConfPlusDays())){
//add credit after checking day passed condition: Deposit Value Date - T+x
ibBalance = ibBalance.add(transaction.getAmount());
}else if(TransactionService.DEBIT.equals(transaction.getType())&&
isTxnDateOnOrBeforeTodayMinusY(dueDate, transaction.getTransactionDate().toLocalDate(),
subTransactionTypeEntity.getIbbConfMinusDays())){
//subtract debit after checking day condition: Withdrawal Value Date - T-y
ibBalance = ibBalance.subtract(transaction.getAmount());
}
//else ignore
}else if(TransactionService.CREDIT.equals(transaction.getType())){
//add credit
ibBalance = ibBalance.add(transaction.getAmount());
}else if(TransactionService.DEBIT.equals(transaction.getType())) {
//subtract debit
ibBalance = ibBalance.subtract(transaction.getAmount());
}
}
}