Record and total work order costs
On a work order you can record labour, material and service lines, and the system totals them for the work order, for a technical location (together with the locations below it), for a plant and for a site. Cost tracking is off by default — the tenant switches it on in the policy. Money amounts are visible only to people who hold a separate permission.
Before you start
Section titled “Before you start”- Permission: there are two separate permissions, on the Permissions → Maintenance tab. No role has either by
default (the system administrator does); the tenant delegates them.
- cmms:cost:manage — Record costs: record and reverse cost lines, manage rate
categories and the currency. On its own it shows no money amount: the person recording gets the line without a
unit price or total. Rate categories and the currency live on the Maintenance → Settings → Cost tab, and the
settings page also requires the maintenance-manager permission: that tab needs
cmms:manage and cmms:cost:manage together. Recording
a line on the work order needs only
cmms:cost:manage. - cmms:cost:view — View costs: the money amounts (rates, unit prices, totals, summaries) and the export. Without it these appear nowhere — not on the page, not in the export.
- cmms:cost:manage — Record costs: record and reverse cost lines, manage rate
categories and the currency. On its own it shows no money amount: the person recording gets the line without a
unit price or total. Rate categories and the currency live on the Maintenance → Settings → Cost tab, and the
settings page also requires the maintenance-manager permission: that tab needs
cmms:manage and cmms:cost:manage together. Recording
a line on the work order needs only
- Prerequisite: the Maintenance module is on, and under Settings → Policy → Cost the Work order cost tracking switch is on for the work order’s site. While it is off, no new line can be written (reversing an existing line still works).
One-time setup: currency and rate categories
Section titled “One-time setup: currency and rate categories”Open Maintenance → Settings → Cost.
- In Currency, pick the organisation’s single currency (forint or euro) and click Save. The currency applies to the whole organisation, so it can be set only with company-wide scope.
- Under Rate categories, click Add category, enter the Category name (for example “Electrician — normal” or “Overtime”), the Hourly rate and, if needed, Valid from / to.
- A category can later be edited or archived.
Record a cost line on a work order
Section titled “Record a cost line on a work order”- Open the work order’s detail page (Maintenance → Work orders) and scroll to the Cost card.
- Click Add cost line and pick the Type:
- Labour — pick Performed by (from Users, Roster or Contractors; required), the Rate category and the Hours. The rate comes from the category; a manual hourly rate cannot be entered. If you leave “— no rate (unpriced) —”, the line is recorded without a price.
- Material — Description (required), Quantity, Unit and, if you know it, the Unit price.
- Service — like material, but the performer can only be a contractor.
- If needed, enter the Reference (invoice or PO number — stored as text) and the Work date; left empty, the site’s current day is used.
- Click Record.
The unit price and currency are frozen on the line when it is recorded, and the line cannot be edited afterwards.
Labour lines and internal/external hours
Section titled “Labour lines and internal/external hours”As soon as the work order has a labour line, the internal and external hours are derived from the lines (“Hours from lines: internal … h · external … h”): a contractor’s line counts as external, an own employee’s or roster worker’s line as internal. The manual hours field is no longer shown. If the work order has no labour line, the two numbers recorded by hand earlier stay as they are.
Closed work orders
Section titled “Closed work orders”On a closed (or rejected, cancelled) work order a late line can be recorded only with a reason: the Reason field is required, at least 5 characters. The database also guarantees that no line lands on a closed work order without a reason (the 5-character minimum is checked by the application).
Corrections: a reversal, not an edit
Section titled “Corrections: a reversal, not an edit”A recorded cost line can be neither edited nor deleted — a mistake is corrected by a reversal line:
- On the wrong line, click Reverse.
- Enter the reason for the reversal (required, at least 5 characters) and save.
- The system records the original line’s mirror line with a negative quantity, the same price and work date; the original is marked “reversed”, the new line “reversal”. The amount nets to zero, and both lines stay visible.
- If the corrected item must be entered again, record a new line with the right data.
A line can be reversed at most once, and a reversal line itself cannot be reversed. On an open work order too, a correction is a reversal line, not an overwrite. If cost tracking is switched off later, reversing still works — correcting a wrong fact is not a new recording.
The totals and what they show
Section titled “The totals and what they show”Totals are computed when read, from the lines; there is no separately stored grand total. The panels and amounts load only with the View costs permission.
- Work order: the Cost card shows the total and the total per type (labour, material, service).
- Technical location: on Maintenance → Technical location structure, the Cost panel of the selected node gives the cost of the work orders of that location and the locations below it, for the From / To period (by work day; the default is the start of the year to today). Apply refreshes it.
- Site and plant: on Maintenance → Gatekeeping, the Cost panel gives the site total broken down by plant.
- No double counting: every line belongs to exactly one work order, so a parent or collective work order does not pull in its children’s lines — a child’s cost stays on the child and counts once in a total.
Missing data is not zero
Section titled “Missing data is not zero”- “No data” — when there is no line at all in that type or scope. This is not 0.
- “no price” — an unpriced line is not free, it is without a price; a type’s amount may read “no price”.
- “Partial: N lines without a price” — when priced and unpriced (live) lines coexist, the system says the total is partial. A reversed pair does not count as unpriced.
- “Mixed currencies (…) — no total” — when a scope contains lines in more than one currency, no amount is shown. The system does not convert at an exchange rate; it says the lines cannot be totalled.
Export
Section titled “Export”The Export (xlsx) and Export (CSV) buttons under the Cost panel download a line-level list for the panel’s scope and period: work day, work order, site, plant, technical location, type, performer, rate category, quantity, unit, unit price, amount, currency, reference, reversal flag and reason. The export too needs the View costs permission. One file holds at most 20,000 lines; if the scope has more, the last row of the file says so — narrow the period or the scope and export in parts.
The close gate: “Cost required to close”
Section titled “The close gate: “Cost required to close””Under Settings → Policy → Cost, the Cost required to close switch has three positions (off / warn / block): closing the work order needs at least one live (not reversed) cost line. The gate measures only while cost tracking is on. There is no separate “financial close” status: cost completeness is a gate on the existing close. For how the policy works in general, see the article Configure the maintenance policy.