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]