fineract
fineract copied to clipboard
FINERACT-1783: Customizeable LoanRepaymentScheduleTransactionProcessor
Currently Fineract supports 6 loan transaction processing strategies:
- standard
- heavens family
- early payment
- creocore
- Indian RBI
- principal/interest/penalty/fees order (default)
The strategy is loaded/instantiated via a factory class "LoanRepaymentScheduleTransactionProcessor" and it's only method "determineProcessor" by passing a "LoanTransactionProcessingStrategy" object. "LoanTransactionProcessingStrategy" is effectively treated like an enum (only its "code" attribute is used). The other attributes "LoanTransactionProcessingStrategy" seem to be only for display purposes in a UI.
Proposed improvements:
- remove hardcoded instantiations of processors
- remove "LoanTransactionProcessingStrategy" and avoid storing this information in the database (table "ref_loan_transaction_processing_strategy") in the first place. This would also remove some unnecessary constraints/joins to this table.
- use dependency injection to make loan transaction processing customizable
- provide possibility to list all available processors for display in a UI