pwargulak opened a new pull request, #6580: URL: https://github.com/apache/fineract/pull/6580
## Description [FINERACT-2897](https://issues.apache.org/jira/browse/FINERACT-2897) Customising how a payment is distributed across allocation buckets currently means copying `AdvancedPaymentScheduleTransactionProcessor` whole. One example is limiting how much of an in-advance payment a given charge may absorb. `processPaymentAllocation`, where the amount for a bucket is decided, is `private` and called from about fifteen places in the class. `LoanTransactionProcessingServiceImpl`, `ReprocessLoanTransactionsServiceImpl`, `ProgressiveLoanScheduleGenerator` and `ProgressiveLoanInterestRefundServiceImpl` check `instanceof AdvancedPaymentScheduleTransactionProcessor`, so a replacement has to extend the class. But it cannot redirect those calls. This change makes `processPaymentAllocation` `protected`, and also its `Balances` parameter type, without which a subclass cannot declare the override. A subclass can then change the amount offered to a bucket and delegate to `super`. Every caller already subtracts the returned portion from what remains unprocessed, so whatever is withheld moves on to the next allocation type or installment, or ends as overpayment. No test is added. The change only alters access modifiers. A subclass in another package that overrides the method and calls `super` was compiled against it to confirm the override is possible. ## Checklist - [x] Write the commit message as per [our guidelines](https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#pull-requests) - [x] 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](https://fineract.apache.org/docs/current/#_testing) for verifying the changes made. (access modifiers only; existing `fineract-progressive-loan` tests pass) - [x] Follow our [coding conventions](https://cwiki.apache.org/confluence/display/FINERACT/Coding+Conventions). - [x] 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 (no API change) - [x] [This PR must not be a "code dump"](https://cwiki.apache.org/confluence/display/FINERACT/Pull+Request+Size+Limit). Large changes can be made in a branch, with assistance. Ask for help on the [developer mailing list](https://fineract.apache.org/#contribute). - [x] If merging this PR resolves a JIRA issue, I will mark that issue as resolved and set "Fix Version/s" appropriately. - [x] I followed the [AI Policy](https://github.com/apache/fineract/blob/develop/CONTRIBUTING.md#ai-policy). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
