Staff
Purpose and the two axes
HR ManagerHotel ManagerA staff record is the job; an account is the way in. They are linked, but neither implies the other.
Staff answers two different questions. Who works here, and when?: the Directory, Rota, Attendance and Leave tabs. Who can sign in, and what may they open?: the Accounts tab. As the screen puts it: “a staff record is the person's job, an account is their way in. Link the two from the directory when someone needs both.”
- A room attendant may have a staff record and no login (they use the shared front-desk PIN, or none at all).
- An outside accountant may have a login and no staff record, they are not on the rota.
- A receptionist has both: a record with job title “Receptionist” in Front Office, linked to an account whose role is Receptionist. The job title is free text; the role is the permission set. They do not have to match.
HR managers own the directory, rota, attendance and leave. Department heads with Staff Edit mark attendance and request leave for their teams. Administrators manage accounts and approve leave. Everything on this page emits live updates, so two HR screens never disagree.
Screen anatomy
Six KPI tiles, department chips and a directory table (with Cards and By department views) on the Directory tab; four more tabs for Rota, Attendance, Leave and Accounts.
- 1Page head“12 active people across 5 departments · 4 on duty right now”, plus a link “2 leave requests to decide” when the queue is not empty. Add staff on the right.
- 2Total staffActive records.
- 3On duty / Off duty / On leaveDerived right now. Click a tile to filter the grid by that duty status; click again to clear.
- 4Leave to decidePending requests. The Leave tab is where you act on them.
- 5AttendanceDays not marked absent over the last 30 days, hotel-wide.
- 6Department chips and directoryAll · Front Office · Housekeeping · …, then the table: Name, Job title, Department, Duty (hover for the reason), Phone, Hired, Attendance, Account. Tap a heading to sort, or its filter icon to narrow by that column. The Cards view shows one card per person with today's shift; By department groups the cards.
- 7Filter barSearch (name, code, job title, phone), Duty status, Job title. Narrows within the chosen department.
The tabs: Directory, Rota, Attendance, Leave, Accounts. Retired records are hidden from the directory and rota but can be restored from their drawer.
Adding, editing and retiring a staff record
HR ManagerAdd staff creates the record; the drawer edits it, links an account, and retires or restores it.
- 1Click Add staffThe dialog is titled “Add staff, A staff record. A sign-in account is optional and separate”.
- 2Full name, Job title, DepartmentName and job title need two characters or more; department is a dropdown of the hotel's departments. Phone is optional.
- 3Linked account (optional)A dropdown of active accounts not already linked to someone else, shown as “Name · Role”. Leave it at “No login” for staff who do not sign in.
- 4Click Add staffThe person gets an S-code and appears in the grid; the toast reads “Jane Doe added to the team”.
- 5Edit later from the cardClick a card to open the drawer. Name, job title, department, phone and Linked account are editable; Save writes them (“Staff record updated”). The right-hand column shows phone, email, hire date, today's shift and attendance.
- 6Retire recordRed button in the drawer → confirm “Retire record”. “They disappear from the directory and rota. You can restore the record later.” A retired record cannot be rostered, marked or booked on leave. Restore record brings it back.
Shift templates and the weekly rota
HR ManagerDefine the shifts once (Staff Full), then fill a staff × day grid one cell at a time.
Shift times
At the bottom of the Rota tab, Shift times lists the templates the rota can use, “Morning 07:00 – 15:00”, “Night 22:00 – 06:00”. With Staff Full you can rename a shift, retime it (hh:mm), or add one with the row at the bottom. “An end time at or before the start makes it an overnight shift” and gets an overnight tag. “Retiming a shift moves every rota entry already using it.” Start and end must differ. Without any templates, “every rota cell is empty”.
Filling the rota
- 1Pick the weekThe card head shows “Mon 7 Sep – Sun 13 Sep · one shift per person per day”. Use ‹ › to move a week, This week to come back. Today's column is highlighted.
- 2Choose a shift in each cellEvery cell is a dropdown: “, off” or a template “Morning · 07:00 – 15:00”. It saves on change and is written to the audit log as rota.assigned or rota.cleared.
- 3Find the gapsFilter Coverage → “Has unfilled days” to list only people with at least one empty cell this week; combine with Department.
Marking attendance
HR ManagerOne row per active person per day: Present / Late / Absent, clock in and out, and a note. Never for a future date.
- 1Pick the dateThe date box tops out at hotel-local today; the card head reads “7 of 12 marked for today · unmarked people read as off duty”.
- 2Click a status chipPresent, Late or Absent on the row. It saves immediately and is audited as attendance.recorded.
- 3Clock in / Clock outType hh:mm and leave the field. Typing a time on an unmarked row marks the person Present as well, because a record needs a status. A bad value shows “Enter the time as hh:mm, e.g. 07:30” and reverts.
- 4NoteFree text up to 200 characters (“doctor's appointment”), saved when you leave the box.
- 5Work down the unmarked listFilter Status → “Not yet marked” to see who is left. The Shift column shows the rostered window so you can judge Late.
Attendance % on the directory (per person and hotel-wide) is the share of marked days over the last 30 that are not Absent, Late counts as attended. People with no marks show “not marked yet”.
Leave: request, approve, reject, withdraw
HR ManagerHotel ManagerAnyone with Staff Edit can raise a request; only Staff Full decides it; withdrawing is for requests raised in error.
- 1Click Request leaveOn the Leave tab. The dialog says “Pending until someone with Staff full access decides”. Choose the Staff member, Type (Annual, Sick, Unpaid, Other), First day, Last day and an optional Reason.
- 2Submit requestThe request gets an LV-code, appears under Pending requests, and a blue alert “Leave request: Jane Doe” goes to the feed. A request that overlaps a pending or approved one for the same person is refused.
- 3Approve or Reject (Staff Full)Green Approve / red Reject on the pending row open a confirmation titled “Approve LV-…” or “Reject LV-…” with an optional Note “kept on the record”. Approving warns: “Approved leave outranks the rota: this person reads as On leave on every day in the range.” Rejecting: “the rota untouched. The request stays in history with your note.”
- 4Withdraw (Staff Edit)For requests raised in error. Confirm “Withdraw request”: the row “disappears from the approval queue and is filed as cancelled. … use Reject to turn one down.”
- 5HistoryDecided and withdrawn requests, newest first, with Decided by and the note. Filter by Status, Leave type and Department; search by code or name.
- Pending → Approved (Approve (Full))
- Pending → Rejected (Reject (Full))
- Pending → Cancelled (Withdraw (Edit))
Decided requests are final: there is no un-approve. If plans change, the person simply comes to work and is marked Present, attendance is checked after leave, so an approved day still reads as On leave; ask an administrator if that matters for records.
Duty status is derived
On duty, Off duty and On leave are never typed in, they are worked out live from leave, today's attendance and the rota.
The badge on every card is recomputed on each request, in this priority order. The first rule that applies wins, and the card's tooltip tells you which one it was.
- 1On leaveOn approved leave today
- 2Off dutyMarked absent on today's attendance sheet
- 3On dutyMarked present on today's attendance sheet, or marked late on today's attendance sheet
- 4On dutyInside a rostered shift right now (by the hotel's clock)
- 5Off dutyRostered today, but outside the shift window, or no shift on today's rota
- An attendance mark is an explicit statement about today and outranks the rota: someone marked Present at 06:50 is on duty even before their 07:00 shift starts.
- Overnight shifts work across midnight: a “Night 22:00 – 06:00” rostered for Monday shows the person on duty from 22:00 Monday until 06:00 Tuesday.
- Nobody on the rota today and no mark → Off duty with “No shift on today's rota”. This is why a brand-new hotel shows everyone off duty until the rota is filled.
- The KPI tiles and the page-head “on duty right now” use exactly the same rule, so they always agree with the cards.
Accounts: logins, roles, passwords, deactivation
HR ManagerSuper AdminCreate sign-in accounts, change a role, reset a password or deactivate. Admin-tier roles need Settings Full.
The Accounts tab lists every login with Name, Email, Role, Status (Active / Deactivated) and Last sign-in, with four counters (Accounts, Active, Deactivated, Roles in use) and filters for Role and Status. Your own row is tagged “you”.
- 1New accountDialog “New staff account, They sign in with this email and password”: Full name, Email, Temporary password (“min 8 chars, share it securely”), Role. Click Create account. The email must be unique in the hotel.
- 2Change a roleOpen the account and pick a new Role; it saves at once (“Role updated”) and takes effect on the person's next request. You cannot change your own role.
- 3Reset passwordType a new password (8+ characters) and click Set. The toast reads “Password reset. Existing sessions revoked”: the person is signed out everywhere.
- 4Deactivate accountConfirm “Deactivate account”: “They will be signed out immediately and will not be able to sign in until you reactivate the account.” Reactivate account reverses it. You cannot deactivate yourself.
- 5Link it to a personGo back to the Directory, open the staff record and choose the account under Linked account.
Fields
Staff record, shift template, leave request and account, what each form accepts.
| Field | Type | Notes |
|---|---|---|
| Full name * | text 2–80 | Searchable. |
| Job title * | text 2–80 | Free text; feeds the Job title filter. Not a permission. |
| Department * | select | One of the hotel's departments; drives the chips and rota/attendance filters. |
| Phone | text ≤ 30 | Optional. |
| Linked account | user | Active, not linked elsewhere. “No login” is fine. |
| Hire date | date | Shown as “Hired …” in the drawer when set; not on the forms. |
| Active | yes/no | Retire / Restore record. Retired people cannot be rostered, marked or booked on leave. |
| Field | Type | Notes |
|---|---|---|
| Name * | text 2–40 | “Morning”, “Night”. |
| Start · End * | hh:mm | Must differ. End at or before start = overnight. |
| Field | Type | Notes |
|---|---|---|
| Staff member * | select | Active records only. |
| Type * | enum | Annual / Sick / Unpaid / Other |
| First day · Last day * | date | Inclusive; days = last − first + 1. Last day may not precede first; at most 366 days. |
| Reason | text ≤ 300 | Optional, shown to the approver and in history. |
| Note (decision) | text ≤ 300 | Optional, typed by the approver; kept on the record with their name. |
| Field | Type | Notes |
|---|---|---|
| Full name * | text 2–80 | Shown in the top bar and audit log. |
| Email * | Sign-in identity; unique per hotel; stored lower-case. | |
| Password * | ≥ 8 chars | Temporary on creation; reset from the drawer. Never shown again. |
| Role * | select | The permission set. Admin-tier roles need Settings Full to grant. |
| Active | yes/no | Deactivate / Reactivate. Deactivating revokes every session. |
Permissions
Staff View reads everything; Edit runs the day-to-day; Full decides leave and defines shifts; Settings Full is needed for admin-tier accounts.
| Role | Staff | Settings |
|---|---|---|
| Super Admin | Full | Full |
| Hotel Manager | Full | Edit |
| Receptionist | None | None |
| Accountant | None | None |
| Housekeeping Mgr | Edit | None |
| Maintenance | None | None |
| Restaurant Mgr | View | None |
| HR Manager | Full | View |
| Security | View | None |
- Staff View: all five tabs read-only (drawers say “View-only access …”).
- Staff Edit: Add staff, edit / retire / restore records, fill the rota, mark attendance, Request leave, Withdraw; create accounts, change roles, reset passwords, deactivate and reactivate.
- Staff Full: additionally Approve / Reject leave and add or retime shift templates.
- Settings Full: required on top of Staff Edit to create, re-role or edit a Super Admin / Hotel Manager (admin-tier) account.
Defaults: HR Manager has Staff Full but Settings View, so HR can approve leave yet cannot touch admin accounts; Housekeeping Mgr has Staff Edit; Restaurant Mgr and Security can only look; Super Admin does everything.
Tips
Tiles as filters, the hotel clock, live updates and where the numbers come from.
- Tiles filter. Click On leave to see who is away today; it also resets the department chip because tiles count the whole hotel.
- Hotel time. “Today” for attendance, the rota and duty status is the hotel's own calendar day and clock, not your laptop's.
- Everything is live. Approving leave on one screen flips the person's badge on every other open Staff page within seconds.
- Start-of-day routine: Attendance tab → filter “Not yet marked” → chips down the list; then Directory to confirm “on duty right now” matches the floor.
- Pending queue. The page-head link “N leave requests to decide” jumps straight to the Leave tab.
- History is capped. The Leave tab shows the 200 most recent decided requests; pending ones always show in full.
Errors you may see
Every refusal from the staff and accounts endpoints, verbatim.
Records, rota, attendance
That account is already linked to a staff recordThat record is retired, restore it before rostering shiftsThat record is retired, restore it before recording attendanceAttendance cannot be recorded for a future dateStart and end time must differStaff record not foundShift template not foundLeave
End date must not precede start dateA single request cannot span more than a yearThat record is retired, restore it before booking leaveOverlaps LV-0042 (approved) for the same staff memberOverlaps already-approved LV-0042Only pending requests can be decided (this one is approved)Only pending requests can be cancelled (this one is rejected)Leave request not foundAccounts
Only a Super Admin can manage Hotel Manager accountsA user with that email already existsYou cannot deactivate or change the role of your own accountPassword must be at least 8 charactersRole not found- Staff record
- A person on the payroll: S-code, job title, department, rota and attendance. May have no login.
- Account
- A sign-in (email + password) with a role. May have no staff record.
- Duty status
- On duty / Off duty / On leave, derived live from leave, attendance and the rota; never stored.
- Shift template
- A named time window (e.g. Night 22:00 – 06:00) that rota cells reference. Retiming it retimes every cell.
- Admin tier
- Super Admin, Hotel Manager, or any role with Settings Full. Needs Settings Full to grant; never PIN sign-in.