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]

Reply via email to