Job Costing
1. Overview
Section titled “1. Overview”The Job Costing module tracks the complete financial lifecycle of projects — from initial contract and cost estimates through expense posting, billing, and closeout. It integrates with Accounts Receivable (invoices and payments), Inventory (material picks and allocations), and the General Ledger (cost postings and contract distributions).
Key capabilities include:
- Job management — track projects from contract through close, with customer and site linking
- Contracts and change orders — maintain original contract value and approved change orders
- Cost estimates — budget by cost category (material, labor, subcontractors, other)
- Expense posting — post individual labor, material, subcontractor, and other expenses
- Material posting — bulk-post material usage with inventory allocation
- Actual vs. Estimate (AvE) — compare budgeted and actual costs at any point
- Job close — finalize accounting and GL distributions at project completion
2. Key Concepts
Section titled “2. Key Concepts”-
Job — A project tracked from contract through completion. Each job is linked to a customer and site, has a type that controls available cost entry types, and accumulates costs against estimates. Jobs can be open (active) or closed (finalized). Example: Job J-1050, “HVAC Installation — Greenfield Construction, Building C.”
-
Job Contract & Change Orders — The original contract establishes the agreed revenue for the job. Change orders add or subtract from the total contract value as scope changes occur. The Total Contract Amount = Original Contract + All Approved Change Orders.
-
Cost Estimate — A budget for the job broken down by cost category (Electrical, Mechanical, etc.) and cost type (Material, Labor, Subs, Other). Estimates are set per contract/change order and provide the baseline for Actual vs. Estimate comparisons.
-
Job Cost Entry — An individual expense posted to a job. Each entry has a cost type (Labor, Material, Subs, or Other), an amount, and optional overhead. Labor entries include hours; material entries include quantity. These accumulate as the job’s actual cost.
-
Overhead / Burden — Indirect costs applied as a percentage of direct costs. Each Job Cost Category has overhead factors (Material Factor, Labor Factor, Subs Factor). When a $1,000 labor expense is posted to a category with a 15% Labor Factor, the application calculates $150 in overhead. Burden % on the job applies to all labor costs.
-
WIP (Work in Progress) — Jobs flagged as “WIP Reportable” are included in work-in-progress financial reporting. WIP compares earned revenue against costs incurred to determine over/under billing positions — critical for construction accounting.
-
CPI (Cost Performance Index) — Budgeted Cost of Work Performed (BCWP) ÷ Actual Cost, where BCWP = Percent Complete × Estimated Cost. A CPI of 1.0 means the job is exactly on budget. Above 1.0 = under budget (good). Below 1.0 = over budget (investigate). The CPI is displayed on the per-job metrics dashboard with color coding: green (≥ 1.0), yellow (0.9–1.0), red (< 0.9).
3. How It Connects
Section titled “3. How It Connects”Upstream — Where Job Costing gets its data:
- CRM → A proposal can use Conversion Type = Job, which structures the proposal’s line items for job work, but jobs are created manually in Job Costing → Manage Jobs (the Create Job form). There is no automatic job creation that pre-populates customer, site, or estimated values from an approved proposal.
- Payroll (Timesheets) → Timesheet entries allocated to a job create labor cost entries when synced to payroll
- Accounts Payable → Vendor invoice lines distributed to a job create subcontractor or material cost entries
- Inventory → Material picks and allocations for a job create material cost entries; inventory is drawn from warehouse locations
Downstream — Where Job Costing sends its data:
- Accounts Receivable → Job invoicing creates AR invoices linked to the job. Invoice amounts appear in the Billing & Collections section of the job dashboard.
- General Ledger → Job expense postings create GL entries (debit expense accounts, credit cost accounts). Job close creates final GL distributions to the contract closing account.
- Reports → Job profitability, WIP, and Actual vs. Estimate reports read directly from job cost data.
Key Integration Point — Actual vs. Estimate: Every expense posted to a job is compared against the cost estimate on the per-job dashboard. This real-time comparison drives CPI, forecast final cost, and margin erosion/growth metrics. When a vendor invoice from FastPipe Supply is distributed to Job J-1050 in AP, the material expense immediately appears in the job’s Actual vs. Estimate comparison, updating the CPI and forecast.
4. Job Cost Dashboard
Section titled “4. Job Cost Dashboard”Navigation: Job Costing → Dashboard (the screen header reads “Job Cost Dashboard”)
The dashboard provides cross-job analysis with six charts, each with a date range filter (Start Date / End Date).
| Chart | Type | Description |
|---|---|---|
| Expenses by Cost Type | Bar chart | Total expense dollars grouped by job cost entry type (the named entry types such as “Direct Labor” or “Materials”), not the four Labor/Material/Subs/Other buckets. Y-axis formatted as currency. Zoom and navigator enabled. |
| Expenses by Job Type | Bar chart | Total expense dollars grouped by job type. Hover tooltip shows the full job type name. Zoom and navigator enabled. |
| AvE by Job Type | Grouped bar chart | Actual vs. Estimate cost comparison by job type. Two bars per job type: Actual and Estimate. Y-axis in dollars. Zoom and navigator enabled. |
| Labor Productivity (Hours) by Job Type | Grouped bar chart | Actual vs. estimated labor hours by job type. Y-axis in hours (2 decimal places). Zoom and navigator enabled. |
| Gross Margin by Job Type | Grouped bar chart | Actual vs. estimated gross margin percentage by job type. Y-axis as percentage (2 decimal places). Zoom and navigator enabled. |
| Contract Totals | Dual-axis bar chart | Dollar amounts and counts of job contracts by bucket (All, Contract, Change Order). Left axis: amount ($); right axis: count. |
5. Jobs
Section titled “5. Jobs”Navigation: Job Costing → Manage Jobs
Search Jobs
Section titled “Search Jobs”The search screen lists all jobs with the following columns:
| Column | Description |
|---|---|
| Job ID | The system job code (humanId) |
| Project | Project name |
| Customer | Customer name |
| Contract Date | Date the contract was signed |
| Start Date | Job start date |
| End Date | Job end date |
| Address | Customer site address |
| Actions | Edit and Delete buttons per row |
- Type in Search for a Job to filter results in real time (elastic search).
- Click any row to open the job’s View screen in a new tab.
- Click the Edit icon to edit the job (requires update permission).
- Click the Delete icon to delete the job after confirmation (requires delete permission).
- Click the + icon in the column header to create a new job (requires create permission).
Create / Edit Job
Section titled “Create / Edit Job”| Field | Required | Description |
|---|---|---|
| Customer | Yes | The customer associated with this job |
| Site | Yes | The customer site address where work is performed. After selecting, the full address is displayed below. |
| Job ID | No | Unique job identifier. Optional and manually entered on create (must be unique if provided); read-only on edit. |
| Project Name | No | Descriptive project name |
| Job Type | Yes | The job type classification (controls which cost entry types are available and GL accounts) |
| Start Date | No | Planned start date |
| End Date | No | Planned end date |
| Customer Purchase Order Number | No | The customer’s PO number referencing this job |
| Commission | No | Commission dollar amount (default $0.00) |
| Retention | No | Retainage percentage held back from invoices, entered as a percent (default 0%). The View screen displays this as “Retention %”. |
| Burden | No | Labor burden percentage applied to labor costs; entered as a percent (default 0%) |
| Certified | No | Checkbox — marks the job as certified payroll |
| WIP Reportable | No | Checkbox — includes this job in Work-in-Progress reporting (default checked) |
| Notes | No | Free-text internal notes (multiline, 10 rows) |
Custom fields (configured per your site) appear at the bottom of the form.
Click Create (new job) or Save (existing job) to submit.
View Job
Section titled “View Job”The View Job screen is divided into a collapsible upper summary section and a lower tab section.
Upper Section — Job Summary
Section titled “Upper Section — Job Summary”The upper section can be collapsed or expanded using the expand/collapse button. It displays:
Left column — Customer & Site:
- Customer profile (name, contact info)
- Site address
Right column — Job Details:
| Field | Description |
|---|---|
| Job ID | |
| Customer PO Number | |
| Start Date / End Date | |
| Retention % / Burden % | |
| Project Name | |
| Contract Date | |
| Closed Date | When the job was closed (blank if open) |
| Last Change Date | Most recent change order date |
| Last Invoice Date | Most recent invoice date |
| Last Paid Date | Most recent payment date |
| Total Contract Amount | Original contract + change orders |
| Contract Amount | Original contract value |
| Change Order Amount | Approved change order total |
| Last Invoice Amount | Most recent invoice amount |
| Last Paid Amount | Most recent payment amount |
| Estimated Cost | Total estimated cost from the estimate |
| Estimated Hours | Total estimated labor hours |
| Commission | Commission dollar amount |
| Invoiced to Date | Cumulative invoiced amount |
| Paid to Date | Cumulative amount collected |
Status Chips (top of screen):
- Job Type — displays the assigned job type
- Open (green) or Closed (red) — current status
- Certified (yellow/warning) — appears when certified payroll is enabled
- WIP Reportable — appears when WIP reporting is active
- Tags — any tags applied to this job (requires tag permission)
Upper Tabs
Section titled “Upper Tabs”| Tab | Description |
|---|---|
| General | The summary fields described above |
| Notes | Job notes in formatted display |
| Custom Fields | Values for any configured custom fields |
Lower Tabs
Section titled “Lower Tabs”| Tab | Description |
|---|---|
| Dashboard | Per-job KPI dashboard (see Section 6) |
| Contracts | All job contracts and change orders |
| Estimates | Estimated costs by category and cost type |
| Actual vs Est | Side-by-side comparison of actual vs. estimated costs by category |
| Invoices | AR invoices linked to this job |
| Job Expenses | All posted job expense entries |
| Job Expense Logs | Audit log of changes to job expense entries |
| Communications | Communications (calls, emails, texts) logged against this job |
| Purchase Orders | Inventory purchase orders linked to this job |
| Attachments | Files and documents attached to this job |
Actions Dropdown
Section titled “Actions Dropdown”| Action | Description |
|---|---|
| Manage Estimates | Navigate to the Estimates screen for this job (disabled if closed) |
| Post Expense | Navigate to Post Job Expense pre-loaded with this job (disabled if closed) |
| Close Job | Close the job and finalize GL distributions. Toggle — shows Reopen Job when closed. |
| Preview Pick Ticket | Preview the inventory pick ticket for this job |
| Email Pick Ticket | Email the pick ticket |
| Audit Job | View an audit trail of changes to this job |
| Edit Job | Navigate to the edit form (disabled if closed) |
| Delete Job | Delete the job after confirmation (disabled if closed) |
Job Expenses Tab — Rate Visibility
Section titled “Job Expenses Tab — Rate Visibility”Navigation: View Job screen → Job Expenses tab.
The Job Expenses tab lists every posted expense entry for the job. What labor cost detail a user sees in this grid depends on the Job Cost Show Rates misc permission.
When a user does not have the Job Cost Show Rates permission:
| Column | Behavior without permission |
|---|---|
| Regular Hours | Hidden — the column is removed from the grid and cannot be re-added through the column chooser. |
| Overtime Hours | Hidden — the column is removed from the grid and cannot be re-added through the column chooser. |
| Doubletime Hours | Hidden — the column is removed from the grid and cannot be re-added through the column chooser. |
| Expense Amount | Blank for Labor-type entries (the value is suppressed). Shown normally for non-Labor entries. |
| Overhead Amount | Blank for Labor-type entries (the value is suppressed). Shown normally for non-Labor entries. |
Users with the permission see all three hours columns and the Expense Amount and Overhead Amount values for labor entries as normal.
Actual vs Est Tab
Section titled “Actual vs Est Tab”The Actual vs Est tab on the View Job screen presents a side-by-side, per-cost-category grid comparing estimated costs against job-to-date (JTD) actuals. Each row is a Job Cost Category; the grid includes one row for every category that appears in either the job’s estimates or its posted expenses.
The Job Cost Category column is pinned to the left and sorted in ascending order. All dollar columns are formatted as currency and hour/quantity columns to two decimal places.
| Column | Description |
|---|---|
| Job Cost Category | The cost category for this row (pinned, sorted ascending) |
| Hrs Est | Estimated labor hours for the category (sum of the estimate lines’ Labor Hours) |
| Hrs JTD | Actual labor hours posted to date — regular + overtime + doubletime hours across all Labor-type expenses in the category |
| Qty Est | Estimated quantity (always displayed as 0) |
| Qty JTD | Actual quantity posted to date — the sum of the quantity field across all expenses in the category, regardless of cost type |
| Labor Est | Estimated labor dollars (sum of the estimate lines’ Labor Cost) |
| Labor JTD | Actual labor expense dollars posted to date (Labor-type expense amounts, excluding burden) |
| Burden JTD | Actual labor overhead/burden posted to date (the overhead amount on Labor-type expenses) |
| Mat’l Est | Estimated material dollars (sum of the estimate lines’ Material Cost) |
| Mat’l JTD | Actual material posted to date — material expense amount plus its overhead |
| Subs Est | Estimated subcontractor dollars (sum of the estimate lines’ Subs Cost) |
| Subs JTD | Actual subcontractor posted to date — subs expense amount plus its overhead |
| Other Est | Estimated other-cost dollars (sum of the estimate lines’ Other Cost) |
| Other JTD | Actual other cost posted to date — other expense amount plus its overhead |
| Total Est | Total estimated cost for the category (Labor Est + Mat’l Est + Subs Est + Other Est) |
| Total | Total actual cost posted to date (Labor JTD + Burden JTD + Mat’l JTD + Subs JTD + Other JTD) |
| % Diff | Total actual as a percentage of total estimate (Total ÷ Total Est × 100). Displays 0 when the category has no estimate. |
Job Expense Logs
Section titled “Job Expense Logs”The Job Expense Logs tab on the View Job screen shows a transaction history of the job’s posted material and expense activity. Each top-level row is one posting transaction; rows for tracked-inventory material postings can be expanded to reveal the inventory pick detail behind them.
Navigation: View Job screen → Job Expense Logs lower tab
Transaction Rows
Section titled “Transaction Rows”| Column | Description |
|---|---|
| Date | The transaction date of the posting |
| Expense Type | The job cost entry type used for the posting |
| Expense Amount | The expense dollar amount of the related job cost entry |
| OH Amount | The overhead dollar amount of the related job cost entry |
| User | The user who created the transaction |
| Reversed | Whether the transaction has been reversed |
| Reversal Date | The date the transaction was reversed (blank if not reversed) |
| Reversal User | The user who reversed the transaction (blank if not reversed) |
Expanding a Row to See the Pick Detail
Section titled “Expanding a Row to See the Pick Detail”A row can be expanded only when its posting is a Material cost type and the product is inventory-tracked. For those rows, an expand control appears at the left of the row.
- Find a material transaction row whose product is inventory-tracked.
- Click the expand control at the start of the row.
- The detail grid loads the inventory pick records that made up that posting.
The expanded detail grid shows one row per inventory pick with these columns:
| Column | Description |
|---|---|
| Product | The product that was picked |
| Location | The inventory location the quantity was drawn from |
| Serialized Product | The specific serialized unit, when the product is serialized |
| Pallet | The pallet the quantity was picked from, when applicable |
| Container Size | The container size of the picked quantity |
| Quantity | The quantity picked from that location |
Delete Job
Section titled “Delete Job”Delete permanently removes a job from the system. A confirmation dialog appears: “Are you sure you want to delete this job?”
Prerequisites:
- Job must be open — closed jobs cannot be deleted. Reopen the job first if needed.
- User must have the job delete permission.
- No close-date validation is required since deletion does not create GL entries.
Deleting a job removes the job record and its associated data (contracts, estimates, expense entries). This action cannot be undone.
6. Job Metrics Dashboard (Per-Job)
Section titled “6. Job Metrics Dashboard (Per-Job)”Accessed from the Dashboard tab on the View Job screen, this section provides deep financial KPIs for the selected job.
Progress
Section titled “Progress”- Percent Complete — horizontal progress bar showing the ratio of actual cost to estimated cost
- Earned Revenue — revenue recognized based on completion
- Backlog Remaining — remaining unearned contract value
Revenue
Section titled “Revenue”| KPI | Description |
|---|---|
| Original Contract | Base contract amount |
| Approved COs | Approved change order total (highlighted if non-zero) |
| Total Revenue | Contract + change orders (shown in green as “good”) |
| KPI | Description |
|---|---|
| Estimated Cost | Total from the job estimate, including burden. If a job has a Burden % configured, the estimate includes a Burden Estimated amount calculated from the labor estimate (unless the job type’s “Estimates Include Burden” flag is set, in which case burden is already included in the estimate figures). |
| Actual Cost | Actual posted expenses to date, including burden (shown in red if exceeds estimate) |
| Committed (POs) | Value of open purchase orders linked to this job |
| Remaining Committed | Undelivered PO value |
| Cost to Complete | Projected cost still required to finish |
Cost Breakdown Donut Chart shows the split between Actual, Committed (Open POs), and Estimated Remaining cost.
Actual vs. Estimates Stacked Horizontal Bar Chart compares Estimated and Actual cost by job cost category, sorted by total estimated descending. Tooltips show Est, Act, and Difference for each category.
Profitability
Section titled “Profitability”| KPI | Description |
|---|---|
| Estimated Margin | Expected gross margin (dollar + percent) |
| Actual Margin-to-Date | Realized gross margin on costs incurred so far |
| CPI | Cost Performance Index = BCWP ÷ Actual Cost, where BCWP = Percent Complete × Estimated Cost. ≥ 1.0 means on or under budget. Shown green (≥ 1.0), yellow (0.9–1.0), or red (< 0.9). |
| Forecast Final Cost | Projected total cost at completion based on current burn rate |
| Margin Growth/Erosion | Change in margin vs. original estimate |
| Forecast Margin | Projected final gross margin (dollar + percent) |
Margin Comparison Chart shows bars for Estimated, Actual-to-Date, and Forecast margins. Green bars = positive margin; red = negative.
Billing & Collections
Section titled “Billing & Collections”| KPI | Description |
|---|---|
| Invoiced to Date | Total invoiced, with billing % as sub-label |
| Paid to Date | Total collected |
| Accounts Receivable | Outstanding balance (highlighted yellow if > 0) |
| Retainage Held | Retention amount withheld |
| Collection Rate | Paid ÷ invoiced (green/yellow/red) |
| Over / Under Billing | Difference between revenue earned and amount invoiced. Positive = overbilled; negative = underbilled. |
Billing Summary Chart shows a bar comparison of Invoiced, Paid, A/R, and Retainage.
| KPI | Description |
|---|---|
| Estimated Hours | Hours from the labor estimate |
| Actual Hours | Labor hours posted to date |
| Labor Burn Rate | Actual hours ÷ estimated hours (% used). Highlighted yellow or red when over threshold. |
Hours Chart compares total Estimated vs. Actual labor hours.
| KPI | Description |
|---|---|
| Cash Position | Net cash flow (collected − cost incurred). Green if positive, red if negative. |
7. Manage Estimates
Section titled “7. Manage Estimates”Navigation: Job Costing → Manage Estimates, or via Actions → Manage Estimates from a job
This screen sets the cost budget for a specific job contract.
Header
Section titled “Header”| Field | Required | Description |
|---|---|---|
| Job | Yes | Search for the job to estimate (searches open jobs by Job ID, customer name, or customer ID) |
| Customer | — | Read-only display of the selected job’s customer |
| Site | — | Read-only display of the selected job’s site address |
| Job Contract | Yes | Select which contract or change order to estimate. Switching contracts loads the existing estimates for that contract. |
| Contract Amount | — | Read-only display of the selected contract’s dollar value |
Estimate Grid
Section titled “Estimate Grid”Each row in the grid represents one cost category’s budget:
| Column | Description |
|---|---|
| Job Cost Category | Select the cost category for this estimate line |
| Material Cost | Estimated material dollars |
| Labor Hours | Estimated labor hours |
| Labor Cost | Estimated labor dollars |
| Subs Cost | Estimated subcontractor dollars |
| Other Cost | Estimated other cost dollars |
| Delete | Remove this estimate row |
- A new blank row is automatically added when you focus on the last row.
- The Estimate Total footer row shows the sum of all cost columns.
Buttons
Section titled “Buttons”| Button | Description |
|---|---|
| Save and Clear Job | Save the current estimates and clear the job field so you can estimate a different job |
| Save Current Estimate | Save the estimates for the current contract |
8. Post Job Expense
Section titled “8. Post Job Expense”Navigation: Job Costing → Post Job Expense, or via Actions → Post Expense from a job
This screen posts a single expense entry (labor, material, subcontractor, or other cost) to a job.
Transfer Mode
Section titled “Transfer Mode”The Transfer Expense toggle at the top switches between:
- Standard posting — records a new expense on the selected job
- Transfer — moves an existing expense from one job to another (the Transfer To Job field appears)
Header Fields
Section titled “Header Fields”| Field | Required | Description |
|---|---|---|
| Job | Yes | The job to post to (search filters to open jobs only) |
| Transfer To Job | Conditional | Target job when in Transfer mode (required if transferring) |
| Date | Yes | Transaction date |
| Job Expense Type | Yes | The expense type, filtered to match the selected job’s job type |
| Job Cost Category | Yes | The cost category for this expense |
| Vendor | Conditional | Required when the expense type has cost type Subs |
| Employee | Conditional | Enabled (editable) when the expense type has cost type Labor; optional — not required |
| Product | Conditional | Required when the expense type has cost type Material |
| Description | No | Free-text description of the expense |
| Invoice Number | No | Reference invoice number |
Labor Fields (visible when cost type = Labor)
Section titled “Labor Fields (visible when cost type = Labor)”| Field | Description |
|---|---|
| Regular Hours | Regular-time hours (2 decimal places). Negative values are allowed for corrections or adjustments. |
| Overtime Hours | Overtime hours (2 decimal places). Negative values are allowed for corrections or adjustments. |
| Doubletime Hours | Double-time hours (2 decimal places). Negative values are allowed for corrections or adjustments. |
Material Fields (visible when cost type = Material)
Section titled “Material Fields (visible when cost type = Material)”| Field | Description |
|---|---|
| Quantity | Quantity of material used (3 decimal places) |
Amount Fields
Section titled “Amount Fields”| Field | Required | Description |
|---|---|---|
| Expense Amount | Yes | Dollar amount of the expense |
| Overhead Amount | No | Calculated overhead amount (auto-computed based on cost category overhead factors; can be overridden) |
GL Accounts (read-only display)
Section titled “GL Accounts (read-only display)”| Field | Description |
|---|---|
| Debit GL | The GL account that will be debited for this expense |
| Credit GL | The GL account that will be credited for this expense |
| OH Debit GL | Overhead debit GL account |
| OH Credit GL | Overhead credit GL account |
These are automatically determined based on the expense type and job type configuration and cannot be manually changed.
Material Allocation
Section titled “Material Allocation”For Material-type expenses, an Allocation section appears below the GL accounts. This shows inventory reservations and allows you to select specific inventory locations to pick from for this material expense.
Action Buttons
Section titled “Action Buttons”| Button | Description |
|---|---|
| Recompute Amounts | Recalculates expense and overhead amounts based on current field values |
| Auto-Allocate Materials | Automatically selects inventory allocations for material expenses |
| Post | Submit the expense and reset the form for a new entry |
| Post & Reuse Job | Submit the expense and keep the current job selected (useful for posting multiple expenses to the same job) |
Insufficient Allocations Dialog
Section titled “Insufficient Allocations Dialog”If material allocations cannot fully cover the required quantity, a dialog titled “Allocations Not Made” appears showing:
- Product — the product with insufficient inventory
- Needed — quantity required
- Requested / Available — what was available
Click Acknowledge to proceed anyway or cancel and adjust.
Reverse Job Expense
Section titled “Reverse Job Expense”Reversing a job expense creates offsetting GL entries that negate the original expense posting, effectively undoing the expense without deleting the audit trail.
Navigation: On the View Job screen, open the Job Expenses tab, then click the Reverse button (history icon) on the expense row.
Reverse Dialog
Section titled “Reverse Dialog”| Field | Required | Description |
|---|---|---|
| Posting Date | Yes | The date for the reversal GL entries. Must pass close-date validation. |
Prerequisites
Section titled “Prerequisites”- Job must be open — expenses on closed jobs cannot be reversed.
- The expense must not already be reversed (the button is disabled for already-reversed entries).
- The expense must have a transaction log record.
- User must have the reverseJobCostExpense permission.
GL Impact
Section titled “GL Impact”The reversal creates four offsetting GL entries per expense:
- Debit GL — negative of the original expense amount
- Credit GL — the original expense amount (reversed direction)
- OH Debit GL — negative of the original overhead amount
- OH Credit GL — the original overhead amount (reversed direction)
For material expenses with inventory allocations, the reversal also reverses the inventory transaction, returning quantities to their original locations.
The original expense entry is marked as reversed with the reversal date and user. A new negative job cost entry is created as a mirror of the original.
Transfer Job Expense
Section titled “Transfer Job Expense”In addition to reversing an expense, you can move an individual already-posted expense entry from one job to another directly from the Job Expenses tab. Transferring an expense reverses the original posting on the source job and creates a matching new posting on the destination job, so the expense is removed from the original job and added to the target job without losing the audit trail.
Navigation: On the View Job screen, open the Job Expenses tab, then click the Transfer Expense button (compare-arrows icon) on the expense row.
Transfer Dialog
Section titled “Transfer Dialog”| Field | Required | Description |
|---|---|---|
| Transfer To Job | Yes | The open job to move the expense to. Type to search jobs by ID; only open (not closed) jobs appear in the list. |
Click Transfer to perform the move, or Cancel to close without changes.
Prerequisites
Section titled “Prerequisites”- The source job must be open — the Transfer Expense button does not appear on a closed job.
- The expense must have a transaction log record and must not already be reversed (the button is disabled for already-reversed entries).
- User must have the postJobCostExpense permission.
- The destination job must be open. Selecting a closed job is rejected with “Cannot transfer to a closed job. Please select another Job.”
- The destination job’s job type must have the same expense type as the entry being transferred. Otherwise the transfer is rejected with “Cannot transfer to a job who’s type does not have the same expense type.”
What Happens
Section titled “What Happens”When you confirm a transfer:
- The original expense entry on the source job is marked as reversed (with the reversal date and the acting user recorded), and a mirroring negative job cost entry is created on the source job to offset it.
- A new job cost entry — copying the original expense’s amount, overhead, quantity, hours, category, vendor/employee/product, invoice number, date, and description — is created on the destination job, along with its own posting transaction and log records.
- For material expenses, the associated inventory transaction logs are carried over to the destination job’s posting.
The transfer is subject to close-date validation before it is posted.
9. Post Job Materials
Section titled “9. Post Job Materials”Navigation: Job Costing → Post Job Materials
This screen allows bulk-posting of multiple material expenses against a job in a single transaction. It is more efficient than Post Job Expense when posting many material lines at once.
Header Fields
Section titled “Header Fields”| Field | Required | Description |
|---|---|---|
| Date | Yes | Transaction date for all materials in this posting |
| Job | Yes | The job to post to (open jobs only) |
| Invoice Number | No | Reference invoice number applied to all lines |
| Default Job Expense Type | No | Pre-fills the expense type on new rows |
| Default Job Cost Category | No | Pre-fills the cost category on new rows |
Materials Tab
Section titled “Materials Tab”An inline-editable grid where each row is a material expense:
| Column | Required | Description |
|---|---|---|
| Product | No | The material product |
| Description | No | Free-text description for this line |
| Job Expense Type | No | Expense type for this line (inherits default if set) |
| Job Cost Category | No | Cost category for this line (inherits default if set) |
| Quantity | No | Quantity used (3 decimal places) |
| Expense Amount | No | Dollar amount (currency; aggregated in footer) |
| Overhead Amount | No | Overhead amount (currency; aggregated in footer) |
| Row Actions (⋮) | — | Per-row menu: Recompute Expense, Recompute Overhead, Delete |
- A new blank row is added automatically as you work through the grid.
- The footer shows the sum of Expense Amount and Overhead Amount across all rows.
Allocations Tab
Section titled “Allocations Tab”Shows inventory allocation details — which specific inventory locations will be drawn from when this posting is committed.
Action Buttons
Section titled “Action Buttons”| Button | Description |
|---|---|
| Auto-Allocate | Automatically selects inventory allocations for all material lines |
| Post | Commit all material entries. Disabled until a job is selected. |
Insufficient Allocations Dialog
Section titled “Insufficient Allocations Dialog”Same as Post Job Expense — lists products with insufficient inventory. Click Acknowledge to proceed.
10. Close Job
Section titled “10. Close Job”Navigation: Job Costing → Close Job, or via Actions → Close Job from a job
This screen finalizes a job by posting the closing GL distributions and locking the job from further changes.
Header Fields
Section titled “Header Fields”| Field | Required | Description |
|---|---|---|
| Job | Yes | Search for the job to close (by Job ID, customer name, or customer ID) |
| Close Date | Yes | The date of closing. The close form validates that this date is on or after the latest invoice and payment date on the job. |
Read-Only Summary Fields
Section titled “Read-Only Summary Fields”Once a job is selected, the following information is displayed:
| Field | Description |
|---|---|
| Contract Amount Total | Total contract value including change orders |
| Contract Date | Date of the original contract |
| Site Address | Job site address |
| Invoiced Total | Total amount invoiced against this job |
| Last Invoice Date | Date of the most recent invoice |
| Paid Total | Total collected |
| Last Paid Date | Date of the most recent payment |
| Closing Contract GL | The GL account that will receive the contract closing entry |
| Expense Total | Total actual expenses posted to this job |
| Estimate Total | Total estimated cost from the job estimate |
Status Indicators
Section titled “Status Indicators”Chips appear to flag issues before closing:
| Indicator | Color | Meaning |
|---|---|---|
| Expenses More Than Estimate | Yellow (warning) | Total actual posted expenses (expense + overhead) exceed the estimated cost |
| Expenses Less Than Estimate | Green (success) | Total actual posted expenses (expense + overhead) are at or below the estimated cost |
| Job Not Fully Invoiced | Red (error) | Revenue has not been fully billed |
| Invoices Not Fully Paid | Red (error) | Outstanding AR balance remains |
If the job has not been fully invoiced or paid, a confirmation dialog appears: “This job has not been fully invoiced and/or paid. Do you still wish to close?” You can proceed or cancel.
| Tab | Description |
|---|---|
| Job Expenses | Detailed list of all expense entries that will be included in the close |
| GL Distributions | The GL debit/credit lines that will be posted when the job is closed |
Action Button
Section titled “Action Button”Click Close Job to finalize. The button is disabled if the job is already closed.
Reopen Job
Section titled “Reopen Job”Closed jobs can be reopened from Actions → Reopen Job on the View Job screen. Reopening reverses all of the closing GL distributions, allowing additional expense postings and billing changes.
What happens when a job is reopened:
- The system reverses every closing GL entry that was created when the job was closed — both expense closing entries and the contract amount closing entry.
- All reversal entries are posted to the “Reopen Job” subledger with the description “Reopening Job [Job ID]”.
- The job’s
isClosedflag is set to false and theclosedDateis cleared. - The job returns to Open status, and all actions (Post Expense, Manage Estimates, Edit Job) become available again.
Prerequisites:
- Job must be closed — the Reopen action is hidden when the job is already open.
- User must have the reopenJob permission.
- The reopen posts at the current date and runs through the standard GL close-date check. If that date falls in a closed GL period, the reopen is submitted to the head accountant for approval (or requires a password) before it can post.
11. Job Costing Settings
Section titled “11. Job Costing Settings”Navigation: Job Costing → Settings
The settings screen organizes reference data into three tabs.
Job Types Tab
Section titled “Job Types Tab”Displays and manages job type definitions. Requires jobType read permission to see this tab.
Grid Columns:
| Column | Description |
|---|---|
| Job Type ID | The short code for this job type |
| Name | Full name of the job type |
| Contract Credit GL | Contract credit ledger account assigned to this job type |
| Contract Closing Credit GL | Contract closing credit ledger account assigned to this job type |
| Estimates Include Burden | Whether labor burden is already pre-factored into this job type’s estimates |
| Disabled | Whether this job type is currently inactive |
Actions:
- + — Create a new job type (requires
jobTypecreate permission) - Edit (pencil) — Modify an existing job type (requires
jobTypeupdate permission; unavailable on disabled job types) - Enable (green checkmark) — Re-enable a disabled job type (requires
jobTypeupdate permission; shown in place of Delete on disabled rows) - Delete — Remove a job type (requires
jobTypedelete permission). If any jobs are associated with the type, it is set to disabled instead of deleted, and the message “There are existing/archived jobs associated with this type. Type has been set to disabled.” is shown. - Show/Hide Disabled toggle — Shows or hides disabled job types (disabled job types are hidden by default)
Click a job type row to open the Job Type View screen.
Create / Edit Dialog:
| Field | Required | Description |
|---|---|---|
| ID | Yes | The short code for the job type. Must be unique across job types. Read-only after creation. |
| Name | Yes | Full name of the job type. |
| Contract Credit GL | Yes | Offset GL account debited for the total contract amount when the job is closed (paired with the Contract Closing Credit GL). |
| Contract Closing Credit GL | Yes | GL account credited for the total contract amount when the job is closed. |
| Estimates Include Burden | No | Mark this checkbox if labor burden is already pre-factored when creating estimates for jobs of this type. Defaults to off. |
The Job Cost Entry Types tab on the Job Type View screen shows which expense types are available for jobs of this type.
Job Cost Entry Types Tab
Section titled “Job Cost Entry Types Tab”Job cost entry types define the categories of expenses that can be posted to jobs (e.g., “Direct Labor”, “Overtime”, “Materials - Electrical”).
Grid Columns:
| Column | Description |
|---|---|
| Name | Entry type name |
| Cost Type | Labor, Material, Subs, or Other |
| Disabled | Whether this entry type is currently inactive |
Actions:
- + — Create a new entry type
- Edit — Modify an existing entry type
- Enable (green checkmark) — Re-enable a disabled entry type
- Delete — Disable (soft-delete) an entry type
- Show/Hide Disabled toggle — Shows or hides disabled entry types
Create / Edit Dialog:
| Field | Required | Description |
|---|---|---|
| Name | Yes | Entry type name. Must be unique. |
| Cost Type | Yes | Labor, Material, Subs, or Other. Read-only after creation. |
Job Type Detail — Associated Job Cost Entry Types
Section titled “Job Type Detail — Associated Job Cost Entry Types”Navigation: Job Costing → Settings → Job Types tab → click a job type to open the View Job Type screen, then the Job Cost Entry Types tab.
The top card of the View Job Type screen shows the job type’s Job Type ID, Name, Contract Credit GL, and Contract Closing Credit GL. Below it, the Job Cost Entry Types tab is a full management surface that controls which cost entry types are available to jobs of this type and, for each one, which GL accounts are used when expenses are posted.
Each row associates one cost entry type (the catalog entries from the Job Cost Entry Types tab) with this job type and its own set of GL accounts. Only cost types that are not already associated with this job type are offered when adding a new association.
Grid Columns:
| Column | Description |
|---|---|
| Name | The cost entry type’s name |
| Cost Type | The cost type of the entry type (Labor, Material, Subs, or Other) |
| Debit | The Debit GL account used for the base expense posting |
| Credit | The Credit GL account used for the base expense posting |
| Closing Debit | The Closing Debit GL account for this association |
| Overhead Debit | The Debit GL account used for the overhead portion of the posting |
| Overhead Credit | The Credit GL account used for the overhead portion of the posting |
| Overhead Closing Debit | The Overhead Closing Debit GL account for this association |
| Use Job Specific Burden | Whether this association uses job-specific burden |
Actions:
- + (Create Associated Entry Type) — Add a new cost entry type association to this job type. Requires
jobTypeJobCostEntryTypecreate permission. - Edit (pencil) — Modify the GL accounts and burden flag of an existing association. Requires
jobTypeJobCostEntryTypeupdate permission; disabled for disabled rows. - Enable (green checkmark) — Re-enable a disabled association. Requires
jobTypeJobCostEntryTypeupdate permission. - Disable (trash) — Disable (soft-delete) an association so the cost type is no longer available for this job type. Requires
jobTypeJobCostEntryTypeupdate permission. - Show/Hide Disabled toggle — Shows or hides disabled associations. By default disabled associations are hidden.
Create / Edit Dialog (titled “Create New Associated Job Cost Entry Type” or “Edit Associated Job Cost Entry Type”):
| Field | Required | Description |
|---|---|---|
| Cost Type | Yes | The cost entry type to associate. Only entry types not already associated with this job type appear in the list. |
| Debit GL | Yes | GL account debited for the base expense amount |
| Credit GL | Yes | GL account credited for the base expense amount |
| Closing Debit GL | Yes | Closing Debit GL account for this association |
| Overhead Debit GL | Yes | GL account debited for the overhead amount |
| Overhead Credit GL | Yes | GL account credited for the overhead amount |
| Overhead Closing Debit GL | Yes | Overhead Closing Debit GL account for this association |
| Should Use Job Specific Burden | No | Checkbox indicating whether this association uses job-specific burden |
Job Cost Categories Tab
Section titled “Job Cost Categories Tab”Job cost categories segment costs within a job for more granular reporting and overhead calculations.
Grid Columns:
| Column | Description |
|---|---|
| Category ID | Short code for this category |
| Description | Full category name |
| Material Factor | Overhead multiplier applied to material costs (%) |
| Labor Factor | Overhead multiplier applied to labor costs (%) |
| Subs Factor | Overhead multiplier applied to subcontractor costs (%) |
Actions: Create (+) and Edit (pencil) buttons.
Create / Edit Dialog:
| Field | Required | Description |
|---|---|---|
| ID | Yes | Unique category code. Read-only after creation. |
| Description | Yes | Category name |
| Material Factor | No | Overhead percentage applied to material expenses (2 decimal places) |
| Labor Factor | No | Overhead percentage applied to labor expenses (2 decimal places) |
| Subs Factor | No | Overhead percentage applied to subcontractor expenses (2 decimal places) |
12. Permissions
Section titled “12. Permissions”| Permission | Actions | Description |
|---|---|---|
| job | create, read, update, delete | Manage jobs |
| jobType | create, read, update, delete | Manage job types. read gates viewing/selecting job types and seeing the Job Types settings tab; create, update, and delete gate adding, editing, and removing job types |
| jobCostEntryType | create, update, delete | Manage job cost entry types |
| jobCostCategory | create, update, delete | Manage job cost categories |
| jobContract | create, read, update, delete | Manage job contracts and change orders |
| jobCostEstimate | create, read, update, delete | Manage cost estimates |
| jobCostEntry | create, read, update, delete | Post and view job expenses |
| postJobExpense (systemKey postJobCostExpense) | — | Screen permission: access to the Post Job Expense screen |
| postJobMaterials | — | Screen permission: access to the Post Job Materials screen |
| closeJob | — | Screen permission: access to the Close Job screen |
| reopenJob | — | Misc permission: ability to reopen a closed job |
| viewAttachments | — | Misc permission: view and upload job attachments |
| manageTags | — | Misc permission: view and manage job tags |
| jobCostShowRates (Job Cost Show Rates) | — | Misc permission: shows the Regular/Overtime/Doubletime Hours columns on the Job Expenses grid and reveals the Expense Amount and Overhead Amount values for labor entries. Without it, those hours columns are hidden and labor expense/overhead amounts are blanked. |
13. Worked Examples
Section titled “13. Worked Examples”Example 1: Setting Up a New Job with Estimates
Section titled “Example 1: Setting Up a New Job with Estimates”Scenario: Precision Mechanical wins a $125,000 HVAC installation contract for Greenfield Construction, Building C. Tom (Project Manager) sets up the job with a full cost estimate.
Step 1 — Create the job:
- Navigate to Job Costing → Manage Jobs and click +.
- Customer = Greenfield Construction, Site = Building C — 450 Industrial Pkwy.
- Job ID =
J-1050, Project Name =HVAC Install — Building C. - Job Type = Mechanical Install, Start Date =
03/01/2026, End Date =06/30/2026. - Retention % = 10%, Burden % = 12%, WIP Reportable = ✓.
- Click Create.
Step 2 — Create the contract:
- On the View Job screen, open the Contracts tab and click +.
- Amount = $125,000.00, Date =
02/15/2026(the fields are labeled Amount and Date). - Click Create.
Step 3 — Enter cost estimates:
- Navigate to Actions → Manage Estimates.
- Select Job = J-1050, Contract = Original Contract ($125,000).
- Enter estimates by category:
| Cost Category | Material | Labor Hours | Labor $ | Subs | Other | Total |
|---|---|---|---|---|---|---|
| Ductwork | $18,000 | 200 | $12,000 | $0 | $500 | $30,500 |
| Equipment | $35,000 | 80 | $4,800 | $0 | $0 | $39,800 |
| Controls | $8,000 | 120 | $7,200 | $5,000 | $0 | $20,200 |
| Piping | $6,000 | 100 | $6,000 | $0 | $300 | $12,300 |
| Estimate Total | $67,000 | 500 | $30,000 | $5,000 | $800 | $102,800 |
- Click Save Current Estimate.
Result: Job J-1050 is open with a $125,000 contract and $102,800 in estimated costs. Estimated margin = $22,200 (17.8%).
Example 2: Posting Mixed Expenses and Monitoring Health
Section titled “Example 2: Posting Mixed Expenses and Monitoring Health”Scenario: Three weeks into Job J-1050, Tom reviews the job after posting labor, subcontractor, and material expenses.
Expenses posted so far:
| Date | Type | Category | Description | Amount |
|---|---|---|---|---|
| 03/05 | Labor | Ductwork | Mike Torres — 40 reg hrs × $30/hr | $1,200.00 |
| 03/05 | Labor | Ductwork | Mike Torres — 8 OT hrs × $45/hr | $360.00 |
| 03/10 | Material | Equipment | 2 × Carrier RTU (from inventory) | $14,200.00 |
| 03/12 | Subs | Controls | ABC Controls — panel installation | $4,800.00 |
| 03/15 | Labor | Piping | Mike Torres — 32 reg hrs × $30/hr | $960.00 |
Total actual cost to date: $21,520.00
Checking job health on the Dashboard tab:
- Percent Complete: 17.2% (based on actual cost vs. estimated cost)
- Actual Cost: $21,520.00
- Estimated Cost: $102,800.00
- CPI: budgeted cost of work performed ÷ actual cost = (percent complete × estimated cost) ÷ actual cost = 1.00 (green — at or above 1.0). Because percent complete is itself actual cost ÷ estimated cost, this metric stays pinned at 1.00 whenever cost has been posted
- Actual Margin-to-Date: $21,500 - $21,520 = -$20 (essentially break-even at this early stage)
- Forecast Final Cost: $102,800 (tracking to estimate)
- Labor Burn Rate: 80 hours used ÷ 500 estimated = 16% (healthy)
Key observation: The subcontractor cost ($4,800) is tracking close to the $5,000 Controls subs estimate — Tom notes this may need a change order if additional controls work is required.
Example 3: Change Order and Job Close
Section titled “Example 3: Change Order and Job Close”Scenario: Greenfield Construction requests additional ductwork that adds $15,000 to the contract. After completion, Tom closes the job.
Step 1 — Add the change order:
- On Job J-1050, open the Contracts tab and click +.
- Enter Description = “Additional return ductwork — floors 3-4” and Amount = $15,000.00, then check Is Change Order? and Customer Approved? (an unapproved change order does not count toward the total).
- Click Create.
- Total Contract Amount is now $125,000 + $15,000 = $140,000.00.
Step 2 — Enter change order estimates:
- Navigate to Actions → Manage Estimates.
- Switch to Job Contract = Change Order #1 ($15,000).
- Add estimate: Category = Ductwork, Material = $4,000, Labor Hours = 60, Labor $ = $3,600, Other = $200. Total = $7,800.
Step 3 — Post remaining expenses and invoice:
- All work is completed. Final actual costs:
| Cost Type | Estimated | Actual |
|---|---|---|
| Material | $71,000 | $68,500 |
| Labor | $33,600 | $35,200 |
| Subs | $5,000 | $4,800 |
| Other | $1,000 | $950 |
| Total | $110,600 | $109,450 |
- All invoices sent and collected: $140,000 invoiced, $140,000 paid.
Step 4 — Close the job:
- Navigate to Actions → Close Job from the View Job screen.
- Close Date =
07/15/2026. - Review summary:
- Contract Total: $140,000.00
- Invoiced: $140,000.00 ✓
- Paid: $140,000.00 ✓
- Expense Total: $109,450.00
- Status: Expenses Less Than Estimate (green)
- Review the GL Distributions tab — closing entries look correct.
- Click Close Job.
Final margin: $140,000 - $109,450 = $30,550 (21.8%) — better than the original estimated margin of 17.8%.
14. Business Rules
Section titled “14. Business Rules”Rules are grouped by category. Each rule has an ID for cross-referencing.
Constraints
Section titled “Constraints”- BR-JC-C1: Contract Before Estimate — The UI requires a contract with a contract amount before cost estimates can be entered.
- BR-JC-C2: Close Date Floor — The close form validates that the job close date is on or after the most recent invoice and payment date.
- BR-JC-C3: Closed Job Lock — Closed jobs prevent additional expense postings; reopening reverses the closing GL entries.
- BR-JC-C4: Delete Job Prerequisites — A job can only be deleted when it is open. Closed jobs must be reopened before deletion.
Automations
Section titled “Automations”- BR-JC-A1: Overhead Calculation — When posting an expense, the application calculates overhead as Expense × (Category Factor ÷ 100), where the factor is the cost category’s per-type factor (Material Factor, Labor Factor, or Subs Factor). For labor, the job’s Burden % is used only as a fallback when the category’s Labor Factor is 0; a non-zero Labor Factor overrides the Burden %.
- BR-JC-A2: CPI Dashboard — CPI (BCWP ÷ Actual Cost, where BCWP = Percent Complete × Estimated Cost) auto-calculates with color coding: green ≥ 1.0, yellow 0.9–1.0, red < 0.9.
- BR-JC-A3: Forecast Projection — Forecast Final Cost auto-calculates from actual costs extrapolated against percent complete.
- BR-JC-A4: Job Close GL Distribution — Closing a job auto-generates GL entries transferring costs to the contract closing account.
- BR-JC-A5: Expense Reversal — Reversing a job expense creates offsetting GL entries (negative amounts) and marks the original entry as reversed. For material expenses, inventory quantities are returned to their original locations.
Workflows
Section titled “Workflows”- BR-JC-W1: Job Lifecycle — Create Job → Set Contract → Enter Estimates → Post Expenses → Invoice via AR → Close Job.
- BR-JC-W2: Change Order Flow — Create Change Order → Set Amount → Enter Estimates → Expenses post against updated totals.
- BR-JC-W3: Reopen Job Flow — Reopen reverses all closing GL entries → Job returns to Open → Post additional expenses or billing → Close again when done.
Cross-Module Effects
Section titled “Cross-Module Effects”- BR-JC-X1: AP Invoice to Job — Vendor invoice lines distributed to a job create job cost entries (Material, Subs) updating Actual vs. Estimate.
- BR-JC-X2: Timesheet to Labor — Payroll timesheets allocated to a job create labor cost entries; employee rate × hours = labor expense.
- BR-JC-X3: Inventory Material — Material picks/allocations from inventory create material cost entries on the job.
- BR-JC-X4: Job Invoice to AR — Job billing milestones are invoiced through AR; invoice amounts appear in Billing & Collections.
15. Troubleshooting / FAQ
Section titled “15. Troubleshooting / FAQ”Q: I can’t enter cost estimates — the Manage Estimates screen shows no contracts. The form requires a contract with a contract amount before estimates can be entered (BR-JC-C1). Navigate to the job’s Contracts tab and create a contract first, then return to Manage Estimates.
Q: Job close fails — “close date before latest invoice/payment.” The close form validates that the close date is on or after the most recent invoice and payment date (BR-JC-C2). Check the job’s Billing & Collections section for the latest dates and set the close date accordingly.
Q: I can’t post expenses to a job — it says the job is closed. Closed jobs prevent additional expense postings (BR-JC-C3). If you need to add expenses, use Actions → Reopen Job to unlock it. Note that reopening reverses the closing GL entries, so you’ll need to close again when done.
Q: The CPI is red (below 0.9) — what should I do? A CPI below 0.9 means actual costs are exceeding the budgeted cost of work performed by more than 10% (BR-JC-A2). Review the Actual vs. Estimate dashboard to identify which cost categories are over budget. Consider whether a change order is needed to increase the contract amount, or investigate cost overruns (labor inefficiency, material waste, unplanned subcontractor work).
Q: Overhead amounts seem too high on my job expenses. Overhead is calculated as Expense Amount x (Category Factor / 100) (BR-JC-A1). Check the overhead factors on the Job Cost Category — each category has Material, Labor, and Subs factors. Also check the job’s Burden %, which applies to all labor costs. If the factors are set incorrectly, update the category settings.
Q: A vendor invoice posted in AP isn’t showing on the job dashboard. Verify the invoice distribution lines in AP were allocated to the correct job and cost category (BR-JC-X1). The job field must be filled on the AP distribution line for the cost to appear in Job Costing’s Actual vs. Estimate.
Q: The “Not Fully Invoiced” warning appears when I try to close the job. This means the total invoiced amount is less than the contract amount. You can either send the remaining invoices before closing, or acknowledge the warning and proceed if the shortfall is intentional (e.g., a negotiated reduction).
Q: How do I reopen a closed job? Navigate to the View Job screen for the closed job and select Actions → Reopen Job. The system reverses all closing GL entries and returns the job to Open status (BR-JC-W3). Remember to close the job again after making your changes.
Q: How do I reverse a job expense? Open the View Job screen, go to the Job Expenses tab, and click the Reverse button (history icon) on the expense row. Enter a posting date and confirm. The system creates offsetting GL entries that negate the original expense (BR-JC-A5). The original entry remains for audit purposes but is marked as reversed.
Q: I can’t delete a job — the Delete button is disabled. Jobs can only be deleted when they are open (BR-JC-C4). If the job is closed, use Actions → Reopen Job first, then delete it. Also verify you have the job delete permission assigned to your role.
16. Tips & Notes
Section titled “16. Tips & Notes”Starting a New Job
Section titled “Starting a New Job”- Create the Customer in Accounts Receivable if not already on file.
- Navigate to Jobs → Create Job. Select the customer, site, and job type.
- Set Retention % and Burden % if applicable.
- Save. The job is now open.
- Navigate to Actions → Manage Estimates to enter the cost budget by category.
- Create the Contract from the Contracts tab.
Estimating a Job
Section titled “Estimating a Job”- Open Manage Estimates (from the Actions menu or the main navigation).
- Select the job and then the contract to estimate.
- For each cost category, enter the expected Material Cost, Labor Hours, Labor Cost, Subs Cost, and/or Other Cost.
- The Estimate Total footer shows the running total.
- Click Save Current Estimate.
Posting Labor Expenses
Section titled “Posting Labor Expenses”- Navigate to Post Job Expense.
- Select the job and a Job Expense Type with Cost Type = Labor.
- Select the Employee.
- Enter Regular Hours, Overtime Hours, and/or Doubletime Hours.
- The Expense Amount will be auto-computed; click Recompute Amounts if needed.
- Click Post or Post & Reuse Job to post and stay on the same job.
Posting Multiple Material Lines
Section titled “Posting Multiple Material Lines”Use Post Job Materials when you have many products to post at once:
- Select the job and date.
- Set default Job Expense Type and Job Cost Category if most lines will share the same values.
- Add product rows in the Materials grid; the system auto-adds new rows as you work.
- Click Auto-Allocate to pull from available inventory.
- Click Post to commit all lines at once.
Monitoring Job Health
Section titled “Monitoring Job Health”Use the Dashboard tab on the View Job screen to monitor:
- CPI — anything below 1.0 means you are over budget
- Over / Under Billing — a large negative number means you are billing behind your earned revenue
- Forecast Margin — the projected final margin; compare to Estimated Margin to see margin erosion or growth
- Cash Position — if negative, you have paid more in costs than you have collected
Closing a Job
Section titled “Closing a Job”- Ensure all expenses are posted and all invoices are sent and collected.
- Navigate to Actions → Close Job from the View Job screen, or go to Close Job from the main menu.
- Review the GL Distributions tab to confirm the entries are correct.
- If the “Not Fully Invoiced” or “Invoices Not Fully Paid” warnings appear, resolve them first — or acknowledge the warning and proceed if appropriate.
- Click Close Job. The job is locked for further edits.
- If changes are needed after closing, use Actions → Reopen Job to unlock it.
Change Orders
Section titled “Change Orders”Change orders are managed through the Contracts tab on the View Job screen. Each change order increases or decreases the total contract amount. After adding a change order contract, navigate to Manage Estimates and select the change order to add its cost estimates.
Reopening a Closed Job
Section titled “Reopening a Closed Job”- Navigate to the View Job screen for the closed job.
- Click Actions → Reopen Job. The system reverses all closing GL entries and returns the job to Open status.
- Post any additional expenses or billing adjustments as needed.
- When finished, use Actions → Close Job to re-close and re-post the final GL distributions.
Reversing a Job Expense
Section titled “Reversing a Job Expense”- Navigate to the View Job screen and open the Job Expenses tab.
- Find the expense entry you want to reverse and click the Reverse button (history icon).
- Enter the Posting Date for the reversal entries.
- Click Submit. The system creates offsetting GL entries and marks the original as reversed.
- For material expenses, inventory quantities are automatically returned to their original locations.
Understanding Overhead Factors
Section titled “Understanding Overhead Factors”Each Job Cost Category has three overhead factors (Material, Labor, Subs). When you post an expense to that category, the application calculates an overhead charge:
Overhead Amount = Expense Amount × (Factor ÷ 100)
The overhead is posted to the overhead GL accounts defined on the expense type. This is useful for applying indirect costs (project management time, facility costs) to jobs proportionally without manual calculation.