TotalApp Docs

Bill of Materials

Multi-level BOM editor with inline component expansion, version control (Draft / Active / Obsolete), dual Workstation/Enterprise style, and one-click CSV export. All labels are fully localised in English and Turkish.

Overview

The Bill of Materials screen is the engineering master for product composition. Every work order references an Active BOM to calculate material requirements and scrap-adjusted quantities. Accurate BOMs are a prerequisite for reliable work order execution and inventory planning.

Every BOM is linked to a real product record in Manufactured Products by a unique SKU-backed productId — never a free-text name. This is what guarantees a BOM can never be silently attached to the wrong product or to a product that doesn't exist.

Version Control

Draft → Active → Obsolete lifecycle. Multiple versions of the same product BOM can coexist; only the Active one is used by work orders.

Inline Expansion

Click the chevron on any BOM row to expand the full component list in-place without opening a modal — ideal for quick reviews.

Scrap Rate

Per-component scrap percentage inflates reservation quantities automatically, preventing mid-run stock shortages.

Dual Style

Dark Workstation and light Enterprise visual modes, switchable from Settings → Appearance → Screen Style. The modal shell also switches style.

CSV Export

Export the current filtered view to a UTF-8 CSV file with a single click. Column headers are localised — English and Turkish are supported out of the box.

Full Localisation

Every label, placeholder, button, status badge, and filter pill is fully localised. Status labels always follow the active language.

Quick Start

  1. Open Bill of Materials in the Manufacturing sidebar.
  2. Click Create BOM. The form opens as a modal (or right panel if Add Record Mode is Panel).
  3. Select the Product from the dropdown — the Save button stays disabled until a product is selected. If it isn't listed yet, click the + button next to the dropdown to create it inline (see below).
  4. Set the Version string (e.g. v1.0) and leave Status as Draft.
  5. Click Add Component for each raw material. Fill in name, code, quantity, unit, and scrap %.
  6. Click Create BOM to save.
  7. When ready for production, edit the BOM and change Status to Active.
  8. Use the Export button in the top toolbar to download the current filtered view as a CSV file.

Selecting the Product

The Product field in the Create/Edit BOM form is a dropdown populated from the Manufactured Products catalog, shown as "Name (SKU)" — not a free-text field. This guarantees a BOM's productId always points to a real, existing product.

Product Not in the List Yet? Create It Without Losing Your Draft

Click the + button next to the product dropdown to jump straight to Manufactured Products with its Add Product form already open. Save the new product and you're returned to this Create BOM form with your version, status, notes, and components intact, and the new product pre-selected.

Editing an Existing BOM

Quick-Create is designed around the create flow. If you click + while editing an existing BOM, you're returned to a fresh Create BOM form rather than back into the edit — an intentional simplification, since needing a brand-new product mid-edit is rare.

Toolbar Controls

The screen header follows the two-row layout standard:

Row 1 — Title + Primary Actions

ControlFunction
ExportDownloads the currently filtered BOM list as a UTF-8 CSV file. Column headers are localised. The filename is always bill-of-materials.csv.
Create BOMOpens the BOM form modal (or slide-in panel, depending on Add Record Mode setting).

Row 2 — Search + Filters + Refresh

ControlFunction
SearchFilters the table by product name or version string in real time (case-insensitive).
Filter pills (All / Active / Draft / Obsolete)Narrows the list to BOMs of the selected status. "All" shows every BOM regardless of status.
RefreshRe-fetches the BOM list from the server. The loading state is shown as a skeleton table (6 placeholder rows) — no spinner.

BOM Status Lifecycle

BOMs follow a three-stage lifecycle. Status badges are always localised — the badge label is never a raw English string hardcoded in the component.

Draft Active Obsolete
Status Badge (EN) Badge (TR) Meaning Usable in Work Orders?
draft Draft Taslak Under engineering review; not released to production. No
active Active Aktif Current approved version. Referenced by default in new work orders. Yes
obsolete Obsolete Kullanım Dışı Superseded; retained for traceability only. No

Light Mode Status Colors

Badge accent colours use dual-tone classes (text-emerald-600 dark:text-emerald-400) so they remain readable in both the dark Workstation theme and any light theme — useful on bright factory displays.

BOM Table

The table below the filter row lists all BOMs matching the current search and status filter. While data is loading, a skeleton table with six placeholder rows is shown — no spinner div.

ColumnContent
Expand (›)Chevron button. Click to expand the component list inline below the row. Expanding a second row automatically collapses the previous one.
ProductProduct name. Truncated with ellipsis if too long.
VersionVersion string in monospace (v1.0, Rev-B, etc.).
StatusLocalised status badge with icon. Active → green check; Draft → amber clock; Obsolete → grey alert.
ComponentsCount of component rows in this BOM.
Total CostEstimated cost per finished unit in USD ($X.XX/unit).
Effective DateDate the BOM became (or is scheduled to become) effective. Format automatically adapts to the active language.
ActionsPencil icon to edit; trash icon to delete (with inline two-step confirmation).

