devi pathak created FINERACT-2552:
-------------------------------------

             Summary: Potential NullPointerException in flat EMI calculation 
when no previous repayment period exists
                 Key: FINERACT-2552
                 URL: https://issues.apache.org/jira/browse/FINERACT-2552
             Project: Apache Fineract
          Issue Type: Bug
          Components: Loan
            Reporter: devi pathak


h3. Description

While analyzing the flat interest EMI recalculation logic in 
{{{}ProgressiveEMICalculator{}}}, a potential NullPointerException was 
identified in {{{}calculateEMIOnActualModelWithFlatInterestMethod{}}}.
h3. Problem

In scenarios where recalculation starts from the first repayment period, 
{{firstRepaymentPeriod.getPrevious()}} can return empty. This results in 
{{alreadyRepaidPrincipals}} being assigned {{{}null{}}}, which is later used in 
a subtraction operation:

{{.minus(alreadyRepaidPrincipals)}}

This can lead to a runtime NullPointerException during EMI calculation.
h3. Steps to Reproduce
 # Use flat interest method

 # Trigger recalculation starting from the first repayment period (e.g., during 
disbursement)

 # Observe potential failure due to null subtraction

h3. Expected Behavior

The calculation should safely handle cases where no previous repayment period 
exists.
h3. Actual Behavior

A null value is used in arithmetic operation, leading to potential runtime 
failure.
h3. Solution

Replace null fallback with a zero-value Money instance using the same currency 
context:

{{.orElse(Money.zero(currency))}}
h3. Impact
 * Improves robustness of EMI calculation

 * Prevents runtime exceptions in valid execution paths

 * No change in business logic

h3. Additional Notes

A unit test has been added to validate this scenario and ensure no regression.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to