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]

Reply via email to