fineract icon indicating copy to clipboard operation
fineract copied to clipboard

FINERACT-1783: Customizeable LoanRepaymentScheduleTransactionProcessor

Open vidakovic opened this issue 3 years ago • 0 comments

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

vidakovic avatar Oct 25 '22 22:10 vidakovic