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 2025/10/29 13:00:29 UTC

(fineract) 03/37: FINERACT-2389: Fix related installment query

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

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

commit ffa1a974a22a7e0b81acbb6c3918e96de189bc5b
Author: Adam Saghy <ad...@gmail.com>
AuthorDate: Thu Oct 16 19:00:12 2025 +0200

    FINERACT-2389: Fix related installment query
---
 .../java/org/apache/fineract/portfolio/loanaccount/domain/Loan.java  | 4 +++-
 .../loanaccount/domain/LoanRepaymentScheduleInstallment.java         | 5 +++++
 2 files changed, 8 insertions(+), 1 deletion(-)

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 03b1794faf..0054f3de3e 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
@@ -1411,7 +1411,9 @@ public class Loan extends AbstractAuditableWithUTCDateTimeCustom<Long> {
      * @return a schedule installment is related to the provided date
      **/
     public LoanRepaymentScheduleInstallment getRelatedRepaymentScheduleInstallment(LocalDate date) {
-        return getRepaymentScheduleInstallment(e -> DateUtils.isDateInRangeFromExclusiveToInclusive(date, e.getFromDate(), e.getDueDate()));
+        return getRepaymentScheduleInstallment(
+                e -> (e.isFirstNormalInstallment() && DateUtils.isDateInRangeInclusive(date, e.getFromDate(), e.getDueDate()))
+                        || DateUtils.isDateInRangeFromExclusiveToInclusive(date, e.getFromDate(), e.getDueDate()));
     }
 
     public LoanRepaymentScheduleInstallment fetchRepaymentScheduleInstallment(final Integer installmentNumber) {
diff --git a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
index 94d6dd3151..52e8dd8982 100644
--- a/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
+++ b/fineract-loan/src/main/java/org/apache/fineract/portfolio/loanaccount/domain/LoanRepaymentScheduleInstallment.java
@@ -1215,4 +1215,9 @@ public class LoanRepaymentScheduleInstallment extends AbstractAuditableWithUTCDa
         }
         return value.setScale(6, MoneyHelper.getRoundingMode());
     }
+
+    public boolean isFirstNormalInstallment() {
+        return loan.getRepaymentScheduleInstallments().stream().filter(rp -> !rp.isDownPayment()).findFirst().stream()
+                .anyMatch(rp -> rp.equals(this));
+    }
 }