Conversation
rhopman
marked this pull request as draft
September 17, 2026 06:47
rhopman
force-pushed
the
FINERACT-2836-isolate-due-savings-charge-failures
branch
from
September 17, 2026 07:38
edcb278 to
c409580
Compare
rhopman
marked this pull request as ready for review
September 17, 2026 07:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Pay Due Savings Charges job previously processed all due charges in one shared transaction. If one account had insufficient funds, the job failed and rolled back successful collections for unrelated accounts. Recurring charges also collected all overdue installments in a single transaction, so failure on a later installment rolled back earlier affordable installments.
This change processes at most one due installment per independent transaction. The job repeatedly invokes the transactional service to collect recurring installments from oldest to newest, stopping that charge on the first failure while continuing to process other due charges. Successfully collected installments remain committed, and failures are recorded with the charge, account, and installment due-date context before the job reports the overall failure.
Tests cover mixed funded and insufficient-balance accounts, installment-level transaction isolation, partial catch-up of recurring charges, continued processing of unrelated charges, successful balance and charge updates, all-success behavior, and prevention of duplicate collection on rerun.
Checklist
Please make sure these boxes are checked before submitting your pull request - thanks!
Your assigned reviewer(s) will follow our guidelines for code reviews.