mariiaKraievska commented on code in PR #4919: URL: https://github.com/apache/fineract/pull/4919#discussion_r2251137151
########## fineract-doc/src/docs/en/chapters/features/capitalized-income.adoc: ########## @@ -0,0 +1,501 @@ += Capitalized Income in Apache Fineract + +== Overview + +Capitalized Income (formerly referred to as Origination Fee) in Apache Fineract is a fee-based or interest-based income item that is added to the principal of a loan and amortized over time. It is designed to be applied at disbursement and is treated as part of the loan's principal for repayment and interest calculations. + +== Purpose + +This functionality enables financial institutions to: + +* Recognize deferred income (fees or interest) systematically over the loan term +* Align accounting practices with regulatory requirements +* Improve income recognition accuracy + +== Supported Loan Type + +[IMPORTANT] +==== +Capitalized Income is only supported for: + +* Progressive Loan Schedules +* Advanced Payment Allocation Strategy + +Other loan schedule types and transaction processing strategies are not supported. +==== + +== Configuration at Loan Product Level + +Capitalized income must be configured on the loan product. + +The configuration options include: + +* *Enable Capitalized Income*: Boolean toggle (default: disabled) +* *Calculation Mode*: Only "Flat" is currently supported +** Later "Percentage based" can be introduced +* *Amortization Strategy*: Only "EQUAL_AMORTIZATION" is supported +*** Daily equal portions are recognized over the life of the loan +*** Later other strategies can be introduced +* *Income Type*: Specifies allocation rule. Defines which "balance category" to be used. + +[NOTE] +==== +In Fineract, balance of a transaction is either: Principal, Fee, Penalty, Interest or overpayment +==== + +Options: +* FEE (default) +* INTEREST + +=== GL Mapping + +Required GL Account mappings when Capitalized Income is enabled: + +* *Deferred Income (Liability)*: `deferredIncomeLiabilityAccountId` - mandatory when enabled +* *Income from Capitalization (Income)*: `incomeFromCapitalizationAccountId` - mandatory when enabled + +[IMPORTANT] +==== +Both GL accounts become mandatory when `enableIncomeCapitalization` is set to `true`. +==== + +=== Configuration Dependencies + +When `enableIncomeCapitalization` is set to `true`, all following parameters become mandatory: + +* `capitalizedIncomeCalculationType` - must be "FLAT" +* `capitalizedIncomeStrategy` - must be "EQUAL_AMORTIZATION" +* `capitalizedIncomeType` - must be "FEE" or "INTEREST" +* `deferredIncomeLiabilityAccountId` - must reference a valid GL account +* `incomeFromCapitalizationAccountId` - must reference a valid GL account + +== Behavior and Calculations + +* Capitalized income is added via API on or after the first disbursement date +* It is treated as a principal portion, recalculating the repayment schedule accordingly +* Interest and amortization schedules are updated to include the capitalized income amount +* Validated to ensure that (Disbursement + Capitalized Income) ≤ Approved Loan Amount Review Comment: I noticed this validation rule description might be a bit simplified compared to the actual implementation. Looking at the code, the validation logic is actually: `(Total Disbursed + Capitalized Income + New Transaction Amount) ≤ Max Amount` Where Max Amount depends on loan product configuration: - If `allowApprovedDisbursedAmountsOverApplied` is true: uses `getOverAppliedMax(loan)` - Otherwise: uses `getApprovedPrincipal()` Perhaps we could update the documentation to reflect these details? -- 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]
