This is an automated email from the ASF dual-hosted git repository.

adamsaghy pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 3735aea59 FINERACT-2081: Refactor LoanSummaryWrapper
3735aea59 is described below

commit 3735aea59857c343218aa02c50c587f72b5e2eb8
Author: leksinomi <[email protected]>
AuthorDate: Mon Dec 16 16:50:33 2024 +0200

    FINERACT-2081: Refactor LoanSummaryWrapper
---
 .../portfolio/loanaccount/domain/Loan.java         |   9 +-
 .../portfolio/loanaccount/domain/LoanSummary.java  | 216 +++++++++++++---
 .../loanaccount/domain/LoanSummaryWrapper.java     | 276 ---------------------
 ...LoanScheduleCalculationPlatformServiceImpl.java |   5 +-
 .../LoanReschedulePreviewPlatformServiceImpl.java  |   7 +-
 ...nRescheduleRequestWritePlatformServiceImpl.java |   4 +-
 .../serialization/LoanApplicationValidator.java    |   5 +-
 .../service/LoanAccrualsProcessingServiceImpl.java |   2 +-
 ...ationWritePlatformServiceJpaRepositoryImpl.java |   4 +-
 .../loanaccount/service/LoanAssemblerImpl.java     |  11 +-
 .../service/LoanReadPlatformServiceImpl.java       |   2 +-
 .../LoanWritePlatformServiceJpaRepositoryImpl.java |   4 +-
 .../starter/LoanAccountConfiguration.java          |  28 +--
 ...nWritePlatformServiceJpaRepositoryImplTest.java |   3 -
 14 files changed, 216 insertions(+), 360 deletions(-)

