From 101a82bf6fd6542a1a6ad3a5b302a79c8ee2d2e3 Mon Sep 17 00:00:00 2001 From: "Sinha, Abhinav" Date: Mon, 23 Oct 2023 12:46:17 -0400 Subject: [PATCH] Add custom Configuration class for accounting/journalentry module (FINERACT-1932) --- .../service/AccountingProcessorHelper.java | 2 - .../JournalEntryReadPlatformServiceImpl.java | 2 - ...WritePlatformServiceJpaRepositoryImpl.java | 2 - .../AccountingJournalEntryConfiguration.java | 105 ++++++++++++++++++ 4 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/starter/AccountingJournalEntryConfiguration.java diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java index 2aa882c6f05..05024d972be 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/AccountingProcessorHelper.java @@ -77,9 +77,7 @@ import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; import org.apache.fineract.portfolio.shareaccounts.data.ShareAccountTransactionEnumData; import org.springframework.dao.DataAccessException; -import org.springframework.stereotype.Service; -@Service @RequiredArgsConstructor public class AccountingProcessorHelper { diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java index 8dfa84213a6..88a826c170d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryReadPlatformServiceImpl.java @@ -65,10 +65,8 @@ import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; -import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -@Service @RequiredArgsConstructor public class JournalEntryReadPlatformServiceImpl implements JournalEntryReadPlatformService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java index 97d09dcbf8a..623212f0d46 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/service/JournalEntryWritePlatformServiceJpaRepositoryImpl.java @@ -81,11 +81,9 @@ import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.NonTransientDataAccessException; import org.springframework.orm.jpa.JpaSystemException; -import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -@Service @RequiredArgsConstructor @Slf4j public class JournalEntryWritePlatformServiceJpaRepositoryImpl implements JournalEntryWritePlatformService { diff --git a/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/starter/AccountingJournalEntryConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/starter/AccountingJournalEntryConfiguration.java new file mode 100644 index 00000000000..73a08c06404 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/accounting/journalentry/starter/AccountingJournalEntryConfiguration.java @@ -0,0 +1,105 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.accounting.journalentry.starter; + +import org.apache.fineract.accounting.closure.domain.GLClosureRepository; +import org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccountRepositoryWrapper; +import org.apache.fineract.accounting.glaccount.domain.GLAccountRepository; +import org.apache.fineract.accounting.glaccount.service.GLAccountReadPlatformService; +import org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository; +import org.apache.fineract.accounting.journalentry.serialization.JournalEntryCommandFromApiJsonDeserializer; +import org.apache.fineract.accounting.journalentry.service.AccountingProcessorForLoanFactory; +import org.apache.fineract.accounting.journalentry.service.AccountingProcessorForSavingsFactory; +import org.apache.fineract.accounting.journalentry.service.AccountingProcessorForSharesFactory; +import org.apache.fineract.accounting.journalentry.service.AccountingProcessorHelper; +import org.apache.fineract.accounting.journalentry.service.CashBasedAccountingProcessorForClientTransactions; +import org.apache.fineract.accounting.journalentry.service.JournalEntryReadPlatformService; +import org.apache.fineract.accounting.journalentry.service.JournalEntryReadPlatformServiceImpl; +import org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformService; +import org.apache.fineract.accounting.journalentry.service.JournalEntryWritePlatformServiceJpaRepositoryImpl; +import org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository; +import org.apache.fineract.accounting.rule.domain.AccountingRuleRepository; +import org.apache.fineract.infrastructure.core.service.PaginationHelper; +import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; +import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.apache.fineract.infrastructure.security.utils.ColumnValidator; +import org.apache.fineract.organisation.office.domain.OfficeRepository; +import org.apache.fineract.organisation.office.domain.OfficeRepositoryWrapper; +import org.apache.fineract.organisation.office.domain.OrganisationCurrencyRepositoryWrapper; +import org.apache.fineract.organisation.office.service.OfficeReadPlatformService; +import org.apache.fineract.portfolio.account.service.AccountTransfersReadPlatformService; +import org.apache.fineract.portfolio.charge.domain.ChargeRepositoryWrapper; +import org.apache.fineract.portfolio.client.domain.ClientTransactionRepository; +import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; +import org.apache.fineract.portfolio.paymentdetail.service.PaymentDetailWritePlatformService; +import org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +@Configuration +public class AccountingJournalEntryConfiguration { + + @Bean + @ConditionalOnMissingBean(AccountingProcessorHelper.class) + public AccountingProcessorHelper accountingProcessorHelper(JournalEntryRepository glJournalEntryRepository, + ProductToGLAccountMappingRepository accountMappingRepository, + FinancialActivityAccountRepositoryWrapper financialActivityAccountRepository, GLClosureRepository closureRepository, + GLAccountRepository glAccountRepository, OfficeRepository officeRepository, LoanTransactionRepository loanTransactionRepository, + ClientTransactionRepository clientTransactionRepository, + SavingsAccountTransactionRepository savingsAccountTransactionRepository, + AccountTransfersReadPlatformService accountTransfersReadPlatformService, ChargeRepositoryWrapper chargeRepositoryWrapper, + BusinessEventNotifierService businessEventNotifierService) { + return new AccountingProcessorHelper(glJournalEntryRepository, accountMappingRepository, financialActivityAccountRepository, + closureRepository, glAccountRepository, officeRepository, loanTransactionRepository, clientTransactionRepository, + savingsAccountTransactionRepository, accountTransfersReadPlatformService, chargeRepositoryWrapper, + businessEventNotifierService); + } + + @Bean + @ConditionalOnMissingBean(JournalEntryReadPlatformService.class) + public JournalEntryReadPlatformService journalEntryReadPlatformService(JdbcTemplate jdbcTemplate, + GLAccountReadPlatformService glAccountReadPlatformService, OfficeReadPlatformService officeReadPlatformService, + ColumnValidator columnValidator, FinancialActivityAccountRepositoryWrapper financialActivityAccountRepositoryWrapper, + PaginationHelper paginationHelper, DatabaseSpecificSQLGenerator sqlGenerator) { + return new JournalEntryReadPlatformServiceImpl(jdbcTemplate, glAccountReadPlatformService, officeReadPlatformService, + columnValidator, financialActivityAccountRepositoryWrapper, paginationHelper, sqlGenerator); + } + + @Bean + @ConditionalOnMissingBean(JournalEntryWritePlatformService.class) + public JournalEntryWritePlatformService journalEntryWritePlatformService(GLClosureRepository glClosureRepository, + GLAccountRepository glAccountRepository, JournalEntryRepository glJournalEntryRepository, + OfficeRepositoryWrapper officeRepositoryWrapper, AccountingProcessorForLoanFactory accountingProcessorForLoanFactory, + AccountingProcessorForSavingsFactory accountingProcessorForSavingsFactory, + AccountingProcessorForSharesFactory accountingProcessorForSharesFactory, AccountingProcessorHelper helper, + JournalEntryCommandFromApiJsonDeserializer fromApiJsonDeserializer, AccountingRuleRepository accountingRuleRepository, + GLAccountReadPlatformService glAccountReadPlatformService, OrganisationCurrencyRepositoryWrapper organisationCurrencyRepository, + PlatformSecurityContext context, PaymentDetailWritePlatformService paymentDetailWritePlatformService, + FinancialActivityAccountRepositoryWrapper financialActivityAccountRepositoryWrapper, + CashBasedAccountingProcessorForClientTransactions accountingProcessorForClientTransactions) { + return new JournalEntryWritePlatformServiceJpaRepositoryImpl(glClosureRepository, glAccountRepository, glJournalEntryRepository, + officeRepositoryWrapper, accountingProcessorForLoanFactory, accountingProcessorForSavingsFactory, + accountingProcessorForSharesFactory, helper, fromApiJsonDeserializer, accountingRuleRepository, + glAccountReadPlatformService, organisationCurrencyRepository, context, paymentDetailWritePlatformService, + financialActivityAccountRepositoryWrapper, accountingProcessorForClientTransactions); + } +}