Aman-Mittal opened a new issue, #192:
URL: https://github.com/apache/fineract-backoffice-ui/issues/192

   ## Summary
   
   Interest recalculation cannot be configured on the loan product form. 
`isInterestRecalculationEnabled`
   is set to a hardcoded `false` in the create defaults and read back on edit, 
but there is no control
   for it and none of its dependent settings exist in the form at all.
   
   Four further product settings are also unexposed: `chargeOffBehaviour`,
   `enableAccrualActivityPosting`, `fixedLength` and `repaymentStartDateType`.
   
   ## Business value
   
   **A product created here can never use interest recalculation, and one that 
does is quietly at
   risk when edited.**
   
   - **Declining-balance products cannot be created properly.** Interest 
recalculation is what makes
     interest respond to what the borrower actually owes on the day, rather 
than to the original
     schedule. Without it, every product created in this application charges 
interest on the planned
     balance regardless of early or late payment. For an institution offering 
early-settlement
     benefits, that is the difference between the product it sells and the 
product the system runs.
   - **The setting is write-once and unreachable.** Creating a product always 
sends `false`. Editing
     reads the existing value back, so a product configured elsewhere keeps its 
setting — but only by
     accident, and nothing in the form lets anyone see or change it.
   - **Charge-off behaviour is not selectable.** `chargeOffBehaviour` decides 
what happens to interest
     when a loan is charged off — carry on as normal, stop accruing, or bring 
the maturity forward.
     That is an accounting-policy decision the institution cannot express here.
   - **Accrual activity posting, fixed-length terms and the repayment start 
date rule** are likewise
     unavailable.
   
   ## The conditional rules are documented, unusually
   
   `POST /loanproducts` states them explicitly, which most of this API does not:
   
   > Additional Mandatory Fields if interest recalculation is enabled(true):
   > `interestRecalculationCompoundingMethod`, `rescheduleStrategyMethod`,
   > `recalculationRestFrequencyType`
   >
   > Additional Optional Fields if interest recalculation is enabled(true):
   > `isArrearsBasedOnOriginalSchedule`, `preClosureInterestCalculationStrategy`
   >
   > … if `recalculationRestFrequencyType` is not same as repayment period:
   > `recalculationRestFrequencyInterval`
   >
   > … if `interestRecalculationCompoundingMethod` is enabled: 
`recalculationCompoundingFrequencyType`
   >
   > … and if that is not same as repayment period: 
`recalculationCompoundingFrequencyInterval`
   
   The form should follow that chain rather than showing every field at once: 
the mandatory three
   appear with the toggle, and each further field appears only when the setting 
it depends on calls
   for it.
   
   ## A correction to carry with this
   
   #191 added the capitalised income and buy-down option lists as local 
constants, with a comment
   saying the product template does not return them. **That was wrong.** The 
template returns
   `capitalizedIncomeTypeOptions`, `capitalizedIncomeCalculationTypeOptions`,
   `capitalizedIncomeStrategyOptions` and the three `buyDownFee*Options`, along 
with every option
   list this issue needs — `rescheduleStrategyTypeOptions`,
   `preClosureInterestCalculationStrategyOptions`, 
`repaymentStartDateTypeOptions`,
   `chargeOffBehaviourOptions`, `interestRecalculationCompoundingTypeOptions` 
and
   `interestRecalculationFrequencyTypeOptions`.
   
   Those constants should be replaced with the template's lists, so labels come 
from the server and a
   value added upstream appears without a code change.
   
   ## Scope
   
   - Interest recalculation toggle and its dependent fields, following the 
documented rule chain.
   - `chargeOffBehaviour`, `enableAccrualActivityPosting`, `fixedLength`, 
`repaymentStartDateType`.
   - Replace the local option constants from #191 with the template's lists.
   - Carry every new field through `loadProductData`, which rebuilds the 
payload field by field.
   
   ## Comprehensibility for non-specialists
   
   "Compounding method", "rest frequency", "reschedule strategy" and 
"pre-closure interest
   calculation" are specialist terms that mean little without context. Each 
needs help text saying
   what the institution is choosing and what the borrower experiences, 
consistent with #187, #189
   and #191.
   
   ## Acceptance criteria
   
   - [ ] Interest recalculation is settable, and its mandatory fields appear 
with it.
   - [ ] The conditionally-optional fields appear only when their condition 
holds.
   - [ ] Turning it off clears the whole group rather than leaving values in 
the payload.
   - [ ] The four remaining settings are selectable, driven by the template's 
option lists.
   - [ ] The local option constants from #191 are gone.
   - [ ] Existing values load on edit and survive a save round trip.
   - [ ] Unit tests cover the rule chain and the clearing; a mocked Playwright 
spec asserts the
         submitted payload; the recorded demo shows recalculation being 
configured.
   - [ ] Every new control carries help text that reads sensibly to a 
non-specialist.
   


-- 
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