diff --git 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
index 27bb50d75..c6524c9d9 100644
--- 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
+++ 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java
@@ -363,8 +363,6 @@ public class Loan extends 
AbstractAuditableWithUTCDateTimeCustom<Long> {
 
     @Transient
     private LoanLifecycleStateMachine loanLifecycleStateMachine;
-    @Transient
-    private LoanSummaryWrapper loanSummaryWrapper;
 
     @Setter()
     @Column(name = "principal_amount_proposed", scale = 6, precision = 19, 
nullable = false)
@@ -971,7 +969,7 @@ public class Loan extends 
AbstractAuditableWithUTCDateTimeCustom<Long> {
     }
 
     public BigDecimal getTotalInterest() {
-        return 
this.loanSummaryWrapper.calculateTotalInterestCharged(getRepaymentScheduleInstallments(),
 getCurrency()).getAmount();
+        return 
this.summary.calculateTotalInterestCharged(getRepaymentScheduleInstallments(), 
getCurrency()).getAmount();
     }
 
     public BigDecimal calculatePerInstallmentChargeAmount(final LoanCharge 
loanCharge) {
@@ -1189,7 +1187,7 @@ public class Loan extends 
AbstractAuditableWithUTCDateTimeCustom<Long> {
             this.totalRecovered = 
recoveredAmount.getAmountDefaultedToNullIfZero();
 
             final Money principal = 
this.loanRepaymentScheduleDetail.getPrincipal();
-            this.summary.updateSummary(getCurrency(), principal, 
getRepaymentScheduleInstallments(), this.loanSummaryWrapper, this.charges);
+            this.summary.updateSummary(getCurrency(), principal, 
getRepaymentScheduleInstallments(), this.charges);
             updateLoanOutstandingBalances();
         }
     }
@@ -2316,10 +2314,9 @@ public class Loan extends 
AbstractAuditableWithUTCDateTimeCustom<Long> {
         return receivableInterest;
     }
 
-    public void setHelpers(final LoanLifecycleStateMachine 
loanLifecycleStateMachine, final LoanSummaryWrapper loanSummaryWrapper,
+    public void setHelpers(final LoanLifecycleStateMachine 
loanLifecycleStateMachine,
             final LoanRepaymentScheduleTransactionProcessorFactory 
transactionProcessorFactory) {
         this.loanLifecycleStateMachine = loanLifecycleStateMachine;
-        this.loanSummaryWrapper = loanSummaryWrapper;
         this.transactionProcessorFactory = transactionProcessorFactory;
     }
 
diff --git 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java
 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java
index 1956682eb..9dcc97934 100644
--- 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java
+++ 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummary.java
@@ -176,60 +176,51 @@ public class LoanSummary {
     }
 
     public void updateSummary(final MonetaryCurrency currency, final Money 
principal,
-            final List<LoanRepaymentScheduleInstallment> 
repaymentScheduleInstallments, final LoanSummaryWrapper summaryWrapper,
-            Set<LoanCharge> charges) {
+            final List<LoanRepaymentScheduleInstallment> 
repaymentScheduleInstallments, Set<LoanCharge> charges) {
 
         this.totalPrincipalDisbursed = principal.getAmount();
-        this.totalPrincipalAdjustments = 
summaryWrapper.calculateTotalPrincipalAdjusted(repaymentScheduleInstallments, 
currency)
-                .getAmount();
-        this.totalFeeAdjustments = 
summaryWrapper.calculateTotalFeeAdjusted(repaymentScheduleInstallments, 
currency).getAmount();
-        this.totalPenaltyAdjustments = 
summaryWrapper.calculateTotalPenaltyAdjusted(repaymentScheduleInstallments, 
currency).getAmount();
-        this.totalPrincipalRepaid = 
summaryWrapper.calculateTotalPrincipalRepaid(repaymentScheduleInstallments, 
currency).getAmount();
-        this.totalPrincipalWrittenOff = 
summaryWrapper.calculateTotalPrincipalWrittenOff(repaymentScheduleInstallments, 
currency)
-                .getAmount();
+        this.totalPrincipalAdjustments = 
calculateTotalPrincipalAdjusted(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalFeeAdjustments = 
calculateTotalFeeAdjusted(repaymentScheduleInstallments, currency).getAmount();
+        this.totalPenaltyAdjustments = 
calculateTotalPenaltyAdjusted(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalPrincipalRepaid = 
calculateTotalPrincipalRepaid(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalPrincipalWrittenOff = 
calculateTotalPrincipalWrittenOff(repaymentScheduleInstallments, 
currency).getAmount();
 
         this.totalPrincipalOutstanding = 
principal.plus(this.totalPrincipalAdjustments).minus(this.totalPrincipalRepaid)
                 .minus(this.totalPrincipalWrittenOff).getAmount();
 
-        final Money totalInterestCharged = 
summaryWrapper.calculateTotalInterestCharged(repaymentScheduleInstallments, 
currency);
+        final Money totalInterestCharged = 
calculateTotalInterestCharged(repaymentScheduleInstallments, currency);
         this.totalInterestCharged = totalInterestCharged.getAmount();
-        this.totalInterestRepaid = 
summaryWrapper.calculateTotalInterestRepaid(repaymentScheduleInstallments, 
currency).getAmount();
-        this.totalInterestWaived = 
summaryWrapper.calculateTotalInterestWaived(repaymentScheduleInstallments, 
currency).getAmount();
-        this.totalInterestWrittenOff = 
summaryWrapper.calculateTotalInterestWrittenOff(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalInterestRepaid = 
calculateTotalInterestRepaid(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalInterestWaived = 
calculateTotalInterestWaived(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalInterestWrittenOff = 
calculateTotalInterestWrittenOff(repaymentScheduleInstallments, 
currency).getAmount();
 
         this.totalInterestOutstanding = 
totalInterestCharged.minus(this.totalInterestRepaid).minus(this.totalInterestWaived)
                 .minus(this.totalInterestWrittenOff).getAmount();
 
-        final Money totalFeeChargesCharged = 
summaryWrapper.calculateTotalFeeChargesCharged(repaymentScheduleInstallments, 
currency)
+        final Money totalFeeChargesCharged = 
calculateTotalFeeChargesCharged(repaymentScheduleInstallments, currency)
                 .plus(this.totalFeeChargesDueAtDisbursement);
         this.totalFeeChargesCharged = totalFeeChargesCharged.getAmount();
 
-        Money totalFeeChargesRepaidAtDisbursement = 
summaryWrapper.calculateTotalChargesRepaidAtDisbursement(charges, currency);
-        Money totalFeeChargesRepaidAfterDisbursement = 
summaryWrapper.calculateTotalFeeChargesRepaid(repaymentScheduleInstallments,
-                currency);
+        Money totalFeeChargesRepaidAtDisbursement = 
calculateTotalChargesRepaidAtDisbursement(charges, currency);
+        Money totalFeeChargesRepaidAfterDisbursement = 
calculateTotalFeeChargesRepaid(repaymentScheduleInstallments, currency);
         this.totalFeeChargesRepaid = 
totalFeeChargesRepaidAfterDisbursement.plus(totalFeeChargesRepaidAtDisbursement).getAmount();
 
         if (charges != null) {
-            this.totalFeeChargesWaived = 
summaryWrapper.calculateTotalFeeChargesWaived(charges, currency).getAmount();
+            this.totalFeeChargesWaived = 
calculateTotalFeeChargesWaived(charges, currency).getAmount();
         } else {
             this.totalFeeChargesWaived = BigDecimal.ZERO;
         }
 
-        this.totalFeeChargesWrittenOff = 
summaryWrapper.calculateTotalFeeChargesWrittenOff(repaymentScheduleInstallments,
 currency)
-                .getAmount();
+        this.totalFeeChargesWrittenOff = 
calculateTotalFeeChargesWrittenOff(repaymentScheduleInstallments, 
currency).getAmount();
 
         this.totalFeeChargesOutstanding = 
totalFeeChargesCharged.minus(this.totalFeeChargesRepaid).minus(this.totalFeeChargesWaived)
                 .minus(this.totalFeeChargesWrittenOff).getAmount();
 
-        final Money totalPenaltyChargesCharged = 
summaryWrapper.calculateTotalPenaltyChargesCharged(repaymentScheduleInstallments,
-                currency);
+        final Money totalPenaltyChargesCharged = 
calculateTotalPenaltyChargesCharged(repaymentScheduleInstallments, currency);
         this.totalPenaltyChargesCharged = 
totalPenaltyChargesCharged.getAmount();
-        this.totalPenaltyChargesRepaid = 
summaryWrapper.calculateTotalPenaltyChargesRepaid(repaymentScheduleInstallments,
 currency)
-                .getAmount();
-        this.totalPenaltyChargesWaived = 
summaryWrapper.calculateTotalPenaltyChargesWaived(repaymentScheduleInstallments,
 currency)
-                .getAmount();
-        this.totalPenaltyChargesWrittenOff = 
summaryWrapper.calculateTotalPenaltyChargesWrittenOff(repaymentScheduleInstallments,
 currency)
-                .getAmount();
+        this.totalPenaltyChargesRepaid = 
calculateTotalPenaltyChargesRepaid(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalPenaltyChargesWaived = 
calculateTotalPenaltyChargesWaived(repaymentScheduleInstallments, 
currency).getAmount();
+        this.totalPenaltyChargesWrittenOff = 
calculateTotalPenaltyChargesWrittenOff(repaymentScheduleInstallments, 
currency).getAmount();
 
         this.totalPenaltyChargesOutstanding = 
totalPenaltyChargesCharged.minus(this.totalPenaltyChargesRepaid)
                 
.minus(this.totalPenaltyChargesWaived).minus(this.totalPenaltyChargesWrittenOff).getAmount();
@@ -302,4 +293,173 @@ public class LoanSummary {
     public void updateTotalWaived(final BigDecimal totalWaived) {
         this.totalWaived = totalWaived;
     }
+
+    protected Money calculateTotalPrincipalRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getPrincipalCompleted(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPrincipalAdjusted(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getCreditedPrincipal(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalFeeAdjusted(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getCreditedFee(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPenaltyAdjusted(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getCreditedPenalty(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPrincipalWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getPrincipalWrittenOff(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalInterestCharged(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getInterestCharged(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalInterestRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getInterestPaid(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalInterestWaived(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getInterestWaived(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalInterestWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getInterestWrittenOff(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalFeeChargesCharged(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getFeeChargesCharged(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalFeeChargesRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getFeeChargesPaid(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalFeeChargesWaived(Set<LoanCharge> charges, 
final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanCharge charge : charges) {
+            if (charge.isActive() && !charge.isPenaltyCharge()) {
+                total = total.plus(charge.getAmountWaived(currency));
+            }
+        }
+        return total;
+    }
+
+    protected Money calculateTotalFeeChargesWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getFeeChargesWrittenOff(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPenaltyChargesCharged(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getPenaltyChargesCharged(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPenaltyChargesRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getPenaltyChargesPaid(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPenaltyChargesWaived(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = total.plus(installment.getPenaltyChargesWaived(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalPenaltyChargesWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
+            final MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
+            total = 
total.plus(installment.getPenaltyChargesWrittenOff(currency));
+        }
+        return total;
+    }
+
+    protected Money calculateTotalChargesRepaidAtDisbursement(Set<LoanCharge> 
charges, MonetaryCurrency currency) {
+        Money total = Money.zero(currency);
+        if (charges == null) {
+            return total;
+        }
+        for (final LoanCharge loanCharge : charges) {
+            if (!loanCharge.isPenaltyCharge() && 
loanCharge.getAmountPaid(currency).isGreaterThanZero()
+                    && loanCharge.isDisbursementCharge()) {
+                total = total.plus(loanCharge.getAmountPaid(currency));
+            }
+        }
+        return total;
+
+    }
 }
diff --git 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java
 
b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java
deleted file mode 100644
index 8ad10df39..000000000
--- 
a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanSummaryWrapper.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/**
- * 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.portfolio.loanaccount.domain;
-
-import java.time.LocalDate;
-import java.util.List;
-import java.util.Set;
-import org.apache.fineract.infrastructure.core.service.DateUtils;
-import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
-import org.apache.fineract.organisation.monetary.domain.Money;
-import org.springframework.stereotype.Component;
-
-/**
- * A wrapper for dealing with side-effect free functionality related to a 
loans transactions and repayment schedule.
- */
-@Component
-public final class LoanSummaryWrapper {
-
-    public Money calculateTotalPrincipalRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getPrincipalCompleted(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPrincipalAdjusted(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getCreditedPrincipal(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalFeeAdjusted(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getCreditedFee(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPenaltyAdjusted(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getCreditedPenalty(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPrincipalWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getPrincipalWrittenOff(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPrincipalOverdueOn(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency, final LocalDate overdueAsOf) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            if (installment.isOverdueOn(overdueAsOf)) {
-                total = 
total.plus(installment.getPrincipalOutstanding(currency));
-            }
-        }
-        return total;
-    }
-
-    public Money calculateTotalInterestCharged(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getInterestCharged(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalInterestRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getInterestPaid(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalInterestWaived(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getInterestWaived(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalInterestWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getInterestWrittenOff(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalInterestOverdueOn(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency, final LocalDate overdueAsOf) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            if (installment.isOverdueOn(overdueAsOf)) {
-                total = 
total.plus(installment.getInterestOutstanding(currency));
-            }
-        }
-        return total;
-    }
-
-    public Money calculateTotalFeeChargesCharged(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getFeeChargesCharged(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalFeeChargesRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getFeeChargesPaid(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalFeeChargesWaived(Set<LoanCharge> charges, final 
MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanCharge charge : charges) {
-            if (charge.isActive() && !charge.isPenaltyCharge()) {
-                total = total.plus(charge.getAmountWaived(currency));
-            }
-        }
-        return total;
-    }
-
-    public Money calculateTotalFeeChargesWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getFeeChargesWrittenOff(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalFeeChargesOverdueOn(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency, final LocalDate overdueAsOf) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            if (installment.isOverdueOn(overdueAsOf)) {
-                total = 
total.plus(installment.getFeeChargesOutstanding(currency));
-            }
-        }
-        return total;
-    }
-
-    public Money calculateTotalPenaltyChargesCharged(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getPenaltyChargesCharged(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPenaltyChargesRepaid(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getPenaltyChargesPaid(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPenaltyChargesWaived(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = total.plus(installment.getPenaltyChargesWaived(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPenaltyChargesWrittenOff(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            total = 
total.plus(installment.getPenaltyChargesWrittenOff(currency));
-        }
-        return total;
-    }
-
-    public Money calculateTotalPenaltyChargesOverdueOn(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency, final LocalDate overdueAsOf) {
-        Money total = Money.zero(currency);
-        for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-            if (installment.isOverdueOn(overdueAsOf)) {
-                total = 
total.plus(installment.getPenaltyChargesOutstanding(currency));
-            }
-        }
-        return total;
-    }
-
-    public Money calculateTotalOverdueOn(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency, final LocalDate overdueAsOf) {
-
-        final Money principalOverdue = 
calculateTotalPrincipalOverdueOn(repaymentScheduleInstallments, currency, 
overdueAsOf);
-        final Money interestOverdue = 
calculateTotalInterestOverdueOn(repaymentScheduleInstallments, currency, 
overdueAsOf);
-        final Money feeChargesOverdue = 
calculateTotalFeeChargesOverdueOn(repaymentScheduleInstallments, currency, 
overdueAsOf);
-        final Money penaltyChargesOverdue = 
calculateTotalPenaltyChargesOverdueOn(repaymentScheduleInstallments, currency, 
overdueAsOf);
-
-        return 
principalOverdue.plus(interestOverdue).plus(feeChargesOverdue).plus(penaltyChargesOverdue);
-    }
-
-    public LocalDate determineOverdueSinceDateFrom(final 
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments,
-            final MonetaryCurrency currency, final LocalDate from) {
-
-        LocalDate overdueSince = null;
-        final Money totalOverdue = 
calculateTotalOverdueOn(repaymentScheduleInstallments, currency, from);
-        if (totalOverdue.isGreaterThanZero()) {
-            for (final LoanRepaymentScheduleInstallment installment : 
repaymentScheduleInstallments) {
-                if (installment.isOverdueOn(from)) {
-                    if (overdueSince == null || 
DateUtils.isAfter(overdueSince, installment.getDueDate())) {
-                        overdueSince = installment.getDueDate();
-                    }
-                }
-            }
-        }
-
-        return overdueSince;
-    }
-
-    public Money calculateTotalChargesRepaidAtDisbursement(Set<LoanCharge> 
charges, MonetaryCurrency currency) {
-        Money total = Money.zero(currency);
-        if (charges == null) {
-            return total;
-        }
-        for (final LoanCharge loanCharge : charges) {
-            if (!loanCharge.isPenaltyCharge() && 
loanCharge.getAmountPaid(currency).isGreaterThanZero()
-                    && loanCharge.isDisbursementCharge()) {
-                total = total.plus(loanCharge.getAmountPaid(currency));
-            }
-        }
-        return total;
-
-    }
-}
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleCalculationPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleCalculationPlatformServiceImpl.java
index 72bf1d2e5..6baf6e320 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleCalculationPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/loanschedule/service/LoanScheduleCalculationPlatformServiceImpl.java
@@ -39,7 +39,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanLifecycleStateMachin
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import 
org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.LoanRepaymentScheduleTransactionProcessor;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleData;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanSchedulePeriodData;
@@ -64,7 +63,6 @@ public class LoanScheduleCalculationPlatformServiceImpl 
implements LoanScheduleC
     private final LoanUtilService loanUtilService;
     private final LoanRepositoryWrapper loanRepository;
     private final LoanLifecycleStateMachine defaultLoanLifecycleStateMachine;
-    private final LoanSummaryWrapper loanSummaryWrapper;
 
     @Override
     public LoanScheduleModel calculateLoanSchedule(final JsonQuery query, 
Boolean validateParams) {
@@ -212,8 +210,7 @@ public class LoanScheduleCalculationPlatformServiceImpl 
implements LoanScheduleC
 
     private Loan fetchLoan(final Long accountId) {
         final Loan loanAccount = 
this.loanRepository.findOneWithNotFoundDetection(accountId, true);
-        loanAccount.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanSummaryWrapper,
-                this.loanRepaymentScheduleTransactionProcessorFactory);
+        loanAccount.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
 
         return loanAccount;
     }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java
index e8df96f89..f568095a1 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanReschedulePreviewPlatformServiceImpl.java
@@ -30,7 +30,6 @@ import 
org.apache.fineract.portfolio.loanaccount.data.ScheduleGeneratorDTO;
 import org.apache.fineract.portfolio.loanaccount.domain.Loan;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations;
 import 
org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.LoanRepaymentScheduleTransactionProcessor;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.data.LoanScheduleDTO;
@@ -53,19 +52,17 @@ public class LoanReschedulePreviewPlatformServiceImpl 
implements LoanRescheduleP
     private final LoanUtilService loanUtilService;
     private final LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory;
     private final LoanScheduleGeneratorFactory loanScheduleFactory;
-    private final LoanSummaryWrapper loanSummaryWrapper;
     private static final DefaultScheduledDateGenerator 
DEFAULT_SCHEDULED_DATE_GENERATOR = new DefaultScheduledDateGenerator();
 
     @Autowired
     public LoanReschedulePreviewPlatformServiceImpl(final 
LoanRescheduleRequestRepositoryWrapper loanRescheduleRequestRepository,
             final LoanUtilService loanUtilService,
             final LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory,
-            final LoanScheduleGeneratorFactory loanScheduleFactory, final 
LoanSummaryWrapper loanSummaryWrapper) {
+            final LoanScheduleGeneratorFactory loanScheduleFactory) {
         this.loanRescheduleRequestRepository = loanRescheduleRequestRepository;
         this.loanUtilService = loanUtilService;
         this.loanRepaymentScheduleTransactionProcessorFactory = 
loanRepaymentScheduleTransactionProcessorFactory;
         this.loanScheduleFactory = loanScheduleFactory;
-        this.loanSummaryWrapper = loanSummaryWrapper;
     }
 
     @Override
@@ -132,7 +129,7 @@ public class LoanReschedulePreviewPlatformServiceImpl 
implements LoanRescheduleP
                 .determineProcessor(loan.transactionProcessingStrategy());
         final LoanScheduleGenerator loanScheduleGenerator = 
this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(),
                 loanApplicationTerms.getInterestMethod());
-        loan.setHelpers(null, this.loanSummaryWrapper, 
this.loanRepaymentScheduleTransactionProcessorFactory);
+        loan.setHelpers(null, 
this.loanRepaymentScheduleTransactionProcessorFactory);
         final LoanScheduleDTO loanSchedule = 
loanScheduleGenerator.rescheduleNextInstallments(mathContext, 
loanApplicationTerms, loan,
                 loanApplicationTerms.getHolidayDetailDTO(), 
loanRepaymentScheduleTransactionProcessor, rescheduleFromDate);
         final LoanScheduleModel loanScheduleModel = 
loanSchedule.getLoanScheduleModel();
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java
index e1df63373..9837dc808 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/rescheduleloan/service/LoanRescheduleRequestWritePlatformServiceImpl.java
@@ -60,7 +60,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTra
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariationType;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
@@ -113,7 +112,6 @@ public class LoanRescheduleRequestWritePlatformServiceImpl 
implements LoanResche
     private final LoanUtilService loanUtilService;
     private final LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory;
     private final LoanScheduleGeneratorFactory loanScheduleFactory;
-    private final LoanSummaryWrapper loanSummaryWrapper;
     private final AccountTransfersWritePlatformService 
accountTransfersWritePlatformService;
     private static final DefaultScheduledDateGenerator 
DEFAULT_SCHEDULED_DATE_GENERATOR = new DefaultScheduledDateGenerator();
     private final LoanAccountDomainService loanAccountDomainService;
@@ -430,7 +428,7 @@ public class LoanRescheduleRequestWritePlatformServiceImpl 
implements LoanResche
             final LoanScheduleGenerator loanScheduleGenerator = 
this.loanScheduleFactory.create(loanApplicationTerms.getLoanScheduleType(),
                     loanApplicationTerms.getInterestMethod());
             final LoanLifecycleStateMachine loanLifecycleStateMachine = null;
-            loan.setHelpers(loanLifecycleStateMachine, 
this.loanSummaryWrapper, this.loanRepaymentScheduleTransactionProcessorFactory);
+            loan.setHelpers(loanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
             final LoanScheduleDTO loanSchedule = 
loanScheduleGenerator.rescheduleNextInstallments(mathContext, 
loanApplicationTerms, loan,
                     loanApplicationTerms.getHolidayDetailDTO(), 
loanRepaymentScheduleTransactionProcessor, rescheduleFromDate);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationValidator.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationValidator.java
index f9db634b5..cc4067996 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationValidator.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/serialization/LoanApplicationValidator.java
@@ -95,7 +95,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanLifecycleStateMachin
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType;
 import 
org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.impl.AdvancedPaymentScheduleTransactionProcessor;
 import 
org.apache.fineract.portfolio.loanaccount.exception.ExceedingTrancheCountException;
@@ -195,7 +194,6 @@ public final class LoanApplicationValidator {
     private final HolidayRepository holidayRepository;
     private final SavingsAccountRepositoryWrapper savingsAccountRepository;
     private final LoanLifecycleStateMachine defaultLoanLifecycleStateMachine;
-    private final LoanSummaryWrapper loanSummaryWrapper;
     private final CalendarInstanceRepository calendarInstanceRepository;
     private final LoanUtilService loanUtilService;
     private final EntityDatatableChecksWritePlatformService 
entityDatatableChecksWritePlatformService;
@@ -1987,8 +1985,7 @@ public final class LoanApplicationValidator {
             
baseDataValidator.reset().parameter(LoanApiConstants.noteParameterName).value(note).notExceedingLengthOf(1000);
 
             final Loan loan = 
this.loanRepositoryWrapper.findOneWithNotFoundDetection(loanId, true);
-            loan.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanSummaryWrapper,
-                    this.loanRepaymentScheduleTransactionProcessorFactory);
+            loan.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
 
             final Client client = loan.client();
             if (client != null && client.isNotActive()) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
index 55d5de5b7..fb53d65ba 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAccrualsProcessingServiceImpl.java
@@ -1208,6 +1208,6 @@ public class LoanAccrualsProcessingServiceImpl implements 
LoanAccrualsProcessing
     }
 
     private void setSetHelpers(Loan loan) {
-        loan.setHelpers(null, null, transactionProcessorFactory);
+        loan.setHelpers(null, transactionProcessorFactory);
     }
 }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
index f17de8ede..4499fae5e 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanApplicationWritePlatformServiceJpaRepositoryImpl.java
@@ -79,7 +79,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTra
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import 
org.apache.fineract.portfolio.loanaccount.exception.LoanApplicationNotInSubmittedAndPendingApprovalStateCannotBeDeleted;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanApplicationTerms;
 import 
org.apache.fineract.portfolio.loanaccount.loanschedule.service.LoanScheduleAssembler;
@@ -109,7 +108,6 @@ public class 
LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
     private final LoanRepositoryWrapper loanRepositoryWrapper;
     private final NoteRepository noteRepository;
     private final LoanAssembler loanAssembler;
-    private final LoanSummaryWrapper loanSummaryWrapper;
     private final LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory;
     private final CalendarRepository calendarRepository;
     private final CalendarInstanceRepository calendarInstanceRepository;
@@ -767,7 +765,7 @@ public class 
LoanApplicationWritePlatformServiceJpaRepositoryImpl implements Loa
 
     private Loan retrieveLoanBy(final Long loanId) {
         final Loan loan = 
this.loanRepositoryWrapper.findOneWithNotFoundDetection(loanId, true);
-        loan.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanSummaryWrapper, this.loanRepaymentScheduleTransactionProcessorFactory);
+        loan.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
         return loan;
     }
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssemblerImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssemblerImpl.java
index 5a683baa8..8c08bae3a 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssemblerImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanAssemblerImpl.java
@@ -80,7 +80,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanPaymentAllocationRul
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails;
 import 
org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.LoanRepaymentScheduleTransactionProcessor;
 import 
org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.impl.AdvancedPaymentScheduleTransactionProcessor;
@@ -117,7 +116,6 @@ public class LoanAssemblerImpl implements LoanAssembler {
     private final LoanScheduleAssembler loanScheduleAssembler;
     private final LoanChargeAssembler loanChargeAssembler;
     private final LoanCollateralAssembler collateralAssembler;
-    private final LoanSummaryWrapper loanSummaryWrapper;
     private final LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory;
     private final HolidayRepository holidayRepository;
     private final ConfigurationDomainService configurationDomainService;
@@ -142,16 +140,14 @@ public class LoanAssemblerImpl implements LoanAssembler {
     @Override
     public Loan assembleFrom(final Long accountId) {
         final Loan loanAccount = 
this.loanRepository.findOneWithNotFoundDetection(accountId, true);
-        loanAccount.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanSummaryWrapper,
-                this.loanRepaymentScheduleTransactionProcessorFactory);
+        loanAccount.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
 
         return loanAccount;
     }
 
     @Override
     public void setHelpers(final Loan loanAccount) {
-        loanAccount.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanSummaryWrapper,
-                this.loanRepaymentScheduleTransactionProcessorFactory);
+        loanAccount.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
     }
 
     @Override
@@ -276,8 +272,7 @@ public class LoanAssemblerImpl implements LoanAssembler {
         }
 
         
copyAdvancedPaymentRulesIfApplicable(transactionProcessingStrategyCode, 
loanProduct, loanApplication);
-        loanApplication.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanSummaryWrapper,
-                this.loanRepaymentScheduleTransactionProcessorFactory);
+        loanApplication.setHelpers(defaultLoanLifecycleStateMachine, 
this.loanRepaymentScheduleTransactionProcessorFactory);
         // TODO: review
         loanChargeService.recalculateAllCharges(loanApplication);
         topUpLoanConfiguration(element, loanApplication);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
index d9fbc49b0..4d252e876 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanReadPlatformServiceImpl.java
@@ -459,7 +459,7 @@ public class LoanReadPlatformServiceImpl implements 
LoanReadPlatformService, Loa
         
this.loanUtilService.validateRepaymentTransactionType(repaymentTransactionType);
 
         final Loan loan = 
this.loanRepositoryWrapper.findOneWithNotFoundDetection(loanId, true);
-        loan.setHelpers(null, null, 
loanRepaymentScheduleTransactionProcessorFactory);
+        loan.setHelpers(null, 
loanRepaymentScheduleTransactionProcessorFactory);
 
         final MonetaryCurrency currency = loan.getCurrency();
         final ApplicationCurrency applicationCurrency = 
this.applicationCurrencyRepository.findOneWithNotFoundDetection(currency);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
index b6ed00e67..4e3609167 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java
@@ -170,7 +170,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanStatus;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanSubStatus;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariationType;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
@@ -256,7 +255,6 @@ public class LoanWritePlatformServiceJpaRepositoryImpl 
implements LoanWritePlatf
     private final BusinessEventNotifierService businessEventNotifierService;
     private final GuarantorDomainService guarantorDomainService;
     private final LoanUtilService loanUtilService;
-    private final LoanSummaryWrapper loanSummaryWrapper;
     private final EntityDatatableChecksWritePlatformService 
entityDatatableChecksWritePlatformService;
     private final LoanRepaymentScheduleTransactionProcessorFactory 
transactionProcessingStrategy;
     private final CodeValueRepositoryWrapper codeValueRepository;
@@ -2380,7 +2378,7 @@ public class LoanWritePlatformServiceJpaRepositoryImpl 
implements LoanWritePlatf
                 holidays = 
this.holidayRepository.findByOfficeIdAndGreaterThanDate(loan.getOfficeId(), 
loan.getDisbursementDate());
                 if 
(loan.repaymentScheduleDetail().isInterestRecalculationEnabled()) {
                     ScheduleGeneratorDTO scheduleGeneratorDTO = 
loanUtilService.buildScheduleGeneratorDTO(loan, recalculateFrom);
-                    loan.setHelpers(null, this.loanSummaryWrapper, 
this.transactionProcessingStrategy);
+                    loan.setHelpers(null, this.transactionProcessingStrategy);
                     
loanScheduleService.recalculateScheduleFromLastTransaction(loan, 
scheduleGeneratorDTO, existingTransactionIds,
                             existingReversedTransactionIds);
                     createAndSaveLoanScheduleArchive(loan, 
scheduleGeneratorDTO);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/starter/LoanAccountConfiguration.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/starter/LoanAccountConfiguration.java
index 1f0605de6..48d5393f3 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/starter/LoanAccountConfiguration.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/starter/LoanAccountConfiguration.java
@@ -72,7 +72,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleIns
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationRepository;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository;
 import 
org.apache.fineract.portfolio.loanaccount.guarantor.service.GuarantorDomainService;
@@ -189,8 +188,7 @@ public class LoanAccountConfiguration {
     public LoanApplicationWritePlatformService 
loanApplicationWritePlatformService(PlatformSecurityContext context,
             FromJsonHelper fromJsonHelper, LoanApplicationTransitionValidator 
loanApplicationTransitionValidator,
             LoanApplicationValidator loanApplicationValidator, 
LoanRepositoryWrapper loanRepositoryWrapper, NoteRepository noteRepository,
-            LoanAssembler loanAssembler, LoanSummaryWrapper loanSummaryWrapper,
-            LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory,
+            LoanAssembler loanAssembler, 
LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory,
             CalendarRepository calendarRepository, CalendarInstanceRepository 
calendarInstanceRepository,
             SavingsAccountRepositoryWrapper savingsAccountRepository, 
AccountAssociationsRepository accountAssociationsRepository,
             LoanReadPlatformService loanReadPlatformService, 
BusinessEventNotifierService businessEventNotifierService,
@@ -201,7 +199,7 @@ public class LoanAccountConfiguration {
             LoanLifecycleStateMachine defaultLoanLifecycleStateMachine, 
LoanAccrualsProcessingService loanAccrualsProcessingService,
             LoanDownPaymentTransactionValidator 
loanDownPaymentTransactionValidator, LoanScheduleService loanScheduleService) {
         return new 
LoanApplicationWritePlatformServiceJpaRepositoryImpl(context, 
loanApplicationTransitionValidator,
-                loanApplicationValidator, loanRepositoryWrapper, 
noteRepository, loanAssembler, loanSummaryWrapper,
+                loanApplicationValidator, loanRepositoryWrapper, 
noteRepository, loanAssembler,
                 loanRepaymentScheduleTransactionProcessorFactory, 
calendarRepository, calendarInstanceRepository, savingsAccountRepository,
                 accountAssociationsRepository, businessEventNotifierService, 
loanScheduleAssembler, loanUtilService,
                 calendarReadPlatformService, 
entityDatatableChecksWritePlatformService, glimRepository, loanRepository,
@@ -222,7 +220,7 @@ public class LoanAccountConfiguration {
             LoanProductRepository loanProductRepository, 
ClientRepositoryWrapper clientRepository, GroupRepositoryWrapper 
groupRepository,
             FundRepository fundRepository, StaffRepository staffRepository, 
CodeValueRepositoryWrapper codeValueRepository,
             LoanScheduleAssembler loanScheduleAssembler, LoanChargeAssembler 
loanChargeAssembler,
-            LoanCollateralAssembler collateralAssembler, LoanSummaryWrapper 
loanSummaryWrapper,
+            LoanCollateralAssembler collateralAssembler,
             LoanRepaymentScheduleTransactionProcessorFactory 
loanRepaymentScheduleTransactionProcessorFactory,
             HolidayRepository holidayRepository, ConfigurationDomainService 
configurationDomainService,
             WorkingDaysRepositoryWrapper workingDaysRepository, RateAssembler 
rateAssembler,
@@ -235,11 +233,11 @@ public class LoanAccountConfiguration {
             LoanDisbursementService loanDisbursementService, LoanChargeService 
loanChargeService, LoanOfficerService loanOfficerService) {
         return new LoanAssemblerImpl(fromApiJsonHelper, loanRepository, 
loanProductRepository, clientRepository, groupRepository,
                 fundRepository, staffRepository, codeValueRepository, 
loanScheduleAssembler, loanChargeAssembler, collateralAssembler,
-                loanSummaryWrapper, 
loanRepaymentScheduleTransactionProcessorFactory, holidayRepository, 
configurationDomainService,
-                workingDaysRepository, rateAssembler, 
defaultLoanLifecycleStateMachine, externalIdFactory, 
accountNumberFormatRepository,
-                glimRepository, accountNumberGenerator, 
glimAccountInfoWritePlatformService, loanCollateralAssembler,
-                calculationPlatformService, loanDisbursementDetailsAssembler, 
loanChargeMapper, loanCollateralManagementMapper,
-                loanAccrualsProcessingService, loanDisbursementService, 
loanChargeService, loanOfficerService);
+                loanRepaymentScheduleTransactionProcessorFactory, 
holidayRepository, configurationDomainService, workingDaysRepository,
+                rateAssembler, defaultLoanLifecycleStateMachine, 
externalIdFactory, accountNumberFormatRepository, glimRepository,
+                accountNumberGenerator, glimAccountInfoWritePlatformService, 
loanCollateralAssembler, calculationPlatformService,
+                loanDisbursementDetailsAssembler, loanChargeMapper, 
loanCollateralManagementMapper, loanAccrualsProcessingService,
+                loanDisbursementService, loanChargeService, 
loanOfficerService);
     }
 
     @Bean
@@ -374,7 +372,7 @@ public class LoanAccountConfiguration {
             LoanScheduleHistoryWritePlatformService 
loanScheduleHistoryWritePlatformService,
             LoanApplicationValidator loanApplicationValidator, 
AccountAssociationsRepository accountAssociationRepository,
             AccountTransferDetailRepository accountTransferDetailRepository, 
BusinessEventNotifierService businessEventNotifierService,
-            GuarantorDomainService guarantorDomainService, LoanUtilService 
loanUtilService, LoanSummaryWrapper loanSummaryWrapper,
+            GuarantorDomainService guarantorDomainService, LoanUtilService 
loanUtilService,
             EntityDatatableChecksWritePlatformService 
entityDatatableChecksWritePlatformService,
             LoanRepaymentScheduleTransactionProcessorFactory 
transactionProcessingStrategy, CodeValueRepositoryWrapper codeValueRepository,
             CashierTransactionDataValidator cashierTransactionDataValidator, 
GLIMAccountInfoRepository glimRepository,
@@ -396,10 +394,10 @@ public class LoanAccountConfiguration {
                 accountTransfersWritePlatformService, 
accountTransfersReadPlatformService, accountAssociationsReadPlatformService,
                 loanReadPlatformService, fromApiJsonHelper, 
calendarRepository, loanScheduleHistoryWritePlatformService,
                 loanApplicationValidator, accountAssociationRepository, 
accountTransferDetailRepository, businessEventNotifierService,
-                guarantorDomainService, loanUtilService, loanSummaryWrapper, 
entityDatatableChecksWritePlatformService,
-                transactionProcessingStrategy, codeValueRepository, 
cashierTransactionDataValidator, glimRepository, loanRepository,
-                repaymentWithPostDatedChecksAssembler, 
postDatedChecksRepository, loanRepaymentScheduleInstallmentRepository,
-                defaultLoanLifecycleStateMachine, loanAccountLockService, 
externalIdFactory, replayedTransactionBusinessEventService,
+                guarantorDomainService, loanUtilService, 
entityDatatableChecksWritePlatformService, transactionProcessingStrategy,
+                codeValueRepository, cashierTransactionDataValidator, 
glimRepository, loanRepository, repaymentWithPostDatedChecksAssembler,
+                postDatedChecksRepository, 
loanRepaymentScheduleInstallmentRepository, defaultLoanLifecycleStateMachine,
+                loanAccountLockService, externalIdFactory, 
replayedTransactionBusinessEventService,
                 loanAccrualTransactionBusinessEventService, errorHandler, 
loanDownPaymentHandlerService, accountTransferRepository,
                 loanTransactionAssembler, loanAccrualsProcessingService, 
loanOfficerValidator, loanDownPaymentTransactionValidator,
                 loanDisbursementService, loanScheduleService, 
loanChargeValidator, loanOfficerService);
diff --git 
a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImplTest.java
 
b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImplTest.java
index 4574dc5d8..a4fc70a01 100644
--- 
a/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImplTest.java
+++ 
b/fineract-provider/src/test/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImplTest.java
@@ -66,7 +66,6 @@ import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleIns
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleTransactionProcessorFactory;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepository;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanRepositoryWrapper;
-import org.apache.fineract.portfolio.loanaccount.domain.LoanSummaryWrapper;
 import org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation;
 import 
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationRepository;
@@ -155,8 +154,6 @@ class LoanWritePlatformServiceJpaRepositoryImplTest {
     @Mock
     private LoanUtilService loanUtilService;
     @Mock
-    private LoanSummaryWrapper loanSummaryWrapper;
-    @Mock
     private EntityDatatableChecksWritePlatformService 
entityDatatableChecksWritePlatformService;
     @Mock
     private LoanRepaymentScheduleTransactionProcessorFactory 
transactionProcessingStrategy;

Reply via email to