Skip to content

FINERACT-2836: Isolate Due Savings Charge Failures - #6460

Open
rhopman wants to merge 1 commit into
apache:developfrom
symbaglobal:FINERACT-2836-isolate-due-savings-charge-failures
Open

rhopman wants to merge 1 commit into
apache:developfrom
symbaglobal:FINERACT-2836-isolate-due-savings-charge-failures

Conversation

@rhopman

@rhopman rhopman commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

The Pay Due Savings Charges job processes each due savings-charge installment in an independent transaction. Recurring installments are collected in chronological order, with each successful payment committed before the next installment is attempted. This preserves affordable payments even when the account cannot fund every overdue installment.

Insufficient balance is treated as an expected unpaid outcome rather than a job failure. The job stops processing further installments for that recurring charge, logs a warning with charge, account, and installment context, records the unpaid installment in the persisted Spring Batch write-skip count, and continues processing other eligible charges. If insufficient balance is the only issue, the job completes successfully.

Validation, persistence, configuration, and unexpected exceptions remain fatal. They are collected with charge, account, installment due-date, and failure context before the job reports the execution as failed.

Tests cover installment-level transaction isolation, partial collection of recurring charges, mixed funded and insufficiently funded accounts, continued processing of unrelated charges, durable unpaid-installment counting, successful balance and charge updates, fatal error handling, all-success behavior, and prevention of duplicate collection on rerun.

Checklist

Please make sure these boxes are checked before submitting your pull request - thanks!

  • Write the commit message as per our guidelines
  • Acknowledge that we will not review PRs that are not passing the build ("green") - it is your responsibility to get a proposed PR to pass the build, not primarily the project's maintainers.
  • Create/update unit or integration tests for verifying the changes made.
  • Follow our coding conventions.
  • Add required Swagger annotation and update API documentation at fineract-provider/src/main/resources/static/legacy-docs/apiLive.htm with details of any API changes
  • This PR must not be a "code dump". Large changes can be made in a branch, with assistance. Ask for help on the developer mailing list.
  • If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately.
  • I followed the AI Policy.

Your assigned reviewer(s) will follow our guidelines for code reviews.

@rhopman
rhopman marked this pull request as draft September 17, 2026 06:47
@rhopman
rhopman force-pushed the FINERACT-2836-isolate-due-savings-charge-failures branch from edcb278 to c409580 Compare September 17, 2026 07:38
@rhopman
rhopman marked this pull request as ready for review September 17, 2026 07:41
@rhopman
rhopman marked this pull request as draft September 19, 2026 10:18
@rhopman
rhopman force-pushed the FINERACT-2836-isolate-due-savings-charge-failures branch from c409580 to bac1e2b Compare September 19, 2026 11:06
@rhopman
rhopman marked this pull request as ready for review September 19, 2026 11:08
@rhopman
rhopman force-pushed the FINERACT-2836-isolate-due-savings-charge-failures branch from bac1e2b to 6b07f79 Compare September 21, 2026 13:56
@rhopman

rhopman commented Sep 21, 2026

Copy link
Copy Markdown
Contributor Author

@adamsaghy could you please kick off the build again? I think it should be fixed now. Thanks!

@rhopman
rhopman force-pushed the FINERACT-2836-isolate-due-savings-charge-failures branch from 6b07f79 to 4b4dd23 Compare September 22, 2026 07:45
@rhopman
rhopman force-pushed the FINERACT-2836-isolate-due-savings-charge-failures branch from 4b4dd23 to c23158f Compare September 22, 2026 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant