# Hours Reporting When you hire a vendor, an invoice eventually tells you what the work actually cost. Your own staff don't invoice you — so without something in its place, in-house labor stays frozen at whatever you estimated, and your margin is a guess. Hours Reporting is that something. You commit a number of hours to a staff member on a budget line, they log their time against it, and when they're finished PAI rewrites the line to what was actually worked. Same discipline PAI applies to every other cost: be explicit about what you committed, record what really happened, and see the difference. **What it protects:** the accuracy of your in-house cost, and therefore the margin on internal labor. **What it tells you:** how much of a person's committed time has been used, how much is left, and once they're done, whether the job came in over or under what you booked for it. --- ## The Flow 1. An in-house expense line in the budget is assigned to a staff member and **Posted**. 2. The line appears in that person's **Log Hours** widget on HQ, and on the project's **Log Hours** page. 3. They log their time in dated blocks, as many times as they need. 4. When the work is done, they **Mark as Complete**. 5. The line's internal cost actualizes to the hours logged, and its status moves to **Approved**. Hours Reporting applies to **In-House** lines on an **Hours** unit only. Day and Flat in-house lines aren't reported against. > [!note] > This is not the same mechanism as vendor [Timecards](../05-Vendors-and-Payments/Timecards.md). A vendor enters a start time, an end time, and breaks, and PAI calculates overtime against Min Hours. A staff member draws down against a fixed allowance of hours — no start and end times, no overtime calculation. --- ## Setting Up the Assignment Hours Reporting starts in the budget. On an in-house expense line, set: - **Assigned To** — the staff member who will report the hours - **Dates** — the date range the work covers, for example Apr 1 – Apr 15 - **Unit Qty** — the hours you're committing, which becomes the person's allowance - **Rate** — populated automatically if the staff member has a rate for that item on their staff rate card, or set directly as a custom rate on the line. See [Staff Rates](../01-Organization-Setup/Staff-Rates.md) Then move the line through the same statuses as any other expense: **Draft**, **Confirmed**, **Posted** (see [Expense Statuses](./Working-with-the-Budget.md#expense-statuses)). Posting is what opens reporting — it's the point where the commitment becomes real and the assignee can act on it. For out-of-pocket lines, posting sends the expense to a vendor's portal; for in-house lines, it surfaces the expense in the assignee's HQ. A staff member can hold several in-house lines on the same project — different roles, different items — and reports on each one separately. The allowance belongs to the expense line, not to the person or the project. --- ## Logging Hours The assignee finds their posted assignments in the **Log Hours** widget on [HQ](../00-Understanding-PAI/Navigating-PAI.md#the-dashboard). Each assignment appears as a card showing the item name, the project, and a progress bar of hours logged against the allowance. Toggle between **Open** and **Completed** to see active assignments or closed ones, and search by name when the list gets long. Clicking **Log Hours** on a card opens the reporting modal. It confirms which **Project**, **User**, and **Expense** you're reporting against, then shows the allowance as a progress bar with two figures beneath it: - **Total Hours** — the hours logged so far - **Remaining Hours** — what's left of the allowance Below that, every block logged to date is listed by date with its hours. ### Adding blocks Click **Add Block** to create an entry. Each block needs a date and an hours value. The date defaults to today, and each additional block in the same session steps forward to the next consecutive day — so entering a stretch of days is a matter of clicking Add Block repeatedly and typing the hours. Add as many blocks as you need and submit them together; the trash icon removes a block before you submit. Block dates aren't restricted to the line's date range. If the work slipped, log it on the day it actually happened. The **Timecard Heatmap** widget on HQ plots every block you've logged across the year, so you can check your own reporting history without opening each assignment. Hovering a day shows the hours logged, broken out by project when there's more than one. > [!warning] > Logging more hours than the allowance is permitted. The progress bar turns red to flag it, but PAI won't stop the submission. ### Hours, not dollars The reporting modal deals only in hours — the allowance, what's been logged, and what remains. No rate, subtotal, or total appears in it for anyone, including users who hold [View Staff Rates](../01-Organization-Setup/Users-and-Permissions.md#view-staff-rates). The financial side of the line lives on the budget. --- ## Reporting on Someone's Behalf Hours don't have to come from the assignee. From the budget, **right-click** the expense line, or **hover its hours progress bar**, to open the same reporting modal and log blocks for them. This is also how you inspect reporting in progress — the modal is the full record of what's been logged and when. Useful when a staff member isn't set up to log in, or when someone reports their time to you by other means and you're entering it on their behalf. --- ## The Log Hours Page If you'd rather not work through the budget grid at all, every project carries a dedicated **Log Hours** page. Access it via **Log Hours** in the project's left navigation. It lists every open in-house expense line on the project that's been posted on an Hours unit — nothing else. Each appears as a card showing the item, a progress bar of hours logged against hours committed, the line's subtotal, and a **Log Hours** button that opens the same reporting modal used everywhere else. Expect repetition. What multiplies into separate expense lines is the estimate line item's **QTY** — and each line keeps the item's full **Unit Qty** in hours. A Producer at QTY 2 with a Unit Qty of 10 hours generates two Producer expense lines of ten hours each, so you see two cards, each with its own ten-hour allowance. The hours aren't divided between them, and each card is reported against independently. ### Grouping the page The page is a PAI table, so the usual view controls apply — see [Working with Tables](../00-Understanding-PAI/Navigating-PAI.md#working-with-tables). It groups by **Assignee** by default, with a total shown for each person's cards. Two other groupings are available: - **Item** — gathers cards by role, which is the readable way through a project where one item repeats across many lines - **Progress** — sorts cards into four bands by how much of the allowance has been logged: 0–25%, 25–50%, 50–75%, and 75–100%. The quickest way to find assignments nobody has reported against yet, or ones close to using up their hours > [!note] > Unlike the reporting modal, this page shows money — a subtotal on each card and a total on each group. Those figures are gated by [View Staff Rates](../01-Organization-Setup/Users-and-Permissions.md#view-staff-rates), exactly as in-house internal values are on the budget: without the permission the hours and progress still read normally and the money is hidden. The page also sits inside the project, so a Staff Resource never reaches it at all and reports entirely from HQ. --- ## Marking Complete **Mark as Complete** is a checkbox at the bottom of the reporting modal. Checking it and submitting closes reporting on that assignment. You can mark an assignment complete without logging anything at all — if the work never happened, completing it at zero hours is the honest outcome. Completing an assignment does two things: 1. **Closes reporting.** The line stops accepting blocks and moves to the **Completed** tab of the Log Hours widget, where the assignee can still see it. 2. **Actualizes the line.** The expense line's internal value is rewritten to the hours actually logged, and its status moves to **Approved** — the end of the lifecycle for an in-house line. ### Why the value doesn't move until then While reporting is open, the budget holds the line at its full committed value — logged hours move the progress bar, not the money. Work in progress isn't work finished, so PAI holds the full commitment until the assignee says they're done. ### Example You assign John 10 hours at $100/hour — a $1,000 line — and post it. | | Hours logged | Line value | Diff | |---|---|---|---| | Posted | 0 | $1,000 | — | | John logs 5 hours | 5 | $1,000 | — | | John marks it complete | 5 | $500 | $500 | The $500 diff is the point. You booked $1,000 of internal cost against this job and spent $500 of it, and that recovered cost lands in your margin. --- ## Reopening an Assignment An assignment isn't permanently closed. From the budget, move the line's status back to: - **Posted** — reopens reporting; the assignee can log again - **Confirmed** or **Draft** — unposts the line entirely, removing it from the assignee's HQ > [!note] > There's no review or approval step between a staff member marking their hours complete and the line actualizing — completion is the assignee's call, and correcting it means reverting the status. This is looser than vendor invoicing, where every line is reviewed in AP. See [Accounts Payable](../05-Vendors-and-Payments/Accounts-Payable.md) for the comparison. --- ## Who Can Report Hours Any workspace user assigned to a posted in-house line reports hours the same way — the Log Hours widget appears on their HQ alongside everything else. For people who only need to report time and have no other business in the app, create them as a **Staff Resource** rather than a Workspace User. A Staff Resource can be assigned to projects, expenses, and call sheets, and can optionally be invited to log in for the sole purpose of reporting hours. Their entire view of PAI is HQ with the Log Hours widget on it — no projects, no budgets, no settings. See [Users and Permissions](../01-Organization-Setup/Users-and-Permissions.md#adding-users). --- ## Tracking Reported Hours On the budget, each in-house line carries its hours progress inline, so reporting status reads at a glance without opening anything. In [Live Margins](../06-Financial-Visibility/Live-Margins.md) and [Project Finance](../06-Financial-Visibility/Project-Finance.md), the **In-House Totals** box carries the project's hours alongside its financial figures — and completing an assignment moves those financials, since the line's internal cost changes. Note what those hours measure, though: **Hours Estimated**, **Hours Assigned**, and **Hours Remaining** describe how much of the estimated time has a person attached to it, not how much has been reported. Reported hours live on the expense line and in the reporting modal. Read the totals box for staffing coverage, and the line for reporting progress. Both surfaces respect the View Staff Rates gate. Without the permission you still see hours, assignments, dates, and whether a line is over or under on time; the internal rate, internal total, and margin stay behind an eye-slash. You can run the logistics of internal work without seeing what it costs the organization.