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]

Reply via email to