Multi-Select and List Style

A checkbox column sits to the left of the Expand chevron. The header checkbox selects or clears every row currently in view; per-row checkboxes toggle individual BOMs. When one or more rows are selected, a selected-count bar appears above the table with a × button to clear the selection instantly.

The table's checkboxes and overall row layout are driven by the same List Style settings used across every "My Workspace" screen (Settings → Appearance):

  • Table Corner Style — Sharp (flush, edge-to-edge) or Rounded corners on the table's outer container.
  • Multi-Select Shape — Circle or Square checkboxes.
  • Show Check Icon — when on, a selected checkbox additionally shows a white checkmark inside the filled shape.
  • Row Layout — Table (the default, single scrollable table with a shared header) or Cards (each BOM renders as its own independent bordered row, still with a selection checkbox).

One Setting, Many Screens

List Style is not specific to Bill of Materials — changing it in Settings → Appearance updates the checkbox shape, table corners, and row layout consistently across the BOM table and every other list-based screen in TotalApp.

Inline Component Viewer

Click the chevron at the left of any BOM row to expand it in place. The expanded panel shows a full component breakdown without opening a modal:

  • Header: component count and total estimated cost per unit.
  • Component table with columns: # (sequence), Material, Code, Qty, Unit, Scrap %, Notes.
  • BOM-level notes block (shown only if the BOM has notes).

All column headers in the expanded view are fully localised — they follow the active language automatically.

Click the expanded chevron (˅) to collapse. Only one BOM can be expanded at a time.

Creating and Editing a BOM

The same form is used for both create and edit. It respects Add Record Mode:

  • Modal (default): centred overlay with dark-glass panel (fc-modal-panel class) or light card (Enterprise style).
  • Panel: right-side slide-in, keeping the BOM list visible in the background. Edit always uses the modal regardless of this setting.

Form Fields

FieldTypeNotes
ProductDropdown, sourced from Manufactured Products (required)The Save button is disabled until a product is selected. A "+ New" button next to the dropdown opens Manufactured Products' Add Product form without losing the rest of the draft.
VersionText inputFree-form version string. Placeholder: v1.0.
StatusSelectDraft / Active / Obsolete. Options are localised. The select element uses colorScheme: 'dark' inside the modal (which is always on a dark scrim).
NotesTextareaOptional BOM-level engineering notes.

Component Rows

Click Add Component to append a row. Each row has:

FieldTypeNotes
Material NameTextHuman-readable name (e.g. "Friction Material Block").
CodeTextInternal part number (e.g. FMB-001).
QtyNumberQuantity per finished unit. Decimal values supported.
UnitTextpcs, kg, L, m, set, kit, etc.
Scrap %Number (0–100)Expected waste percentage for this component.
× (remove)ButtonRemoves the component row and re-sequences the remaining rows.

The sequence numbers (1, 2, 3 …) are recalculated automatically whenever a row is removed.

Dual Style Modal

The modal shell switches style along with the parent screen. In Workstation mode it uses fc-modal-panel (dark glass). In Enterprise mode it uses a white card with border-slate-200 shadow-xl. All field inputs, labels, and buttons also switch tokens. You do not need to do anything — the modal inherits the parent's style map automatically.

Scrap Rate Explained

The Scrap % field tells the system how much raw material is consumed beyond the nominal quantity due to process waste — off-cuts, rejected units, evaporation, etc.

Scrap Rate Formula

Reserved Qty = Nominal Qty × (1 + Scrap% / 100)

Example: 1 unit of "Friction Material Block" at 5% scrap → 1.05 units reserved per finished product.

Accurate scrap rates prevent two common problems:

  • Under-reservation — reserves less material than consumed, causing mid-run stockouts.
  • Over-reservation — ties up inventory unnecessarily and distorts cost calculations.

Review scrap rates periodically using actual production waste data. A ≥10% gap between estimated and actual warrants a BOM revision.

CSV Export

Click Export in the top toolbar to download the currently filtered BOM list as a CSV file. The export covers only the rows visible after applying the current search and status filter.

ColumnEnglish HeaderTurkish Header
1ProductÜrün
2VersionSürüm
3StatusDurum
4ComponentsBileşenler
5Total CostToplam Maliyet
6Effective DateGeçerlilik Tarihi

UTF-8 BOM Prefix

The CSV file is written with a UTF-8 BOM prefix () so that Microsoft Excel opens it correctly without requiring a manual import wizard — important when the Turkish locale produces characters like ş, ğ, ı, ö, ü, ç. The filename is always bill-of-materials.csv.

Localisation

Every user-visible string in the BOM screen is fully localised — no English or Turkish text is hardcoded.

