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

   ## Summary
   
   Three of the twelve client commands Fineract exposes have no route into the 
UI: `assignStaff`, `unassignStaff` and `updateSavingsAccount`. A search across 
`src/app` outside the generated client finds `assignStaff` only in 
`group-view.component.ts` and `group-staff-dialog.component.ts` — groups can be 
assigned an officer, the clients inside them cannot.
   
   ## Business Value
   
   **Staff assignment** is how a client gets a named field officer. That link 
drives caseload reporting, collection-sheet generation and the day-to-day 
question of who is responsible for visiting a member. Today it can be set when 
the client record is first created and never changed from the detail view, so a 
staff departure or a book reassignment cannot be recorded — the client stays 
attached to whoever was chosen at onboarding, and the collection sheet keeps 
routing them to an officer who may have left.
   
   **The default savings account** is the account the platform uses when a 
client-level operation needs a destination — notably disbursing a loan to 
savings. Loan disbursement-to-savings already exists in the loan view and 
depends on that link being present, so a client with no default savings account 
hits a refusal on a screen that gives no hint about where the missing setting 
lives.
   
   ## Verified command contracts
   
   Probed against a local Fineract instance:
   
   | Command | Body | Notes |
   |---|---|---|
   | `assignStaff` | `{staffId}` | response echoes `changes: {staffId}` |
   | `unassignStaff` | `{staffId}` | **`staffId` is mandatory here too** |
   | `updateSavingsAccount` | `{savingsAccountId}` | 404 `"Savings account with 
identifier N does not exist"` if unknown |
   
   Two traps, both confirmed by a 400 response:
   
   - **All three reject `locale` and `dateFormat`** — `{"The parameter locale 
is not supported.", "The parameter dateFormat is not supported."}`. None of 
them takes a date, so none can reuse a date-bearing action dialog.
   - **`unassignStaff` requires `staffId`**, unlike the loan equivalent which 
needs no body. Sending `{}` returns 400 `"The parameter \`staffId\` is 
mandatory."`, so the currently-assigned id has to be read off the client and 
passed back.
   
   Staff choices come from `GET /clients/{id}?template=true`, which returns 
`staffOptions` already scoped to the client's office hierarchy — no extra 
request and no client-side office filtering. Savings accounts come from `GET 
/clients/{id}/accounts`.
   
   Permission codes: `ASSIGNSTAFF_CLIENT`, `UNASSIGNSTAFF_CLIENT`, 
`UPDATESAVINGSACCOUNT_CLIENT`.
   
   ## Suggested implementation
   
   Menu items gated on permission, with unassign shown only when a staff member 
is currently assigned. New components go through the adapter boundary per 
ADR-0003.
   


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