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;