[
https://issues.apache.org/jira/browse/FINERACT-2914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18126036#comment-18126036
]
Abhishek Chaudhary commented on FINERACT-2914:
----------------------------------------------
[~adamsaghy] can you assign this ticket also to me pls, thanks!
> Execute Standing Instruction job fails or skips months when the recurrence
> day is 29-31
> ---------------------------------------------------------------------------------------
>
> Key: FINERACT-2914
> URL: https://issues.apache.org/jira/browse/FINERACT-2914
> Project: Apache Fineract
> Issue Type: Bug
> Components: Job Scheduler, Savings
> Affects Versions: 1.15.0
> Reporter: Abhishek Chaudhary
> Priority: Blocker
> Fix For: 1.16.0
>
>
> {{ExecuteStandingInstructionsTasklet}} works out the first due date of a
> monthly or yearly standing instruction with
> {{validFrom.withDayOfMonth(recurrenceOnDay)}}. The API accepts any
> {{recurrenceOnMonthDay}} (it is only checked for not null), so this goes
> wrong in two ways.
> # *The job fails for all instructions.* If {{validFrom}} falls in a month
> shorter than the recurrence day, {{withDayOfMonth}} throws
> {{DateTimeException}} (for example {{Invalid date 'APRIL 31'}} for day 31
> starting in April, or {{Invalid date 'FEBRUARY 30'}}). The exception is not
> caught, so the job fails and the remaining instructions are not processed.
> {{validFrom}} does not change, so the job fails on every run while the
> instruction is active.
> # *Shorter months are skipped silently.* The due check compares
> {{start.plusMonths(MONTHS.between(start, today))}} with today.
> {{MONTHS.between}} truncates, so a monthly instruction on the 31st never
> matches on Feb 28/29, Apr 30, Jun 30, Sep 30 or Nov 30. It runs only 7 times
> a year. A yearly instruction on 29 February runs only in leap years. No error
> is logged.
> *Expected:* when the month is shorter than the recurrence day, the
> instruction runs on the last day of that month, the way savings charges do
> ({{SavingsAccountCharge}} clamps {{feeOnDay}} to the month length). One
> instruction must not stop the job for the others.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)