Component availability, FIFO supply allocation and how priority decides who gets the parts.
For every manufacturing order, APS reads its Bill of Materials (BOM) from Odoo and computes the components and quantities needed. It also reads:
These come from the same sync that pulls MOs and work centers — no extra setup needed once the connector is configured.
In the scheduler modal, switch on Respect material availability. Every MO is then delayed until all its BOM components are available.
Available means: in stock or arriving on a PO before the MO needs it. APS computes a per-MO “material floor” date and prevents any operation of that MO from starting earlier.
MATERIAL_LATE / MATERIAL_SHORTAGE conflicts, rather than moving the date quietly.When two MOs need the same component and there's not enough to go around, the higher-priority order claims first. Within the same priority, the earlier due date wins. This mirrors the scheduler's sort order — the order you see on screen is the order APS hands out parts.
Concretely: APS walks every MO in scheduling order. For each component it consumes from the supply ledger in PO-arrival order (first-in-first-out). If existing stock fills it, no waiting. If only future POs cover it, the MO's material floor is the latest PO arrival date.
APS flags two material conflict types on operations:
Both surface in the conflict list above the Gantt. Click the operation to see which component is the bottleneck and what date is needed.
Open Materials from the sidebar to see every BOM component across the dataset. Columns:
Filter by Status (All / Shortage / OK) or use the search box to match by code or material name. This is the fastest way to spot the part that's holding up your plan.
If a component has no stock and nothing on order, the order that needs it is reported as a shortage. It used to be treated as unconstrained, which meant the worst case — nothing on hand, nothing coming — was the one case that raised no warning at all, while a part you were merely short of did.
One exception: a component that another manufacturing order in the same plan produces is not a shortage. The sub-assembly is sequenced ahead of the order that consumes it, so the part arrives from your own shop floor rather than from stock.
Shortages are shown for the dataset you are looking at. A scenario reports its own, and Live reports Live's.
By default a shortage does not stop the order being scheduled — it is placed and flagged, so production has a date and purchasing can see what to chase. On the scheduler's Custom tab you can ask for the opposite, and have orders with no supply left out of the plan entirely. That withholds the orders above them too: an end item whose sub-assembly has nothing to make it from cannot be finished either, and giving it a date only fills the floor with work that cannot become a finished product. When you publish, the Unplan what this plan leaves out option carries the same decision into Odoo, so those work orders lose their dates there too rather than keeping a start nothing supports.
To get a specific MO first pick of parts:
Run the scheduler after changes and you'll see other MOs absorb the downstream impact (waiting longer, or hitting MATERIAL_SHORTAGE).