ElementEnglishTurkish
Page eyebrowManufacturingÜretim
SubtitleBOMs totalBOM toplam
Export buttonExportDışa Aktar
Create buttonCreate BOMBOM Oluştur
Search placeholderSearch product or version…Ürün veya sürüm ara…
Status: ActiveActiveAktif
Status: DraftDraftTaslak
Status: ObsoleteObsoleteKullanım Dışı
Form title (new)Create Bill of MaterialsMalzeme Listesi Oluştur
Form title (edit)Edit Bill of MaterialsMalzeme Listesini Düzenle
Save button (new)Create BOMBOM Oluştur
Save button (edit)Update BOMBOM Güncelle
Delete confirmDelete?Silinsin mi?
Effective Date formatJan 15, 202515 Oca 2025

The Effective Date column formats the date automatically based on the app's active language — the format is never fixed to a single locale.

Deleting a BOM

Deletion is Permanent

A deleted BOM cannot be recovered. A two-step inline confirmation is required: click the trash icon, then confirm with Yes. Clicking No cancels without any change.

Before deleting, consider setting the BOM to Obsolete instead. Obsolete BOMs are retained for historical reference — important for quality audits (ISO 9001, IATF 16949) where the exact material composition of a shipped product may need to be traced back years later.

BOMs referenced by active or in-progress work orders should never be deleted. Cancel the work orders first, or retire the BOM to Obsolete and create a new version.

Settings & Customisation

SettingLocationEffect on Bill of Materials
Screen Style Settings → Appearance Workstation (dark glass) or Enterprise (white card) for the BOM list, table, and modal. Both the main table and the form modal switch styles simultaneously.
Add Record Mode Settings → Appearance "Modal" (default) shows the Create BOM form as a centred overlay. "Panel" shows it as a right-side slide-in. Edit always opens as a modal regardless of this setting.
Language Settings → General Switches all labels, status badges, filter pills, modal headings, form placeholders, and CSV column headers between English and Turkish.
Enable Manufacturing Mode Settings → App Modes Adds Bill of Materials (and all other MFG screens) to the left sidebar.
Manage Screens Sidebar → ⊕ icon Toggle Bill of Materials on or off independently of other Manufacturing screens.

AI Assistant

A collapsible AI Assistant panel lives on the right edge of the Bill of Materials screen. Click the tab (marked with a sparkle icon) to open it, and click it again — or the collapse control inside the panel — to close it. The panel keeps chat history, and offers New Chat, Fullscreen, and knowledge-attachment controls, the same pattern used by the AI Assistant panel on other TotalApp screens.

Ask it directly, or use one of the built-in suggested prompts:

  • Analyze component cost breakdown — get a per-component cost view of a BOM to see where the money goes.
  • Flag obsolete BOMs that need review — surface Draft and Obsolete BOMs that may need attention or promotion to Active.
  • Suggest ways to reduce total cost — cost-reduction ideas based on the current component list and quantities.
  • Compare versions of the same product — a side-by-side read on how two versions of a product's BOM differ in components or cost.

Opening the panel does not cover the BOM table. The main content area shrinks to make room on the right, so the table (and any expanded component view) stays visible at a narrower width while you chat. Closing the panel restores the table to full width.

The assistant answers using whichever AI provider is configured under Settings → Agentic, so it works whether your tenant is set up for the hosted API, a local CLI, or a fully client-side model.

Frequently Asked Questions

Can I assign multiple BOMs to the same product?
Yes. Multiple BOM versions can share the same product name. Only one should be Active at a time — work orders default to the Active BOM for the product. Others should be Draft (under review) or Obsolete (superseded).
Can I type a product name instead of picking one from the dropdown?
No. The product field is a dropdown backed by the Manufactured Products catalog, not a free-text field — this guarantees every BOM points to a real, existing product. If the product isn't listed yet, use the "+ New" button next to the dropdown to create it inline.
Can I delete a product that has an Active BOM?
Not while that BOM is Active. Manufactured Products blocks deleting a product referenced by an Active BOM, so you can't accidentally leave a live recipe pointing at a deleted product. Set the BOM to Draft or Obsolete first if you need to delete the underlying product.
What happens to active work orders if I edit an Active BOM?
Work orders already In Progress are not retroactively affected. New material issue requests from Released or Pending work orders will use the updated component list. If you need to change a BOM mid-run, consider completing or cancelling the current work order and creating a new one against the revised BOM.
Why does the Export button only export the filtered view?
The export reflects exactly what is visible on screen. If the status filter is set to "Active", only Active BOMs are exported. To export everything, reset the filter to "All" before clicking Export.
Is there a limit to the number of components per BOM?
There is no hard limit. In practice, BOMs with more than 50–60 components may slow down the inline expansion view on older devices. For complex assemblies, consider using sub-assembly BOMs — where sub-assemblies have their own BOMs and appear as single components in the parent BOM.
Why does the date format change when I switch language?
The Effective Date column follows the active app language setting (en or tr). In English the format is Jan 15, 2025; in Turkish it is 15 Oca 2025. This is automatic — no manual configuration is needed.
How does the skeleton loader work on initial load?
When the BOM list is first fetched from the server, the table area shows six placeholder rows with animated shimmer fills instead of a spinning circle. This prevents layout shift and gives a clearer sense of the incoming content structure. Once the data arrives, the skeleton is replaced with the real rows.