Revert "FINERACT-1840: Fee income is not realised if the loan got fully repaid (#2902)"

This reverts commit f3d7c042a453d2532e65685661dea1b699341bde.
diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
index d503a8e..6db2211 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanAccountDomainServiceJpa.java
@@ -547,59 +547,50 @@
     @Override
     public void recalculateAccruals(Loan loan, boolean isInterestCalculationHappened) {
         LocalDate accruedTill = loan.getAccruedTill();
-        final LocalDate businessDate = DateUtils.getBusinessLocalDate();
-        if (loan.isPeriodicAccrualAccountingEnabledOnLoanProduct() // Loan Product with Accrual Accounting
-                && isInterestCalculationHappened // Loan Product with Interest Recalculation enabled
-                // Loan Account accrued till is not equal to the Business Date
-                && (accruedTill == null || !accruedTill.equals(businessDate)) && !loan.isNpa() // Loan Account is not
-                                                                                               // NPA
-        ) {
-            // Loan Account is Active OR is Recently Closed with Obligations Met
-            if (loan.getStatus().isActive() || (loan.getStatus().isClosedObligationsMet() && loan.getClosedOnDate().equals(businessDate))) {
-                if (accruedTill == null) {
-                    accruedTill = businessDate;
-                }
+        if (!loan.isPeriodicAccrualAccountingEnabledOnLoanProduct() || !isInterestCalculationHappened || accruedTill == null || loan.isNpa()
+                || !loan.getStatus().isActive()) {
+            return;
+        }
 
-                boolean isOrganisationDateEnabled = this.configurationDomainService.isOrganisationstartDateEnabled();
-                LocalDate organisationStartDate = businessDate;
-                if (isOrganisationDateEnabled) {
-                    organisationStartDate = this.configurationDomainService.retrieveOrganisationStartDate();
-                }
-                Collection<LoanScheduleAccrualData> loanScheduleAccrualList = new ArrayList<>();
-                List<LoanRepaymentScheduleInstallment> installments = loan.getRepaymentScheduleInstallments();
-                Long loanId = loan.getId();
-                Long officeId = loan.getOfficeId();
-                LocalDate accrualStartDate = null;
-                PeriodFrequencyType repaymentFrequency = loan.repaymentScheduleDetail().getRepaymentPeriodFrequencyType();
-                Integer repayEvery = loan.repaymentScheduleDetail().getRepayEvery();
-                LocalDate interestCalculatedFrom = loan.getInterestChargedFromDate();
-                Long loanProductId = loan.productId();
-                MonetaryCurrency currency = loan.getCurrency();
-                ApplicationCurrency applicationCurrency = this.applicationCurrencyRepository.findOneWithNotFoundDetection(currency);
-                CurrencyData currencyData = applicationCurrency.toData();
-                Set<LoanCharge> loanCharges = loan.getActiveCharges();
+        boolean isOrganisationDateEnabled = this.configurationDomainService.isOrganisationstartDateEnabled();
+        LocalDate organisationStartDate = DateUtils.getBusinessLocalDate();
+        if (isOrganisationDateEnabled) {
+            organisationStartDate = this.configurationDomainService.retrieveOrganisationStartDate();
+        }
+        Collection<LoanScheduleAccrualData> loanScheduleAccrualList = new ArrayList<>();
+        List<LoanRepaymentScheduleInstallment> installments = loan.getRepaymentScheduleInstallments();
+        Long loanId = loan.getId();
+        Long officeId = loan.getOfficeId();
+        LocalDate accrualStartDate = null;
+        PeriodFrequencyType repaymentFrequency = loan.repaymentScheduleDetail().getRepaymentPeriodFrequencyType();
+        Integer repayEvery = loan.repaymentScheduleDetail().getRepayEvery();
+        LocalDate interestCalculatedFrom = loan.getInterestChargedFromDate();
+        Long loanProductId = loan.productId();
+        MonetaryCurrency currency = loan.getCurrency();
+        ApplicationCurrency applicationCurrency = this.applicationCurrencyRepository.findOneWithNotFoundDetection(currency);
+        CurrencyData currencyData = applicationCurrency.toData();
+        Set<LoanCharge> loanCharges = loan.getActiveCharges();
 
-                for (LoanRepaymentScheduleInstallment installment : installments) {
-                    if (installment.getDueDate().isAfter(loan.getMaturityDate())) {
-                        accruedTill = businessDate;
-                    }
-                    if (!isOrganisationDateEnabled || organisationStartDate.isBefore(installment.getDueDate())) {
-                        generateLoanScheduleAccrualData(accruedTill, loanScheduleAccrualList, loanId, officeId, accrualStartDate,
-                                repaymentFrequency, repayEvery, interestCalculatedFrom, loanProductId, currency, currencyData, loanCharges,
-                                installment);
-                    }
-                }
-
-                if (!loanScheduleAccrualList.isEmpty()) {
-                    try {
-                        this.loanAccrualPlatformService.addPeriodicAccruals(accruedTill, loanScheduleAccrualList);
-                    } catch (MultiException e) {
-                        String globalisationMessageCode = "error.msg.accrual.exception";
-                        throw new GeneralPlatformDomainRuleException(globalisationMessageCode, e.getMessage(), e);
-                    }
-                }
+        for (LoanRepaymentScheduleInstallment installment : installments) {
+            if (installment.getDueDate().isAfter(loan.getMaturityDate())) {
+                accruedTill = DateUtils.getBusinessLocalDate();
+            }
+            if (!isOrganisationDateEnabled || organisationStartDate.isBefore(installment.getDueDate())) {
+                generateLoanScheduleAccrualData(accruedTill, loanScheduleAccrualList, loanId, officeId, accrualStartDate,
+                        repaymentFrequency, repayEvery, interestCalculatedFrom, loanProductId, currency, currencyData, loanCharges,
+                        installment);
             }
         }
+
+        if (!loanScheduleAccrualList.isEmpty()) {
+            try {
+                this.loanAccrualPlatformService.addPeriodicAccruals(accruedTill, loanScheduleAccrualList);
+            } catch (MultiException e) {
+                String globalisationMessageCode = "error.msg.accrual.exception";
+                throw new GeneralPlatformDomainRuleException(globalisationMessageCode, e.getMessage(), e);
+            }
+        }
+
     }
 
     private void generateLoanScheduleAccrualData(final LocalDate accruedTill,