Aman-Mittal opened a new issue, #194:
URL: https://github.com/apache/fineract-backoffice-ui/issues/194
## Summary
There is no way to charge off a loan in this application, or to undo one.
The loan account screen
offers repayment, approval, disbursement, waive interest, prepay,
foreclosure, close and write-off
— but not charge-off — and nothing shows whether a loan has already been
charged off.
This is the first slice of the loan-servicing gap: thirteen Fineract loan
commands have no UI at
all (`downPayment`, `chargeoff`, `reAge`, `reAmortize`,
`creditBalanceRefund`,
`merchantIssuedRefund`, `payoutRefund`, `goodwillCredit`, `chargeRefund`,
`recoverypayment`,
`undowriteoff`, `interestPaymentWaiver`). Charge-off is first because it is
the one the
application has already committed to.
## Business value
**#193 made charge-off behaviour configurable on the product, and it
currently changes nothing.**
That setting decides what happens to interest once a loan is charged off —
carry on as normal,
stop accruing, or bring maturity forward. A product can now be configured
with it, but no loan can
ever reach the state where it applies. The setting is inert until this
exists.
Beyond closing that loop:
- **Charge-off is an accounting event, not a collections one.** Writing a
loan off says the
institution has given up recovering it; charging it off moves the balance
out of performing
assets for reporting while collection continues. They are different
decisions with different
accounting treatment, and only one of them is available here. An
institution that needs
charge-off has to do it outside this application, which breaks the audit
trail the rest of the
screen maintains.
- **A charged-off loan is indistinguishable from a healthy one.** Fineract
keeps the loan `Active`
and flags it with `chargedOff`. The account screen reads neither, so an
officer looking at a
charged-off loan sees a normal active loan and can act on it as though
nothing had happened.
- **Charge-off is reversible and the reversal is unavailable too.** Fineract
supports
`undo-charge-off`; without it, a charge-off entered in error can only be
corrected outside the
application.
## Verified contract
Probed against a running Fineract rather than inferred from the generated
client, which documents
neither:
| | |
|---|---|
| Charge off | `POST /loans/{id}/transactions?command=charge-off` with
`{transactionDate, dateFormat, locale}` |
| Undo | `POST /loans/{id}/transactions?command=undo-charge-off` with
**`{}`** |
| Reason | optional; `chargeOffReasonOptions` comes from `GET
/loans/{id}/transactions/template?command=charge-off` and is empty unless code
values are configured |
| State | loan stays `Active`; `chargedOff` becomes `true` |
The empty body for the undo matters: sending `locale` or `dateFormat` is
rejected with *"The
parameter locale is not supported"*. It cannot go through the shared
transaction form, which sends
both.
## Scope
- Charge-off action on the loan account screen, with an optional reason from
the template.
- Undo charge-off, as a confirmation rather than a form, given the
empty-body contract.
- Both gated on the loan's actual state: charge-off only when active and not
already charged off,
undo only when it is.
- Show that a loan is charged off, so the state is visible before anyone
acts on it.
## Comprehensibility for non-specialists
Charge-off and write-off sound interchangeable and are not. The action needs
help text drawing the
distinction in business terms — charge-off moves the balance for reporting
while collection
continues; write-off is giving up on recovery — so nobody reaches for the
wrong one.
## Acceptance criteria
- [ ] An active loan can be charged off, with an optional reason.
- [ ] A charged-off loan shows that it is, and offers undo instead of
charge-off.
- [ ] Undo sends an empty body and restores the loan.
- [ ] Unit tests cover the state gating; a mocked Playwright spec covers the
flow; a **backend**
test exercises the real commands, rather than relying on the demo.
- [ ] Help text distinguishes charge-off from write-off.
--
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]