Work orders

View, filter, lock and reschedule individual operations on the Gantt.

The Schedule view

Every work order (operation) appears as a coloured bar on a resource row in the Gantt. Bars are sized to their planned duration and positioned in absolute time. Non-working hours are striped out per resource calendar.

Zoom & navigate

  • Day, Week, Month, Quarter buttons set the visible time range
  • < and > arrows scroll by half a viewport
  • Today snaps back to the current day in your organisation's timezone
  • Scroll-wheel on the Gantt zooms in/out continuously
The sidebar utilisation panel re-computes for the visible window. As you navigate or zoom, percentages update to match what you're looking at.

Colour coding

Each Gantt bar is coloured by its manufacturing order, not by status. APS hashes the MO number into an 8-colour palette so that ops belonging to the same MO share a colour and you can trace them across the chart at a glance.

Operation status is shown as a badge in the right-side inspector when you click a bar:

  • Yellow — IN_PROGRESS
  • Green — COMPLETE
  • Grey — PENDING / SCHEDULED

On the Work Orders table, an operation with a slot on the calendar reads Ready only when its order's material is there. If the order is short or still waiting on a delivery it reads Planned instead: the work has a date, but it cannot be started yet, and the chip beside the step says how many short.

The axis is the plant's clock — the organisation's time zone from Settings — wherever you open it from, and each row's non-working shading follows that work centre's own calendar and zone as set in Odoo. A row on a Pacific calendar under an Eastern organisation shows its shifts three hours to the right, which is simply true.

Hovering a bar on the Gantt shows the step and its window, the order's deadline, and one line saying what set the start: it waited for the work centre to finish a previous job, it follows its own earlier step, or it follows a sub-assembly. If the order is short of material, the parts are listed with what is needed and how short.

Late operations and conflicts (capacity overload, material shortage, dependency violation) are surfaced in the conflict list above the Gantt and in the inspector — not as a bar colour.

Drag & drop reschedule

Grab any unlocked bar and drag it horizontally to change its start time, or vertically onto a compatible resource. A drop outside working hours lands on the next working minute when you were dragging to the right, and at the end of the previous shift when dragging to the left, so a bar never moves against the direction you took it. A drop onto another bar lands right after it, at the next working minute, even when that bar ends in the night. If the drop would need a locked operation to move, or an operation that is already being pushed, the bar snaps back and the message names the operation in the way.

Locked operations have a small lock icon and can't be dragged. Unlock from the inspector panel on the right.

Where a step sat in another plan

Coming from a plan comparison, the Gantt carries a Baseline chip in the toolbar. For the focused order, and for any order you hover, each step's position in the baseline plan is drawn as a dashed outline in its work centre's lane, joined to the step's bar in this plan by a dashed line. The tooltip gives both: where the step was and where it is now, with the shift in days, or that it is now not planned. Only one order at a time is drawn that way; the whole other plan is never overlaid. Close the chip to drop the baseline.

A move is saved as it is made

Dropping a bar, moving a step from the inspector, undo and redo are written to the scenario the moment they happen, the way a lock is. The step keeps its status, its material demands follow it and the parts it uses are checked against stock and incoming orders again; the run settings of the plan are untouched. If the server refuses, the bar goes back where it was and the page says "Move not saved". On Live a bar cannot be moved at all. A bar lands where it is let go, also after a quick drag across a neighbouring bar. If the plan was refreshed during the drag and the step is no longer in it, the drop is cancelled and the page says "Not moved".

A tab left open keeps up with the plan: every half minute, and again the moment the tab comes to the front, it asks whether the plan changed and fetches it only when it did. A change made in another tab or by someone else shows within that time, with a short "Plan updated" note; a tab's own changes never trigger it. Undo replays only steps that are still where it left them, and says how many it skipped.

Lock individual operations

Click any operation to open the inspector, then Lock. On the Work Orders page the padlock on a step does the same, and with orders ticked the Lock and Unlock buttons in the toolbar take every step of those orders at once, and Unlock all lets every lock of the plan go after a confirmation. It is one lock wherever it is set. A locked op:

  • Is never touched by the scheduler — not by Forward, Backward, or Bidirectional runs
  • Counts as an anchor in Bidirectional mode — other ops schedule around it
  • Survives sync from Odoo and applying a plan — only a click on the padlock changes it
  • Is saved the moment you click it, so a priority change, a reload or a run made straight after still sees it

Use locks for: machine-specific setups, certified-operator-only work, or any decision the scheduler shouldn't overrule.

You don't need a lock for work that is already running. An operation Odoo reports as in progress or finished stays where it is in every mode, and an operation in progress is planned for the work actually left on it — from logged time or quantity produced — so finishing ahead of estimate pulls the rest of the order forward.

Filtering & sorting on Work Orders page

Open Work Orders from the sidebar to see all MOs in a table. Filters available:

  • Status — All / Confirmed / In Progress / Done
  • Material status — All / Available / Partial / Waiting
  • Delivery — Late / At risk / On time. Late: a step ends after the order's deadline. At risk: none does, but one ends less than a day before it. An order counts with its sub-assemblies and takes the worst of them: late if any is late, at risk if none is late but one is at risk. The Late and At Risk cards on the dashboard open this page with the filter set.
  • Lock — Any lock / Has locked steps: the orders that hold a lock a planner can lift, in the order itself or in a sub-assembly under it. Tick one and press Unlock to lift them, sub-assemblies included.
  • Search — matches MO number, sale order, customer name

Planned finish is the end of the order's last dated step, red when it is after the deadline, "Not planned" when no step has a date. The sales order header shows the same for the whole sales order: the latest finish over every order under it, sub-assemblies included, wherever they are in the list, and names the order that finishes last. When a filter, a search or paging shows only some of a sales order's orders, the header says so: "1 of 14 MOs". It is the date the note on the Odoo sale order carries after a publish. A date outside the current year is written with its year.

A step reads READY or PLANNED once a run has placed it or has looked at it and left it where it was. ODOO DATE is a step no run has touched yet, still on the date Odoo gave it; NOT PLANNED has no date at all. A small held badge marks a step the last run found inside its freeze window and left in place; run with a shorter window, or with No freeze window, to replan it. Running and finished steps show a grey padlock: they stay where they are without a lock.

By default the table shows only root MOs (top-level) and groups child sub-assemblies under their parent. Sort by any column — the sort persists across navigations until you change it.

Priority and rush orders

Priority sits on the MO and is inherited by its sub-assemblies. Click the P500 badge on a row to change it for the MO and everything under it, or the badge on a sale order header to change the whole order. It applies to whichever dataset you are looking at — live or a scenario — and a sync from Odoo will not overwrite a priority you set here unless it changed in Odoo too.

The same dialog carries Rush order. A rush order is planned before everything that has not started, whatever the run is sorted by, and rows carrying it show a red rush badge. A priority of 100 alone does not do this: a late order has the earlier due date and still goes first. See Scheduling for what a rush order does and does not override.

See Materials for how priority interacts with FIFO supply allocation, and Capacity for when the answer is not priority at all but a work centre with no room.

APS 4 Manufacturing

Built by Avalah

Odoo Gold Partner

APS 4 Manufacturing

Built by Avalah

Odoo Gold Partner