Aman-Mittal opened a new pull request, #195:
URL: https://github.com/apache/fineract-backoffice-ui/pull/195

   Closes #194.
   
   Twelve Fineract loan commands had no UI at all. The account screen offered 
repayment, approval,
   disbursement, waive interest, prepay, foreclosure, close and write-off — and 
nothing else.
   
   | Command | Offered when |
   |---|---|
   | `charge-off` | active, not already charged off |
   | `undo-charge-off` | charged off |
   | `merchantIssuedRefund`, `payoutRefund`, `goodwillCredit` | active |
   | `downPayment` | active, progressive **and** the product enabled down 
payments |
   | `interestPaymentWaiver`, `reAge`, `reAmortize` | active, progressive |
   | `creditBalanceRefund` | overpaid |
   | `recoverypayment`, `undowriteoff` | written off |
   
   Charge-off is the one the application had already committed to: #193 made 
charge-off *behaviour*
   configurable on the product, and it changed nothing, because no loan could 
reach the state where it
   applies.
   
   ### Contracts probed, not inferred
   
   The generated client documents almost none of this, so I checked each 
against a running Fineract
   before building anything — the lesson from #193, where a control shipped 
that the server rejected.
   
   - **`undo-charge-off` takes an empty body** and rejects the `locale` and 
`dateFormat` every other
     command sends (*"The parameter locale is not supported"*). It therefore 
cannot go through the
     shared transaction form, and is a confirmation with a direct call.
   - **The transaction *template* endpoint accepts fewer commands than the 
transaction endpoint.**
     `reAmortize` and `undowriteoff` are rejected there with *"unsupported 
value"* even though the
     POST works, so the form no longer asks for a template it cannot get.
   - **Fineract states the gating itself.** Re-amortize answers *"only 
available for progressive
     repayment schedule and Advanced payment allocation strategy"*; 
undo-write-off answers *"loan
     status is not written off"*. Each action is offered only where it is 
legal, so the menu never
     invites a rejection.
   
   ### A charged-off loan looked healthy
   
   Fineract keeps it `Active` and flags it separately, so the status badge 
alone cannot tell them
   apart — an officer would see a normal active loan. The screen now shows a 
marker and swaps the
   action for its reversal instead of offering both.
   
   ### `chargeRefund` is deliberately not here
   
   It rejects `transactionDate` and refunds one *specific* charge. It belongs 
on the Charges tab
   against a charge, not in the account-level actions menu, and putting it in 
this menu would mean
   inventing a charge picker for it. That is the one remaining command from the 
thirteen.
   
   ### Verification
   
   | Check | Result |
   |---|---|
   | Unit tests | **741 passing** (735 → 741) |
   | Mocked Playwright | **210/210 passing** |
   | Backend Playwright | **17/18** — see below |
   | `tsc` (app + spec), build, lint, format, i18n, icons, licence | all clean |
   
   The backend spec exercises charge-off, its reversal, and a refund-style 
command end to end against
   real Fineract. I checked it actually guards the contract rather than merely 
exercising it: making
   the undo send `locale`/`dateFormat` fails the test.
   
   **On the one backend failure** — `loan-schedule-type.spec.ts` intermittently 
fails waiting for the
   product-template select. It is **pre-existing and not from this branch**: 
with these changes the
   spec passes 4/4 in isolation, and on a stashed tree (i.e. main) it fails. It 
appears to be timing
   sensitive and is aggravated by accumulated state from repeated local runs 
against one database. I
   have not tried to fix it here; it wants its own look.
   
   Two icons (`gift-outline`, `return-down-back-outline`) were unregistered and 
would have rendered as
   blank space — the icon check caught them before review.
   


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