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]

Reply via email to