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]