Skip to content

P-07b · Staff: the Final approval Work page (stage-first layout) ​

SOP: Payroll_Processing.md §6 (final approval and export). This page describes how staff work Gate 3 on the console; the SOP is unchanged. Actors: Payroll Lead (gives it), Payroll Executive (waits). Pre-state: a payroll month in APPROVED (the client approved, or a Payroll Lead approved without them). Post-state: the final approval is recorded and the Infotech workbook is built in the same request (READY_FOR_EXPORT → EXPORTED); today's page takes over with the Infotech hand-off.

Since 31 Oct 2026 (branch feat/work-page-stage-first) a month at Final approval opens on the stage-first frame, the same page component as Validation (P-04b) and Client approval (P-09b). A failed export (READY_FOR_EXPORT) and every later stage keep today's page, which already retries the export. ?layout=classic shows today's page for any month. No server change.

What the page shows, top to bottom ​

  1. Header with the "Final approval" pill and when the month got here. This stage's job: "the last look before October's figures go to Infotech"; How this stage ends: a Payroll Lead who did not prepare the month approves; that builds the Infotech file; a later change to the figures voids it and asks the client again.
  2. The client's approval, one line: "Approved by Hafiz Rahman on 24 Oct, on their payroll link", or "Approved by Sarah Chen (Payroll Lead) on 10 Nov, without the client's approval: ‹reason›" (amber). Read from the month's Who did what.
  3. Bank accounts changed this month, when there are any: each person, the account ending, and whether a Lead checked it. Bank changes are where a payroll mistake or fraud most often hides, so they come first, with a tile.
  4. Open now tiles: bank changes, changes moving to next month (waiting on a document), final pay held, month-wide items.
  5. Employee list on Pay result: "What the client approved, and what goes to Infotech": the whole list, last month → this month, why, the total and what it leaves out. The Work view keeps every change of the month on its person.
  6. Needs attention (month-wide warnings, e.g. "G3 final approval pending"), Documents folded, Background (ask the client for something, settled attendance, closed warnings, cancel).
  7. Bottom bar: for an eligible Lead, "Look over the figures, then approve. This builds the Infotech file." and Approve & export…, which opens a confirm listing the total and people, who is left out, the bank changes, the client's approval, and that this builds the Infotech file. For a Lead who prepared the month, or while the export would refuse (unverified CPF rates, an open blocking issue…), the server's own reason. For an Executive: "Waiting for a Payroll Lead's final approval. Nothing to do here."

Added on 1 Nov 2026 (gap review) ​

  • Let through at validation: each pay movement a Lead accepted and each warning a Lead overrode, with who and why, on the page and in the confirm dialog ("Nothing was accepted or overridden at validation" when none).
  • The dialog's last line states the whole rule after the click: a document that arrives goes into next month unless a Payroll Lead brings it in; a change made to the figures voids the approval and asks the client again.
  • The Executive's bar names only the Leads who can give it (not one who prepared the month, unless all did).
  • The Executive is told when the Infotech file is made: a bell right after the export (final approval or regenerate), "The Infotech file is ready: download it and key it into Infotech, then upload Infotech's report." Before, the first word was the 02:00 sweep.

Manual test (seeded stage companies, built app) ​

CompanyWhoWhat you should see
Dev Stage 08 Final Approval DueLeadApprove & export… → confirm → the file is generated and today's page takes over.
Dev Stage 08 Final Approval DueExecutiveWaiting for a Payroll Lead; the button disabled.
Dev Exception 29 Lead Prepared The MonthLeadRefused: "You prepared this cycle…", naming who can.
Dev Exception 23 Link ApprovalLeadBen Koh's leaving moves to next month (a tile and his row), not a stopper.

Internal use only — BreezyCorp