Skip to content

Commit 57ebadc

Browse files
committed
FINERACT-2354: Re-aging: -Interest Handling Option: Equal amortization
fix rebase and run auto codestyle
1 parent 0d9a0ee commit 57ebadc

File tree

9 files changed

+26
-23
lines changed

9 files changed

+26
-23
lines changed

fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1829,7 +1829,8 @@ public boolean isReAged() {
18291829

18301830
public LoanReAgeInterestHandlingType getReAgeInterestHandlingType() {
18311831
if (isReAged()) {
1832-
return loanTransactions.stream().filter(LoanTransaction::isNotReversed).filter(LoanTransaction::isReAge).findFirst().orElseThrow().getLoanReAgeParameter().getInterestHandlingType();
1832+
return loanTransactions.stream().filter(LoanTransaction::isNotReversed).filter(LoanTransaction::isReAge).findFirst()
1833+
.orElseThrow().getLoanReAgeParameter().getInterestHandlingType();
18331834
}
18341835
return null;
18351836
}

fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/reaging/LoanReAgeInterestHandlingType.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,6 @@ public enum LoanReAgeInterestHandlingType {
3434
"Equal Amortization of Outstanding payable Interest"), //
3535
EQUAL_AMORTIZATION_FULL_INTEREST("loanReAgeInterestHandlingType.equalAmortizationFullInterest",
3636
"Equal Amortization of Outstanding full Interest"), //
37-
EQUAL_AMORTIZATION("loanReAgeInterestHandlingType.equalAmortization", "Equal Amortization of Outstanding amount"), //
38-
EQ_AMORTIZATION_P("loanReAgeInterestHandlingType.equalAmortizationPayable", "Equal Amortization of Payable amount"), //
3937
;
4038

4139
private final String code;

fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/delinquency/service/ProgressivePossibleNextRepaymentCalculationServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ public BigDecimal calculateInterestRecalculationFutureOutstandingValue(Loan loan
5858
}
5959
List<LoanRepaymentScheduleInstallment> repaymentScheduleInstallments = loan.getRepaymentScheduleInstallments();
6060
ProgressiveTransactionCtx ctx = new ProgressiveTransactionCtx(loan.getCurrency(), repaymentScheduleInstallments, Set.of(),
61-
new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), scheduleModel, loan.getReAgeInterestHandlingType());
61+
new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), scheduleModel,
62+
loan.getReAgeInterestHandlingType());
6263
ctx.setChargedOff(loan.isChargedOff());
6364
ctx.setWrittenOff(loan.isClosedWrittenOff());
6465
ctx.setContractTerminated(loan.isContractTermination());

fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/AdvancedPaymentScheduleTransactionProcessor.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1549,7 +1549,8 @@ private boolean shouldUseEmiCalculation(TransactionCtx transactionCtx, LocalDate
15491549
if (hasActiveReAmortization) {
15501550
return false;
15511551
} else {
1552-
return keepUsingEmiCalculatorBasedOnReAge(progressiveTransactionCtx) && !DateUtils.isAfter(transactionDate, progressiveTransactionCtx.getModel().getMaturityDate());
1552+
return keepUsingEmiCalculatorBasedOnReAge(progressiveTransactionCtx)
1553+
&& !DateUtils.isAfter(transactionDate, progressiveTransactionCtx.getModel().getMaturityDate());
15531554
}
15541555
}
15551556
// From now on we are defaulting to using the EMICalculator on all progressive loans. However currently the
@@ -2900,23 +2901,24 @@ private void handleReAge(LoanTransaction loanTransaction, TransactionCtx ctx) {
29002901
LoanReAgeParameter loanReAgeParameter = loanTransaction.getLoanReAgeParameter();
29012902

29022903
// TODO resolve from loanReAgeParameter
2903-
// Default non interest bearing
2904-
boolean skipDownPayments = false;
2905-
boolean onlyPayableInterest = false;
2906-
boolean isEqualInstallmentForInterest = false;
2907-
boolean isEqualInstallmentForFeesAndPenalties = false; // non interest bearing false
2904+
// Default non interest bearing
2905+
boolean skipDownPayments = false;
2906+
boolean onlyPayableInterest = false;
2907+
boolean isEqualInstallmentForInterest = false;
2908+
boolean isEqualInstallmentForFeesAndPenalties = false; // non interest bearing false
29082909
// TODO end of settings
29092910

29102911
if (loan.isInterestBearing()) {
2911-
if (((loanReAgeParameter.getInterestHandlingType() == null) || loanReAgeParameter.getInterestHandlingType().equals(LoanReAgeInterestHandlingType.DEFAULT))) {
2912+
if (((loanReAgeParameter.getInterestHandlingType() == null)
2913+
|| loanReAgeParameter.getInterestHandlingType().equals(LoanReAgeInterestHandlingType.DEFAULT))) {
29122914
// TODO default interest handling solution
2913-
} else
2914-
if (LoanReAgeInterestHandlingType.WAIVE_INTEREST.equals(loanReAgeParameter.getInterestHandlingType())) {
2915+
} else if (LoanReAgeInterestHandlingType.WAIVE_INTEREST.equals(loanReAgeParameter.getInterestHandlingType())) {
29152916
// TODO implementation goes here
29162917
} else {
2917-
if (LoanReAgeInterestHandlingType.EQUAL_AMORTIZATION.equals(loanReAgeParameter.getInterestHandlingType())) {
2918+
if (LoanReAgeInterestHandlingType.EQUAL_AMORTIZATION_FULL_INTEREST.equals(loanReAgeParameter.getInterestHandlingType())) {
29182919
// keep onlyPayableInterest = false;
2919-
} else if (LoanReAgeInterestHandlingType.EQ_AMORTIZATION_P.equals(loanReAgeParameter.getInterestHandlingType())) {
2920+
} else if (LoanReAgeInterestHandlingType.EQUAL_AMORTIZATION_PAYABLE_INTEREST
2921+
.equals(loanReAgeParameter.getInterestHandlingType())) {
29202922
onlyPayableInterest = true;
29212923
}
29222924
// common settings for EQUAL_AMORTIZATION

fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/transactionprocessor/impl/ProgressiveTransactionCtx.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,14 @@ public class ProgressiveTransactionCtx extends TransactionCtx {
5656
public ProgressiveTransactionCtx(MonetaryCurrency currency, List<LoanRepaymentScheduleInstallment> installments,
5757
Set<LoanCharge> charges, MoneyHolder overpaymentHolder, ChangedTransactionDetail changedTransactionDetail,
5858
ProgressiveLoanInterestScheduleModel model, LoanReAgeInterestHandlingType reAgeInterestHandlingType) {
59-
this(currency, installments, charges, overpaymentHolder, changedTransactionDetail, model, Money.zero(currency), reAgeInterestHandlingType);
59+
this(currency, installments, charges, overpaymentHolder, changedTransactionDetail, model, Money.zero(currency),
60+
reAgeInterestHandlingType);
6061
}
6162

6263
public ProgressiveTransactionCtx(MonetaryCurrency currency, List<LoanRepaymentScheduleInstallment> installments,
6364
Set<LoanCharge> charges, MoneyHolder overpaymentHolder, ChangedTransactionDetail changedTransactionDetail,
64-
ProgressiveLoanInterestScheduleModel model, Money sumOfInterestRefundAmount, LoanReAgeInterestHandlingType reAgeInterestHandlingType) {
65+
ProgressiveLoanInterestScheduleModel model, Money sumOfInterestRefundAmount,
66+
LoanReAgeInterestHandlingType reAgeInterestHandlingType) {
6567
super(currency, installments, charges, overpaymentHolder, changedTransactionDetail);
6668
this.sumOfInterestRefundAmount = sumOfInterestRefundAmount;
6769
this.model = model;

fineract-progressive-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/service/InterestScheduleModelRepositoryWrapperImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ public Optional<ProgressiveLoanInterestScheduleModel> getSavedModel(Loan loan, L
111111
savedModel = extractModel(progressiveLoanModel);
112112
if (savedModel.isPresent() && progressiveLoanModel.get().getBusinessDate().isBefore(businessDate)) {
113113
ProgressiveTransactionCtx ctx = new ProgressiveTransactionCtx(loan.getCurrency(), loan.getRepaymentScheduleInstallments(),
114-
Set.of(), new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), savedModel.get(), loan.getReAgeInterestHandlingType());
114+
Set.of(), new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), savedModel.get(),
115+
loan.getReAgeInterestHandlingType());
115116
ctx.setChargedOff(loan.isChargedOff());
116117
ctx.setWrittenOff(loan.isClosedWrittenOff());
117118
ctx.setContractTerminated(loan.isContractTermination());

fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/LoanWritePlatformServiceJpaRepositoryImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3051,7 +3051,7 @@ public void handleChargebackTransaction(final Loan loan, LoanTransaction chargeb
30513051
if (loan.isInterestBearing() && loan.isInterestRecalculationEnabled()) {
30523052
final List<LoanTransaction> transactions = loanTransactionService.retrieveListOfTransactionsForReprocessing(loan);
30533053
if (transactions.stream().filter(LoanTransaction::isNotReversed).filter(LoanTransaction::isReAge)
3054-
.anyMatch(lt->!lt.getTransactionDate().isAfter(lt.getLoan().getMaturityDate()))) {
3054+
.anyMatch(lt -> !lt.getTransactionDate().isAfter(lt.getLoan().getMaturityDate()))) {
30553055
final ScheduleGeneratorDTO scheduleGeneratorDTO = loanUtilService.buildScheduleGeneratorDTO(loan, null);
30563056
loanScheduleService.regenerateRepaymentSchedule(loan, scheduleGeneratorDTO);
30573057
}

fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/ReprocessLoanTransactionsServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,8 @@ public void processLatestTransaction(final LoanTransaction loanTransaction, fina
166166
.orElseGet(() -> advancedProcessor.calculateInterestScheduleModel(loan.getId(), loanTransaction.getTransactionDate()));
167167

168168
transactionCtx = new ProgressiveTransactionCtx(loan.getCurrency(), loan.getRepaymentScheduleInstallments(),
169-
loan.getActiveCharges(), new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), model, loan.getReAgeInterestHandlingType());
169+
loan.getActiveCharges(), new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail(), model,
170+
loan.getReAgeInterestHandlingType());
170171
} else {
171172
transactionCtx = new TransactionCtx(loan.getCurrency(), loan.getRepaymentScheduleInstallments(), loan.getActiveCharges(),
172173
new MoneyHolder(loan.getTotalOverpaidAsMoney()), new ChangedTransactionDetail());

fineract-provider/src/main/java/org/apache/fineract/portfolio/loanaccount/service/reaging/LoanReAgingServiceImpl.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@
5151
import org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType;
5252
import org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeInterestHandlingType;
5353
import org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter;
54-
import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.LoanRepaymentScheduleTransactionProcessor;
55-
import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.MoneyHolder;
56-
import org.apache.fineract.portfolio.loanaccount.domain.transactionprocessor.TransactionCtx;
5754
import org.apache.fineract.portfolio.loanaccount.exception.LoanTransactionNotFoundException;
5855
import org.apache.fineract.portfolio.loanaccount.serialization.LoanChargeValidator;
5956
import org.apache.fineract.portfolio.loanaccount.service.LoanAssembler;

0 commit comments

Comments
 (0)