Production Reference Public

Work Centers

Base Production Work Centers A work center is a production resource — a machine, line, or station — with a throughput rating (capacity per hour) and a running cost (cost per…

Guide version: r1 Module version: 1.0.0 Updated: 2026-07-22 Estimated time: 12 min
Base Production

Work Centers

A work center is a production resource — a machine, line, or station — with a throughput rating (capacity per hour) and a running cost (cost per hour). You set them up once, and your routing points to them so ERPat knows where each manufacturing step happens and what it costs.

ℹ️
What this screen is. Work Centers is a lightweight master-data list — a simple add / edit / delete register of your physical production resources. There is no start / complete / approve workflow here: the only state a work center has is Active or Inactive. You reach it from the sidebar under Production → Work Centers (URL production/Work_centers).
⚠️
Two different Work Centers screens exist. This base list (menu Production, URL production/Work_centers, permission production_work_center) is the simple master register documented here. A separate, more advanced Work Centers (Mfg) screen (menu Manufacturing, URL production/WorkCenters, permission manufacturing_work_center) lives under the Advanced Manufacturing sub-area — it is a distinct feature with its own data and permissions. Don't confuse the two.

What a work center is

Think of a work center as any place where a production step actually happens: an assembly line, a CNC mill, a mixing vat, a packaging bench. For each one you record:

Name
The human label for the station (e.g. Assembly Line 1, CNC Mill A).
Code
An optional short reference identifier (e.g. WC-001).
Capacity / hour
How many units the station can process or produce in one hour — its throughput rating.
Cost / hour
The hourly operating cost of running the station, used in production costing.
Description
Free-text notes — what it does, its location, remarks.
Status
Whether it is currently in use (Active) or retired / paused (Inactive).

These records are the reference resources your routing points to. When a Bill of Materials operation (or an advanced Work Order operation) says "this step runs on this station," the station it names is a work center you defined here.

????
You only need to set work centers up once. After that, they appear in the - Select work center - dropdown wherever routing operations are defined, and their Cost / hour and Capacity / hour feed the downstream costing and scheduling logic.

The Work Centers list

The landing screen is a searchable, sortable DataTable (#work-centers-table) of every work center. Along the top-right is an Add Work Center button (shown only if you have create permission) and a table refresh button that reloads the data without a full page reload. The list is always sorted by Work Center name ascending.

List columns

ColumnMeaningRequiredNotes
code — Code The optional short reference identifier for the station. Optional Shows - when the code is blank.
title — Work Center The display name of the station. Required This is the default sort column (ascending).
capacity_per_hour — Capacity / hour Rated throughput, in units per hour. Optional Right-aligned; formatted via convert_number_to_decimal.
cost_per_hour — Cost / hour Hourly operating cost of the station. Optional Right-aligned; formatted as currency via to_currency(), so it renders in the tenant's configured currency.
status — Status Active or Inactive. Optional Center-aligned, shown as a coloured label (green = Active, gray = Inactive).
created_by — Created by The user who originally created the record. Display only Set automatically on create; resolved to a name via get_user_legal_name().
Options Per-row action buttons. A pencil (Edit) and an X (Delete), each shown only if you hold the matching permission.

The Add / Edit form

Adding and editing use the same modal form (production/Work_centers/modal_form). A hidden id field decides whether you are creating (empty) or updating (populated). The modal title reads Add Work Center in create mode and Edit Work Center in edit mode. The Work Center name field is autofocused when the modal opens, and the footer holds a single Save button (with a check-circle icon) — there is no close button in the footer; the × lives in the modal header, per house style.

Field reference

FieldMeaningRequiredNotes
title — Work Center The display name of the work center / station (e.g. Assembly Line 1, CNC Mill A). Required Required at both client (data-rule-required, message "This field is required.") and server (rule required). Autofocused when the modal opens. DB column title VARCHAR(255) NOT NULL. Labeled Work Center in the list; the default sort column.
code — Code An optional short identifier / reference code (e.g. WC-001). Optional Free text. Stored as an empty string when blank; shown as - in the list. DB column code VARCHAR(50) NULL. Not auto-generated and not enforced unique.
capacity_per_hour — Capacity / hour How many units the station can process / produce per hour — its throughput rating. Optional Numeric input (type=number, step=any). Passed through convert_number_to_decimal on save. DB column capacity_per_hour DECIMAL(15,2) NOT NULL default 0blank saves as 0.00.
cost_per_hour — Cost / hour The hourly operating cost of running this station, used for production costing. Optional Numeric input (type=number, step=any). Passed through convert_number_to_decimal on save; displayed via to_currency() in the list. DB column cost_per_hour DECIMAL(15,2) NOT NULL default 0blank saves as 0.00.
description — Description Free-text notes about the work center (what it does, location, remarks). Optional Textarea. Stored as an empty string when blank. DB column description TEXT NULL.
status — Status Whether the work center is currently in use (Active) or retired / paused (Inactive). Optional Select2 dropdown with two options: Active, Inactive. Defaults to active on new records and whenever left blank. DB column status VARCHAR(20) NOT NULL default 'active'.
id(hidden) Internal record identifier: empty for a new work center, populated when editing. System Hidden form field. Its presence / absence drives the create-vs-update permission check and whether created_by / created_at are stamped. Validated as numeric.
ℹ️
The Status control is a Select2 dropdown initialised in the modal script. If you ever script against it, test presence with .length (not :visible), per house convention.

Status: Active & Inactive

A work center has exactly two states, and it is not a workflow — you simply pick one in the Status dropdown. There is no submit / approve / complete progression. The "lifecycle" below is just the toggle between the two states.

Active
available / in use
Inactive
retired / paused

You move freely both ways: edit the record, change the Status dropdown, and Save. Active → Inactive to take a station out of service; Inactive → Active to bring it back.

ActiveWork center is available / in use. Default state for new records and the fallback whenever status is left blank. Rendered green (Bootstrap label-success).
InactiveWork center is retired, paused, or otherwise not currently available. Rendered gray / neutral (Bootstrap label-default).
⚠️
Status defaults to active whenever it is left blank — you cannot save a work center with no status. To take a station out of service, set it to Inactive rather than deleting it, so historical references from BOM and manufacturing-order operations stay intact.

Actions & permissions

Every button on this screen is gated by a permission key. Buttons only render when you hold the matching permission, and the server re-checks on save and delete.

ActionWhat it doesConfirm?Permission key
Add Work Center Opens the modal form in create mode (empty form; status defaults to Active). The button only renders when you have create permission. None production_work_center_create (button visibility; the modal re-checks and redirects if missing).
Edit (pencil) Opens the modal pre-filled with that work center's values for editing. Row button only renders if you have update permission. None production_work_center_update (row button + modal access; redirects if missing).
Save Submits the form to production/Work_centers/save. Server validates, builds the data, and inserts (no id) or updates (id present). On create it also stamps created_by and created_at. The new / updated row is pushed live into the list. None production_work_center_create (new) or production_work_center_update (edit) — re-checked server-side; returns no_permission if missing.
Delete (X) Soft-deletes the work center (sets deleted=1). Row button only renders if you have delete permission. Yes — standard delete confirmation. production_work_center_delete (row button + server check; returns no_permission if missing).
Table refresh Reloads the list from production/Work_centers/list_data without a full page reload. None None beyond page access (production_work_center).

Permission keys in full

production_work_center production_work_center_create production_work_center_update production_work_center_delete module_production
KeyGrants
module_productionMaster gate — the Production module must be enabled for the whole area to be reachable.
production_work_centerView the Work Centers page (constructor gate with_module production + with_permission production_work_center); also gates the sidebar menu item.
production_work_center_createSee the Add Work Center button and create / save a new work center.
production_work_center_updateSee the row Edit button, open the edit modal, and save an update.
production_work_center_deleteSee the row Delete button and delete a work center.

SOP · Add a work center

????
Goal: register a new production station so routing operations can point to it. Who: a production supervisor or manager with production_work_center_create.
  1. Open the screen

    In the sidebar, expand Production and click Work Centers (URL production/Work_centers).

  2. Start a new record

    Click the Add Work Center button at the top-right. The modal opens in create mode with the cursor already in the Work Center name field.

  3. Name the station

    In Work Center, type the station name (e.g. Assembly Line 1). This field is required — leaving it blank raises "This field is required."

  4. Add a code (optional)

    Enter a short Code such as WC-001 if you use them. It is optional and not enforced unique.

  5. Enter rates

    Fill in Capacity / hour (units the station can produce per hour) and Cost / hour (its hourly running cost) if known. Remember a blank saves as 0.00, not "unknown".

  6. Describe it (optional)

    Add a Description — what it does, where it is, any remarks.

  7. Leave status Active

    Keep Status on Active (the default) unless the station is already retired.

  8. Save

    Click Save. On success you'll see "The record has been saved." and the new work center appears immediately in the list without a page reload.

Other common procedures

Update a cost rate

  1. Find the station

    Go to Production → Work Centers and locate the row using the DataTable search / sort.

  2. Edit

    Click the pencil (Edit) icon on its row to open the pre-filled modal.

  3. Change the rate

    Update Cost / hour (and / or Capacity / hour) to the new value.

  4. Save

    Click Save; the row updates in place. Keeping these rates current keeps downstream costing accurate.

Retire a station without deleting it

  1. Edit the row

    Go to Production → Work Centers and click Edit on the target station.

  2. Set Inactive

    Open the Status dropdown and choose Inactive.

  3. Save

    Click Save. The row's status label turns to Inactive, but all historical references to it remain intact.

Remove a work center created by mistake

Only delete work centers that were created in error and are not referenced by any BOM operation or manufacturing-order operation. Deleting is a soft delete (it sets deleted=1); the record is filtered out of every list but never physically removed. To take a still-referenced station out of service, set it Inactive instead.
  1. Open the list

    Go to Production → Work Centers.

  2. Delete

    Click the X (Delete) icon on the row.

  3. Confirm

    Answer the confirmation prompt (quoted below). On confirm it POSTs to production/Work_centers/delete.

  4. Check the result

    On success you'll see "The record has been deleted." If the station is referenced elsewhere, the delete is blocked (see the danger box below).

Messages you may see

⚠️
Delete confirmation prompt: "Are you sure? In some cases, you won't be able to undo this action!"
Delete blocked (record in use): "The record is in use, you can't delete the record!" — the station is referenced by a BOM or manufacturing-order operation. Retire it (set Inactive) instead.
SituationMessageLang key
Required field missing (client)"This field is required." (on the Work Center name)field_required
Save succeeds (create or update)"The record has been saved."record_saved
Save fails"Sorry, an error occurred during processing the action! Please try again later."error_occurred
Delete succeeds"The record has been deleted."record_deleted
Delete blocked (in use)"The record is in use, you can't delete the record!"record_cannot_be_deleted
Delete confirmation"Are you sure? In some cases, you won't be able to undo this action!"delete_confirmation_message
No permission on save / deleteReturns a no_permission response; opening the modal / page without permission redirects.

Server-side validation: title is required; id must be numeric on save (or required|numeric on delete).

Where work centers are used

Work centers are pure reference data — this screen doesn't read or write Inventory tables. Instead, other parts of Production point at the work centers you define here:

Their Cost / hour and Capacity / hour then feed the downstream costing and scheduling logic wherever those operations are used. The Created by column is resolved by a read-only join to the users table.

ℹ️
Work Centers is a sibling of the other Base Production submenus: Overview, Bill of Materials, Manufacturing Orders, and Production Reports. See Core Concepts for how they fit together.

Good-to-know

This base list (menu Production, production/Work_centers, permission production_work_center) is separate from the advanced Work Centers (Mfg) screen (menu Manufacturing, production/WorkCenters, permission manufacturing_work_center). Different features, different data, different permissions.
Deleting sets deleted=1; records are never physically removed and stay filtered out by deleted=0 in every query.
Capacity / hour and Cost / hour are NOT NULL default 0, so a blank saves as 0.00. Enter the real values if you rely on costing.
Code is optional and not enforced unique — two work centers can share a code, and a blank code shows as - in the list.
Records are sorted by work center name (title ascending) at the model level, in addition to the DataTable's own default sort on the name column.
Cost / hour is displayed with to_currency() in the list, so it appears in the tenant's configured currency format even though it is stored as a plain decimal.
Was this guide helpful?

Report a content problem