User Guide
01.3 · Core Concepts

Hierarchy, Nesting and WBS

TX1 stores estimates as trees. Any item can have children, and any breakdown can have children. Understanding the rules keeps your estimate tidy.

Parent / Child Rules

ObjectMax indent levelsNotes
Direct Cost Item0–6 (7 levels total)Clamped; the engine refuses levels > 6 to prevent ghost rows.
Direct Cost Breakdown0–4 (5 levels total)Also clamped.
Overhead0–6Same rules as direct costs.
Overhead Breakdown0–4Same as DC breakdown.
Resource FolderUnlimitedOnly the root folder determines the type (Labour, Material, etc.).
Code Set0–6Standard cost-coding depth.

Indenting Items

Indenting a row sets its ParentId to the previous same-or-higher-level item.

ActionUIEffect
IndentTab or toolbar ➡IndentLevel + 1; picks nearest previous row as parent.
OutdentShift+TabIndentLevel − 1; parent moves up.
Move up / downAlt+↑ / ↓Swaps SortOrder among siblings.

WBS Codes

The WBS field is a free-text code (e.g. 3.2.4.1) independent of indent level. You can keep them in sync manually or let a custom workflow generate them.

Totals Roll Up

Every item has two important totals:

  • DirectTotal — just this line (= Qty × Rate, or the sum of its own breakdowns).
  • TotalWithChildren — DirectTotal plus every child's TotalWithChildren, recursively.

This is how parent rows show a rolled-up subtotal while still having their own (usually zero) direct quantity.

Parent Can Own a Quantity or Be a Header

A parent item can either:

  1. Be a header — Quantity = 0, Rate = 0. It simply sums its children.
  2. Carry its own line — Quantity > 0 with its own rate, plus child detail. The rolled-up total adds both.

Use Rate Only or Not Contributing pricing modes (see 04.5) if you want the children visible but only the parent to count.

Collapsing the Tree

Click the chevron on any parent row to collapse/expand. The expand state is persisted in the DirectCostHierarchyStateJson field on the project so it survives app restarts.

Warning: Don't Over-Nest

Estimates that go deeper than four levels are hard to read and hard to apportion. Use breakdowns (which are their own tree inside an item) rather than stacking indents.