Victor Romero created FINERACT-2818:
---------------------------------------

             Summary: Quarterly and half-year posting skip an equal period-end 
date
                 Key: FINERACT-2818
                 URL: https://issues.apache.org/jira/browse/FINERACT-2818
             Project: Apache Fineract
          Issue Type: Bug
            Reporter: Victor Romero


Reported by Khamit

Quarterly and half-year posting skip an equal period-end date

 

Hello Fineract developers,

I reproduced a standard savings posting calendar defect on develop 
e4474a0f4a4c65a75e7758e47db1fd277e5fcfef. SavingsHelper.java is identical in 
tag 1.15.0.

Call SavingsHelper.determineInterestPostingPeriods with start=upTo=2025-03-31, 
QUATERLY, financialYearBeginningMonth=1 and an empty manual-posting list. The 
returned first interval ends 2025-06-30 instead of 2025-03-31. Under normal 
next-day posting, the first posting is therefore scheduled for July 1 instead 
of April 1. BIANNUAL with start=2025-06-30 similarly skips to December 31.

Both branches compare their boundary with strict isAfter. Accepting equality 
fixes the boundary selection. The final interval intentionally extending beyond 
upTo is not the issue here; the nearest valid boundary is skipped only for an 
equal start date.

The native suite has 435 cases (all fiscal start months, leap/common years, 
boundary neighbors and daily/monthly/annual controls). The original source 
fails precisely the 144 equality cases. The production SavingsAccount calls 
this helper with a calculation start that normally falls back to activation 
date. I have not run an HTTP/database account reproduction or measured customer 
loss.

I prepared a minimal patch, the native JUnit suite, input/output vectors and 
logs. The scoped duplicate search found related anniversary-date issues but no 
exact match. Could you create or point me to the appropriate Jira issue for a 
PR?

The correction passes all 435 new tests and all nine existing anniversary 
tests. Spotless and Checkstyle main/test checks pass.

Attachments: a detailed report with reproduction commands, a source-only patch, 
a patch including the native JUnit tests, and JSON test vectors.

Regards,
Khamit



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

Reply via email to