Staff — Common cases
"One person appears as two rows in Weekly Planner"
Not allowed — planner dedupes to one person = one row. If two rows appear, check:
- Does the person have
enterpriseUserId? If yes → dedupe byenterpriseUserId. - Missing
enterpriseUserId→ dedupe byemployeeId. - Is the
employeeIdof the selected BU kept as the canonical resource id?
A person missing both identities is allowed to be a separate row (per
INV-ROSTER-WP-001 v3).
Real-world example: One staff member works in two BUs, and Weekly Planner shows two rows for the same person. → Keep one row per person so scheduling is not confusing. → Dedupe by
enterpriseUserId(or the selected BU'semployeeId) → merge into one row.
"Scheduling a shift while staff is on leave"
The Create/Edit Shift popup shows read-only Leave when leave overlaps the shift interval. If the warning is missing although leave exists:
- Check whether evaluation uses a time interval (not just same date). Leave
09:00–11:00and shift10:30–12:00overlap → must show. - This field also applies to Timesheet rows and Timesheet exports.
Real-world example: A manager schedules
10:30–12:00for someone on leave09:00–11:00. → Warn so the shift is not assigned during leave. → Evaluate by interval overlap → show read-onlyLeavein the popup.
"Leave form shows Shift tracking codes"
Wrong — leave form (create/edit/approve) must only show codes with TypeId = Leave. If Shift codes appear in the leave selector → filter is wrong. Shift codes must be excluded.
Real-world example: While approving leave, the tracking-code selector also shows Shift codes. → Only allow codes valid for leave. → Filter
TypeId = Leaveand remove Shift codes from create/edit/approve forms.
"Time slots display out of order"
Availability time slots must be sorted by ascending start time inside each weekday column, regardless of API order. Example: 5:00 AM–9:30 AM must appear before 2:30 PM–6:30 PM. Sort must not move a slot to another day. Edit Time Slot popup templates also sort by start time.
"Timetable has two date-navigation control sets"
Page /staff/timetable must have one date/view control set. The Syncfusion ScheduleComponent header is the source of truth for prev/next/today + view switch. If a second set appears (custom date-range selector above) → it is redundant and should be removed; range label must match the rendered grid.
"Roster shows unapproved absence"
Weekly Planner only shows approved absence (approved-only). Pending absence does not appear on planner.
Real-world example: A staff member just submitted leave, and the manager already sees "leave" on Weekly Planner. → Reflect only approved leave so rostering is reliable. → Pending absence stays off planner; it appears only after approval.
"+New Leave or Add Leave?"
Correct wording is +New Leave. If you see Add Leave, it is old and should be changed. The button opens the current create-leave drawer.
"Leave drawer is cramped/hard to use on small screens"
Drawer uses a compact-wide layout: Start/End Date in one row, Start/End Time in one row when the viewport is wide enough. Narrow viewport → paired controls collapse without overlapping text/label/input/action.