You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by ad...@apache.org on 2026/07/20 09:20:38 UTC
(fineract) 01/01: Merge pull request #6111
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
commit d6797a0ab1c5e476a79bdf29ddfde88f9801af51
Merge: d6c7df9f23 6504a2da19
Author: Adam Saghy <ad...@gmail.com>
AuthorDate: Mon Jul 20 11:20:30 2026 +0200
Merge pull request #6111
FINERACT-2455: working capital charges after maturity
.../WorkingCapitalLoanChargeAfterMaturity.feature | 295 ++++++++++++
...gCapitalLoanGoodwillCreditBackdatedUndo.feature | 4 +-
.../calc/ProjectedAmortizationScheduleModel.java | 12 +
.../WorkingCapitalLoanLifecycleStateMachine.java | 34 +-
.../WorkingCapitalLoanChargeDataValidator.java | 25 +
...gCapitalLoanChargeWritePlatformServiceImpl.java | 149 +++++-
.../WorkingCapitalLoanTransactionProcessor.java | 2 +-
...WorkingCapitalLoanWritePlatformServiceImpl.java | 5 +-
.../helpers/FeignWorkingCapitalLoanHelper.java | 5 +
...nWorkingCapitalLoanChargeAfterMaturityTest.java | 502 +++++++++++++++++++++
...orkingCapitalLoanPaymentAllocationRuleTest.java | 5 +-
11 files changed, 1007 insertions(+), 31 deletions(-)
diff --cc fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanWritePlatformServiceImpl.java
index 6c662d794b,4762569054..99d17b1548
--- a/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanWritePlatformServiceImpl.java
+++ b/fineract-working-capital-loan/src/main/java/org/apache/fineract/portfolio/workingcapitalloan/service/WorkingCapitalLoanWritePlatformServiceImpl.java
@@@ -588,10 -586,9 +588,11 @@@ public class WorkingCapitalLoanWritePla
amortizationScheduleWriteService.applyDiscountFeeAdjustment(loan);
updateBalanceForDiscountChange(loan, amount, true);
+ // The principal change moves the remaining-balance cap, so the delinquency schedule must be re-derived.
+ delinquencyRangeScheduleService.reprocessDelinquencySchedule(loan);
- stateMachine.determineAndTransition(loan, transactionDate);
+ final List<WorkingCapitalLoanCharge> activeCharges = chargeRepository.findByLoanIdAndActiveTrueOrderByDueDateAscIdAsc(loan.getId());
+ stateMachine.determineAndTransition(loan, transactionDate, activeCharges);
transactionProcessor.triggerInlineAmortizationIfLoanClosed(loan, transactionDate);
changes.put("status", loan.getLoanStatus());