Cost methodology
Single calculation engine for expected, actual, schedule, and variance — uniformly applied across modules.
Cloud connected · no rows yet · Import CSVsSource: Forecast· as of —
Last refreshed
—
Next refresh — ()
Viewing: Pay Period 22 Dec – 4 Jan · All rosters
Green — all cost totals reconcile
19 of 19 rosters · Tolerance $0.01 · Viewing: Pay Period 22 Dec – 4 Jan · All rosters
No methodology issues detected. Every module is using the same uniform cost engine and reconciles to the same filtered totals.
Validation · Fortnight ending 10 May 2026
Acceptance test: every module must match these figures to the cent for pay period pp-2026-04-27.
| Metric | Canonical | Computed | Δ | Result |
|---|---|---|---|---|
| Expected roster cost | $0.00 | $0.00 | $0.00 | Pass |
| Actual roster cost | $896,485.49 | $896,485.49 | $0.00 | Pass |
| Cost variance | $896,485.49 | $896,485.49 | $0.00 | Pass |
| Actual payroll paid | $896,485.49 | $896,485.49 | $0.00 | Pass |
| Payroll vs roster variance | $0.00 | $0.00 | $0.00 | Pass |
Methodology
- Expected roster cost
- Expected roster cost is calculated using the planned resource, planned hours, and expected rates, penalties, allowances, sleepover, travel, and loadings.
- Actual roster cost
- Actual roster cost is calculated using the actual worker, actual hours, actual rates, penalties, overtime, allowances, sleepover, travel, loadings, and any agency/manual overrides.
- Variance
- Variance = Actual roster cost − Expected roster cost. Variance % = variance ÷ expected. Positive variance is unfavourable unless explained by increased funded/billable activity.
- Schedule cost
- Where source data uses ‘schedule cost’, it is mapped to roster cost and uses the same engine. Expected schedule cost = expected roster cost. Actual schedule cost = actual roster cost.
Predicted cost uses shift-level base rate × SCHADS loading per day classification (ORD / SAT / SUN / PHOL). Allowances, overtime caps, and afternoon/night shift split are added in subsequent phases as start-time data syncs from the source system.
Module cost snapshots
All modules callcalculateShiftCostUniform| Module | Expected roster cost | Actual roster cost | Variance | Reconciles |
|---|---|---|---|---|
| Executive Overview | $0.00 | $0.00 | $0.00 | Yes |
| Rosters | $0.00 | $0.00 | $0.00 | Yes |
| Daily Roster View | $0.00 | $0.00 | $0.00 | Yes |
| Planned vs Actual | $0.00 | $0.00 | $0.00 | Yes |
| Pay Category Analysis | $0.00 | $0.00 | $0.00 | Yes |
| Leakage | $0.00 | $0.00 | $0.00 | Yes |
| Sick Leave | $0.00 | $0.00 | $0.00 | Yes |
| Open Shifts | $0.00 | $0.00 | $0.00 | Yes |
| Under-Scheduled Permanent Staff | $0.00 | $0.00 | $0.00 | Yes |
| Roster Action Centre | $0.00 | $0.00 | $0.00 | Yes |
Source-of-truth hierarchy
- Actual payroll paid — cr230_paycategoriesanalysis
- Actual roster cost — Dataverse roster/shift records
- Expected roster cost — Planned roster records
- Employee employment type / minimum hours / award — cr230_employeepayrollrecord
- Approved leave validation — cr230_table1
Conflicts between sources are flagged as data quality issues; the engine never silently picks a value.