🔩 Production routing — settings and capacity rules
Updated
Routing adds operations, labour and capacity to the production process. It does not replace the bill of materials: the route explains how the product is made, while the BOM explains what is consumed.
How the process works#
A route is created in Production → Dictionaries → Routings (Routing). The route header names the Product and can be disabled with Disabled. Its operation rows hold Sequence, Name, Work center, Setup minutes and run minutes per unit.
When a ProductionOrder is expanded, the system copies the first live route for the product into the order's Operations rows. Run minutes on the order are calculated from the route's minutes per unit multiplied by the order quantity in the product base unit.
Settings#
| Setting | Where | Empty or off | Filled or on |
|---|---|---|---|
| Auto-expand BOM | Production → Settings → Production settings | A new order stays empty until Expand bill of materials is pressed | A new order fills components and operations automatically if it has no lines yet |
| Default output location | same card | If the order Output cell is empty, the product lands on the issue Location | New orders copy this cell to Output cell; output lands there |
| Capacity, min/day | Production → Dictionaries → Work centers | No capacity ceiling, no overload warning (unless a shift calendar is set) | Minutes of ONE machine per day, every day of the week. Ignored when the center has a Shift calendar |
| Machines | work center | One machine | Identical machines in parallel: the day's capacity is one machine's minutes × machines. One operation still runs on one machine |
| Shift calendar | work center; calendars in Production → Dictionaries → Shift calendars | Capacity, min/day applies every day, weekends included | Each day gets the calendar's minutes for its weekday (Monday, min … Sunday, min). A day with 0 is closed: nothing is scheduled on it |
| Calendar exceptions | Production → Dictionaries → Calendar exceptions | The weekday decides | A dated row wins over the weekday: Minutes 0 closes a holiday, a positive number opens an overtime day or a short shift. One row per calendar and date |
| Priority | production order | 0, normal | Replan shop places orders with a higher number first |
| Need by | production order | No date: placed after the dated orders, never reported late | Replan shop places earlier dates first (after priority) and names the orders that finish after this date |
| Hourly rate | work center, or the operator's position | Labour cost is zero if no position rate is available | Confirmed minutes add labour cost to the finished product |
| WIP account | accounting settings | Register posting works, but no WIP GL leg | Release posts Dr WIP / Cr inventory; finish reverses it |
| Labor absorbed account | accounting settings | Labour still changes product cost, but no GL absorption leg | Finish posts Dr inventory / Cr labour absorbed |
Example with numbers#
A work center has Capacity, min/day = 100. A route has two operations: sequence 10 for 80 minutes and sequence 20 for 80 minutes. An order is dated 24 September.
| Action | Result |
|---|---|
| Expand bill of materials | two operation rows appear on the order |
| Schedule operations | first row keeps 24 September, second row moves to 25 September |
| Release to shop before scheduling | warning shows 160 minutes against 100 on 24 September, but the order is still released |
| Confirm operations | unconfirmed rows get standard time and today's date; confirmed rows are left untouched |
With a shift calendar: Monday to Friday 480 minutes, nothing at weekends, a holiday on Monday 28 September, and Machines = 1. An order dated Friday 25 September has two operations of 400 minutes.
| Operation | Placed on | Why |
|---|---|---|
| sequence 1 | Fri 25 Sep | 400 ≤ 480 |
| sequence 2 | Tue 29 Sep | Fri is full (800 > 480); Sat and Sun are closed; Mon is a holiday |
With Machines = 3 the same center takes three 400-minute operations of one sequence on Friday: each goes to its own machine. Machines are planned one by one, not counted: with Machines = 2, three operations of 300 minutes put two on Friday (machine 1 and machine 2) and the third on Monday, although 900 ≤ 480 × 2 — 300 more does not fit on either machine. Schedule operations writes the Machine number on each operation row. A single 600-minute operation is placed on the first working day and warned as longer than one machine's shift, even if the day's total fits: one operation does not split across machines.
For labour, if the order consumed 100 of material and one confirmed operation has 90 actual minutes at 120 per hour, labour is 1.5 × 120 = 180. The finished layer costs 280.
Replanning the shop#
Schedule operations plans one order against the queue the other orders already hold. Replan shop (a command on any draft or released production order, asks for confirmation) plans ALL released orders again, together:
- Orders are taken by Priority (higher first), then Need by (earlier first; no date last), then order date, then number.
- Each order is placed from today, or from its own date if that is later, sequence by sequence, on the first machine with room that day — the same rules as Schedule operations (calendar, machines, closed days).
- Capacity is shared only among the orders of the run: the old plan of the other orders is not read, so an order does not block itself with its own previous dates. Confirmed operations keep their day.
- The message counts the orders and operations re-placed and names the orders that finish after their Need by. Nothing is refused: the plan is advice.
Example. One machine of 480 minutes. Order A (released first, need by Friday) holds Friday with 400 minutes. Order B is released with Priority 5 and 400 minutes. Replan shop on Friday puts B on Friday and A on Monday, and names A as late (need by Friday, ready Monday).
Boundaries and edge cases#
- No route is not an error. The order expands components and leaves operations empty.
- The route is stamped afresh by Expand bill of materials. Hand edits on the order are overwritten by that command.
- Operation completion is the Completed on date, not the number of minutes. Zero-minute work can be complete.
- Negative actual minutes refuse finishing; the message names the operation number.
- Capacity is a warning, not a prohibition. Overtime and a second shift are business decisions outside the model.
- Existing work centers behave as before. Machines empty counts as one, and with no calendar the whole-day Capacity, min/day applies every day. If you set Machines without a calendar, Capacity, min/day becomes the minutes of one machine.
- A closed day never gets work, even an operation longer than any day; it waits for the next working day.
What is posted#
Routing itself posts nothing. It affects ProductionOrder posting through confirmed labour and scheduling warnings. Released writes component consumption and WorkInProgress; Finished writes the finished stock, removes WIP and adds labour cost when operations are confirmed.
What's not there yet#
- The replan is greedy: orders are placed one after another by the rules above, first fit by day. There is no search for the plan with the fewest late orders, no splitting of an operation across days, and no automatic replan on a schedule — press Replan shop when the plan should be rebuilt.
- Machines of one center are identical and interchangeable; there are no shift start and end times within the day, only minutes.
- No route version selection by date. The service takes the first live route for the product.
- No separate labour document is created by shop-floor confirmation; payroll stays in the HR contour.
Same topic for other readers: User · Developer