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

   ## Summary
   
   The client detail view offers **Undo Rejection** on a rejected client and 
**Undo Withdrawal** on a withdrawn one. Neither can ever succeed. Both post a 
command name Fineract does not accept, so the platform rejects the request 
before it looks at anything else.
   
   `src/app/features/clients/client-view.component.ts` passes the menu's own 
identifiers straight through as the command:
   
   ```ts
   (click)="onClientAction('undoReject')"
   (click)="onClientAction('undoWithdraw')"
   ```
   
   Probed against a running instance:
   
   ```
   POST /clients/2?command=undoReject
   → 400  "The query parameter command has an unsupported value of: undoReject"
   
   POST /clients/2?command=undoWithdraw
   → 400  "The query parameter command has an unsupported value of: 
undoWithdraw"
   ```
   
   The names the platform recognises are `UndoRejection` and `UndoWithdrawal`. 
With those, the same request body is accepted and only the domain rule is left 
to apply:
   
   ```
   POST /clients/2?command=UndoRejection   
{"locale","dateFormat","reopenedDate"}
   → 403  "only rejected clients may be reactivated."       ← the client under 
test was Active
   ```
   
   That 403 is the *correct* refusal for an active client, and it confirms the 
payload — `reopenedDate` — is already right. Only the command name is wrong. 
Command matching is case-insensitive, so `undorejection` works equally well; 
`undoReject` is not a near-miss but a different word.
   
   ## Business Value
   
   Rejecting a client application is a one-way door today. Rejection is often a 
data-entry mistake — the wrong applicant picked from a search result, a KYC 
document misread — and the whole point of the undo command is to correct it 
without discarding the record.
   
   Because the failure happens at the platform, the user sees a generic error 
after filling in the dialog and picking a date, with nothing to suggest the 
action is simply unavailable. The practical workaround is to create a duplicate 
client, which leaves the institution with two records for one person and a 
rejected shell that reporting still counts.
   
   ## Fix
   
   Map the two menu identifiers to the platform command names when posting. The 
payload, the dialog and the permission checks all stay as they are.
   
   ## How to verify
   
   The bug reproduces only against a real backend — a mocked spec asserting the 
current string would pass. Reject a client, then use **Undo Rejection** and 
confirm the client returns to Pending.
   


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