From 5ab78440aba6d7c5d0e94195f8a2e0e8564c948d Mon Sep 17 00:00:00 2001 From: Jose Alberto Hernandez Date: Wed, 17 Jul 2024 08:44:38 -0600 Subject: [PATCH] fix: Journal entries creation for Accrual Savings transactions --- .../AccrualBasedAccountingProcessorForSavings.java | 2 +- .../SavingsAccrualWritePlatformServiceImpl.java | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForSavings.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForSavings.java index 3f8e59c3c41..687a15bc596 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForSavings.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccrualBasedAccountingProcessorForSavings.java @@ -182,7 +182,7 @@ else if (savingsTransactionDTO.getTransactionType().isInterestPosting()) { else if (savingsTransactionDTO.getTransactionType().isAccrual()) { // Post journal entry for Accrual Recognition if (savingsTransactionDTO.getAmount().compareTo(BigDecimal.ZERO) > 0) { - if (feePayments.size() >= 0 || penaltyPayments.size() > 0) { + if (feePayments.size() > 0 || penaltyPayments.size() > 0) { this.helper.createCashBasedJournalEntriesAndReversalsForSavings(office, currencyCode, AccrualAccountsForSavings.FEES_RECEIVABLE.getValue(), AccrualAccountsForSavings.INCOME_FROM_FEES.getValue(), savingsProductId, paymentTypeId, savingsId, transactionId, transactionDate, amount, isReversal); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccrualWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccrualWritePlatformServiceImpl.java index 68e31909961..d833a67428d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccrualWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccrualWritePlatformServiceImpl.java @@ -23,7 +23,9 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; +import java.util.Set; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDomainService; @@ -63,6 +65,7 @@ public class SavingsAccrualWritePlatformServiceImpl implements SavingsAccrualWri private final SavingsAccountRepositoryWrapper savingsAccountRepository; private final SavingsHelper savingsHelper; private final ConfigurationDomainService configurationDomainService; + private final SavingsAccountDomainService savingsAccountDomainService; @Transactional @Override @@ -152,6 +155,11 @@ public SavingsAccountTransaction addSavingsChargeAccrualTransaction(SavingsAccou private void addAccrualTransactions(SavingsAccount savingsAccount, final LocalDate fromDate, final LocalDate tillDate, final Integer financialYearBeginningMonth, final boolean isSavingsInterestPostingAtCurrentPeriodEnd, final MathContext mc) { + final Set existingTransactionIds = new HashSet<>(); + final Set existingReversedTransactionIds = new HashSet<>(); + existingTransactionIds.addAll(savingsAccount.findExistingTransactionIds()); + existingReversedTransactionIds.addAll(savingsAccount.findExistingReversedTransactionIds()); + List postedAsOnTransactionDates = savingsAccount.getManualPostingDates(); final SavingsPostingInterestPeriodType postingPeriodType = SavingsPostingInterestPeriodType .fromInt(savingsAccount.getInterestCompoundingPeriodType()); @@ -213,6 +221,8 @@ private void addAccrualTransactions(SavingsAccount savingsAccount, final LocalDa savingsAccount.setAccruedTillDate(accruedTillDate); savingsAccountRepository.saveAndFlush(savingsAccount); + + savingsAccountDomainService.postJournalEntries(savingsAccount, existingTransactionIds, existingReversedTransactionIds, false); } }