private void calculateAndSaveIBB()

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());
            }
        }
    }