P-08b · Staff: after the export, on one Work page (stage-first layout)
SOP:
Payroll_Processing.md§6 / Step 7.0 (post-payroll evidence and close). This page describes how staff work the stages after the export on the console; the SOP is unchanged. The steps themselves are in P-08 and P-11. Actors: Payroll Executive, Payroll Lead. Pre-state: a payroll month inEXPORTED,OUTPUT_IMPORTED,FINALIZED,CPF_PENDINGorCLOSED. Post-state: archived (today's page shows an archived month).
Since 31 Oct 2026 (branch feat/work-page-stage-first) the stages after the Payroll Lead's final approval share one stage-first page. A failed export (READY_FOR_EXPORT), an archived and a cancelled month keep today's page; ?layout=classic shows today's page for any month. No server change.
Nine stages on the stepper
The stepper (the progress rail, on every page) shows nine stages, as the PM's spec has nine steps: Opened · Inputs · Validation (was "Checks" until 1 Nov 2026) · Client approval · Final approval & export · With Infotech · Payslips · CPF filing · Payment & close. Three of the month's own stages are moments, not places anyone waits, so the stepper shows them inside their stage: the export is built in the same click as the final approval; the tie-out runs by itself once Infotech's report is read (it shows inside With Infotech); Closed is where the month ends (inside Payment & close). The month's statuses and its pill are unchanged. A cancelled month's last step reads "Cancelled".
What the page shows, top to bottom
- Header with the stage (With Infotech, Payslips, CPF filing, Payment & close), and its job in one line.
- What is left this month: the task list, first. Each task is today's hand-off step with its actions: download the export and the pack, upload Infotech's report, the tie-out (release a difference: a Payroll Lead), Tell the client Infotech's final figures, the payslip copy and the payment date, the CPF receipt, the bank confirmation, the IR21 acknowledgement. The current task is open, with "Current · waiting 7 days · due 14 Nov", amber inside the deadline's escalation buffer, red once missed; later tasks show their due date; done tasks are one line, with their corrections under Change or replace…. The dates are the month's statutory deadlines (pay by, payslip issue, CPF filing by the 14th, IR21), the same as the details page shows.
- At Payment & close, before approval: What is being paid, Infotech's totals from the tie-out (employees, net, gross, CPF, payment date).
- Open now tiles: a change to decide that arrived after the export, someone for a Lead, final pay held, month-wide items.
- Employee list on Pay result: what went to Infotech. When Infotech's report disagrees about someone, their row says so in red ("Infotech: sent to Infotech but is not in its report") and comes first. A letter that arrived after the export opens the Work view on that person.
- Needs attention without the tie-out warnings (the task list's tie-out step shows them), Documents folded, Background.
- Bottom bar: the server's next step in a few words, pointing at the task list. The button does it where it is one action: Sign off CPF (a Lead), Approve the payment… (a Lead; a confirm names any withheld final pay), Regenerate export, Attach the bank's confirmation (takes you to the step). When there are two ways on (a failed tie-out: a corrected report, or a Lead's release) the bar only explains. An Executive at a Lead's step reads "Waiting for a Payroll Lead: …".
When the month stops taking input (1 Nov 2026)
The month freezes at the Payroll Lead's final approval. Before it, a late change is checked again and, once the client has seen the figures, re-asked (P-04b, P-09b). From the final approval on, the figures are on their way to Infotech:
- A document that arrives after it (by chat, email, the link, or a staff upload) is kept as evidence and is not read into the month. The Payroll Leads and the month's preparers are emailed, the month shows a card Arrived after the final approval: it goes into November, and it becomes a correction card on next month when that month opens (at once if it is already open), with a note to pay any arrears. Infotech's own report coming back is never treated as one.
- The client's link takes no more typed changes for the month: October 2026 has gone to payroll, so it takes no more changes. Anything new goes into November 2026…
- A Payroll Lead may bring an urgent one in (an unreported leaver, a wrong bank account): Bring into October… on the card, with a reason (kept on the record). It is read into the month, the export goes out of date, and the month is re-exported, keyed into Infotech and tied out again, as before.
- A finalized month stays locked as before.
Only final approvals given from 31 Oct 2026 freeze a month; a month approved earlier keeps the old rule (late documents taken in until it is finalized), so nothing already in flight changes under it. Server: packages/agent-runtime/src/modules/pay-month-freeze.ts; route POST /ops/payroll/files/:fileId/bring-into-month (Payroll Lead, Admin, Platform admin).
Added on 1 Nov 2026 (gap review)
- The payment dialog shows what is being paid (employees, net, gross, CPF, payment date: the same rows as the summary card) and the message the client is told, in the sender's own words (shared from
@breezycorp/display).
The month's details page
"View full cycle details →" (/dashboard/payroll/<month>) stays as the month's read-only record: what was sent, the tie-out, the statutory deadlines, lodged changes, open issues. Its open issues now read in plain words (the code on hover; "Who clears it": Payroll Executive or Payroll Lead).
Manual test (seeded stage companies, built app)
| Company | Stage | What you should see |
|---|---|---|
| Dev Exception 24 Prior Month At Infotech | With Infotech, a letter after the export | Overdue since 7 Oct in red; Regenerate export. |
| Dev Exception 08 Infotech Missing Employee | With Infotech, tie-out failed | Faiz's row first, "Infotech: sent to Infotech but is not in its report"; the release in the task list. |
| Dev Exception 25 Prior Month Finalised Later | Payslips | Upload the payslips; due date. |
| Dev Stage 11 CPF Sign Off Due | CPF filing | Lead: Sign off CPF → Payment & close. Executive: waiting for a Lead. |
| Dev Exception 27 Leaver Held At Payment | Payment & close | What is being paid; Approve the payment… names Chen Xin Yi's withheld pay. |
| Dev Stage 13 Closed | Payment & close (closed) | Attach the bank's confirmation; the evidence pack. |