Aman-Mittal opened a new issue, #785:
URL: https://github.com/apache/fineract-backoffice-ui/issues/785
## Summary
Group-lending field work needs two operations that this UI can't perform:
1. **Transfer clients between groups.** Moving a member to another group
(optionally carrying their loans and changing their officer) has no screen. The
only workaround is to remove the member and add them elsewhere, which loses the
group history and fails while the client has active group loans.
2. **Record meeting attendance.** Meetings can be created, edited and
deleted, and the list counts attendance already recorded, but attendance can't
be *entered*.
#180 and #181 listed both capabilities and are closed as completed, but
neither is reachable on `main`.
## Evidence (`main` @ `8da1086f`)
- `src/app/features/groups/group-view.component.ts` runs `activate`,
`close`, `assignStaff`, `unassignStaff`, `associateClients`,
`disassociateClients`, `assignRole` and `unassignRole` (`runCommand`, lines
~640–765). There is no `transferClients`.
- `src/app/features/meetings/meetings-list.component.ts:126` only *counts*
`clientsAttendance`.
- `api-surface.json` `MeetingsService` has GET / POST / PUT / DELETE on
meetings, but not the attendance command.
## Platform support
- **Transfer:** `POST /v1/groups/{groupId}?command=transferClients` with `{
destinationGroupId, clients: [{ id }], inheritDestinationGroupLoanOfficer,
transferActiveLoans, staffId }` (`GroupsApiResource`, line ~483).
- **Attendance:** `POST
/v1/{groups|centers}/{entityId}/meetings/{meetingId}?command=saveOrUpdateAttendance`
with `{ clientsAttendance: [{ clientId, attendanceType }] }`
(`MeetingsApiResource.updateMeetingAttendance`). The meeting template provides
`attendanceTypeOptions` (present, absent, approved leave, …).
## Proposed implementation
- **Group view → Transfer clients:** pick members, a destination group (same
office), and the loan-officer and active-loan options. Show the result and
refresh both groups.
- **Meeting row → Attendance:** list the group's or centre's members with an
attendance-type select each, defaulted from what is already saved, plus a "mark
all present" shortcut.
## RBAC
| Action | Permission code | Typically granted to |
|---|---|---|
| View group / meetings | `READ_GROUP` / `READ_CENTER`, `READ_MEETING` |
field staff, supervisors, auditors |
| Transfer clients between groups | `TRANSFERCLIENTS_GROUP` | branch manager
/ field supervisor |
| Record attendance | `SAVEORUPDATEATTENDANCE_MEETING` | field / loan
officer running the meeting |
All codes are in `scripts/permission-codes.json`.
- Writes pass with the exact code **or** `ALL_FUNCTIONS`. With maker-checker
on, a transfer is queued for `TRANSFERCLIENTS_GROUP_CHECKER`.
- Transferring clients with their active loans changes portfolio ownership,
so keep it on its own code and don't fold it into `UPDATE_GROUP`.
### UI expectations
- Gate the **Transfer clients** and **Attendance** buttons with
`[appRequiresPermission]`, and guard any new routes with `permissionGuard`.
- Read-only users can see attendance but can't edit it.
## Acceptance criteria
- [ ] Clients can be transferred to another group, with the loan and officer
options honoured. Both groups' member lists and the client's group update.
- [ ] Attendance can be recorded and edited for a group or centre meeting,
and the list's attendance count reflects it.
- [ ] Both actions are gated on their codes.
- [ ] Unit tests cover the payloads and the gating.
--
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]