← API reference
CANONICAL TYPE REFERENCE

JobCostingSummaryPayload

Costing view of one job with separate purchased/planned and recorded actual sources. Recorded entries never add to or replace estimates; margins are labelled by source.

The job the summary was computed for. Null when no job with that id exists in the caller's tenant; errors then carries a "job not found" entry and all totals are zero.

Purchased costs, not recorded actuals: one line per purchase-order line belonging to a purchase order that references this job. Empty when nothing has been purchased against the job.

Planned costs, not recorded actuals: one line per operation on the job, priced from the run-type cost mappings for the operation's kind and the current rate of each mapped cost category. Operations with no mapping or no current rate still appear, at zero cost.

Sum of totalCost over materialCosts. Not currency-converted.

Sum of totalCost over operationCosts. Not currency-converted.

totalCostFloat!

Purchased material plus planned operation cost: totalMaterialCost + totalOperationCost. Excludes recorded actual costs. Not currency-converted; may mix currencies.

Line total of the order line this job was created for. Null when the job is not linked to any order line. If several order lines point at the job, the first one found is used.

marginFloat

Legacy purchased/planned margin: (sellingPrice - totalCost) / sellingPrice * 100. Not actual profitability; recorded costs are excluded and currencies are not reconciled. Null when sellingPrice is missing/nonpositive or planned/purchased totalCost is zero.

Whether the caller can view recorded costs (recordedcost:read or recordedcost:list). False hides recorded lines and totals while keeping the purchased/planned summary available; also false when the job is not found.

One line per recorded cost linked to this job in the caller's tenant. Independent of materialCosts and operationCosts; not inferred from production reports. Empty when recordedCostsAvailable is false.

Recorded costs grouped by currency, sorted by currency code. Never summed across currencies.

Sum of recorded costs only when at least one entry exists and all entries use one currency. Null for no entries or mixed currencies; use recordedCostTotals instead.

Currency of totalRecordedCost. Null for no entries or mixed currencies.

Currency of the order line used for sellingPrice.

Margin against costs recorded so far: (sellingPrice - totalRecordedCost) / sellingPrice * 100. Not final profitability. Null unless exactly one order line is linked, its price is positive, and recorded entries exist in that same currency.

Field-level errors. Empty on success; a single "job not found" entry on jobId when the job does not exist, in which case the rest of the payload is empty/zero.

View exact SDL
"""
Costing view of one job with separate purchased/planned and recorded actual sources. Recorded entries never add to or replace estimates; margins are labelled by source.
"""
type JobCostingSummaryPayload {
  """
  The job the summary was computed for. Null when no job with that id exists in the caller's tenant; errors then carries a "job not found" entry and all totals are zero.
  """
  job: JobState
  """
  Purchased costs, not recorded actuals: one line per purchase-order line belonging to a purchase order that references this job. Empty when nothing has been purchased against the job.
  """
  materialCosts: [CostLineItem!]!
  """
  Planned costs, not recorded actuals: one line per operation on the job, priced from the run-type cost mappings for the operation's kind and the current rate of each mapped cost category. Operations with no mapping or no current rate still appear, at zero cost.
  """
  operationCosts: [CostLineItem!]!
  """Sum of totalCost over materialCosts. Not currency-converted."""
  totalMaterialCost: Float!
  """Sum of totalCost over operationCosts. Not currency-converted."""
  totalOperationCost: Float!
  """
  Purchased material plus planned operation cost: totalMaterialCost + totalOperationCost. Excludes recorded actual costs. Not currency-converted; may mix currencies.
  """
  totalCost: Float!
  """
  Line total of the order line this job was created for. Null when the job is not linked to any order line. If several order lines point at the job, the first one found is used.
  """
  sellingPrice: Float
  """
  Legacy purchased/planned margin: (sellingPrice - totalCost) / sellingPrice * 100. Not actual profitability; recorded costs are excluded and currencies are not reconciled. Null when sellingPrice is missing/nonpositive or planned/purchased totalCost is zero.
  """
  margin: Float
  """
  Whether the caller can view recorded costs (recordedcost:read or recordedcost:list). False hides recorded lines and totals while keeping the purchased/planned summary available; also false when the job is not found.
  """
  recordedCostsAvailable: Boolean!
  """
  One line per recorded cost linked to this job in the caller's tenant. Independent of materialCosts and operationCosts; not inferred from production reports. Empty when recordedCostsAvailable is false.
  """
  recordedCosts: [RecordedJobCostLine!]!
  """
  Recorded costs grouped by currency, sorted by currency code. Never summed across currencies.
  """
  recordedCostTotals: [RecordedJobCostTotal!]!
  """
  Sum of recorded costs only when at least one entry exists and all entries use one currency. Null for no entries or mixed currencies; use recordedCostTotals instead.
  """
  totalRecordedCost: Float
  """
  Currency of totalRecordedCost. Null for no entries or mixed currencies.
  """
  recordedCostCurrency: CurrencyISO
  """Currency of the order line used for sellingPrice."""
  sellingPriceCurrency: CurrencyISO
  """
  Margin against costs recorded so far: (sellingPrice - totalRecordedCost) / sellingPrice * 100. Not final profitability. Null unless exactly one order line is linked, its price is positive, and recorded entries exist in that same currency.
  """
  recordedCostMargin: Float
  """
  Field-level errors. Empty on success; a single "job not found" entry on jobId when the job does not exist, in which case the rest of the payload is empty/zero.
  """
  errors: [FieldError!]!
}

One stable address across all schema views. Follow a field’s type to explore connections between domains.