Skip to content

Pre-assembled stock

Assembly bills, like finished goods, can carry their own pre-assembled stockPre-Assembled InventoryStock of finished goods and assembly bills already built and on the shelf, counted per location. A work order draws assembly bills from the shelf first, building fresh only if it runs short; an order consumes a finished good's shelf before its components. Read more → . When a parent bill expands the assembly during execution, the assembly’s shelf is consumed first; only the remainder pulls the assembly’s own components.

The mechanics mirror the finished-good pre-assembled feature, with one important difference: the assembly’s shelf is consumed inside the recursive expansion, at the layer where the assembly sits.

  • What it is
  • The drawdown layer
  • Multi-layer drawdown
  • Adjusting the shelf with Quick build
  • Every change names a location
  • Negative shelves
  • Restoration on cancel and refund

Pre-assembled stock is bundles you have already built: not yet incorporated into a sellable product, but ready to be used.

It is stored per location, and the shop-wide figure you see on the list is the sum of those per-location rows. The two always agree, including for fractional quantities.

Assembly bills have no Shopify variant, so this count is purely Assemblified’s. Nothing is pushed to Shopify when an assembly bill’s pre-assembled stock changes. The finished goods that use the assembly are a different matter: their availability is recomputed from the tree, so an assembly’s shelf can move what Shopify offers for the products above it.

When a parent bill fires, the recursion produces a per-layer cascade of pre-assembled drawdown:

Finished good B (no pre-assembled)
└── Assembly S (5 in pre-assembled)
└── Assembly T (2 in pre-assembled)
└── Raw R

Order 8 units of B. Expansion:

  1. B’s layer. No pre-assembled. Order quantity 8.
  2. Recurse into S with multiplier 8.
  3. S’s layer. Consume from S’s shelf: min(5, 8) = 5. Shelf → 0. Remainder = 3.
  4. Recurse into T with multiplier 3.
  5. T’s layer. Consume from T’s shelf: min(2, 3) = 2. Shelf → 0. Remainder = 1.
  6. Recurse into R with multiplier 1.
  7. Emit: Raw R × 1.

Net effect for the order:

  • B: 8 ordered.
  • S’s pre-assembled: −5.
  • T’s pre-assembled: −2.
  • Raw R: −1.

This stacking is the point of multi-layer assemblies: every layer with pre-assembled stock is an opportunity to not go all the way down to raw materials.

There is one dialog for this, Quick build, and three ways in:

  • From the assembly bill page — the Overview tab’s Stock by location card. The pencil beside a location’s pre-assembled figure opens Quick build already set to that location and to the correction reason. The title bar’s Pre-manufacture action opens the same dialog without a preset.
  • From the Assembly Bills list — the row’s ⋯ menu has Quick assemble and Adjust pre-assembled, and both open the same dialog (the second already set to the correction reason). The optional Assemble column puts the same entry on every row.
  • For several bills at once — the bulk bar’s Inventory group has Quick assemble and Adjust pre-assembled.

Quick build asks for a location, a quantity and a reason, and you can enter the quantity either as Adjust by (how much the count changes; use a minus sign to reduce it) or Set to (the count you are left with). The reasons are:

ReasonWhat it does
Manufactured / builtComponents come out of stock and finished units go on the pre-assembled shelf. Pre-assembled sub-components are used up first.
Correction (count)Corrects the pre-assembled count only. No component stock moves, and the count never goes below zero.
Disassembled: parts back as assembliesTakes units off the shelf and returns nested assemblies as pre-assembled units. Only the direct raw materials go back to stock.
Disassembled: parts back as materialsTakes units off the shelf and returns every component, down to the raw materials, back to stock.
Damaged / written offTakes units off the shelf and returns nothing. No component stock moves.

Which reasons are offered depends on the direction of your change: building up offers Manufactured / built and Correction; reducing offers the two disassembly reasons, Correction and Damaged / written off. The reasons that move components show a Preview of exactly what will be consumed or returned before you confirm.

On a build you can also type what was actually consumed instead of the recipe’s amounts — see Enter consumed quantities manually.

A pre-assembled change always belongs to a location. If the change does not name one and your shop has no default location configured, it is refused rather than applied somewhere arbitrary. The message says so: name a location, or set a default location for the shop in Settings.

This applies to every path, not just the dialog: an order’s draw, a cancellation’s restore and a manual putaway all name a location or fail.

A shelf can go below zero, and when it does that is an honest record of a deficit rather than an error. The clearest case is an assembly set to only consume pre-assembled: an order that needs more than is on the shelf takes the whole demand from the shelf anyway, because the whole point of that setting is that demand must not fall through into the materials. The shelf then reads, say, −5, meaning “five units were sold against this assembly beyond what was physically there”.

Nothing clamps that back to zero, and a partial restore lands where the arithmetic says it should: −5 with a +3 restore is −2, not 0.

Two exceptions are worth knowing:

  • A Correction (count) in Quick build will not take the count below zero. Subtracting 6 from a shelf of 4 lands on 0. Use Damaged / written off if you genuinely need to record a write-off that leaves the shelf negative.
  • If your shop has Allow negative inventoryAllow negative inventoryA shop-level setting that decides whether Assemblified-managed quantities — virtual raw materials, pre-assembled stock, dynamic capacity — can stay below zero, or get clamped at 0. Read more → turned off, a change that would drive the shelf below zero is refused by name before anything moves.

You clear a deficit the way you would top up any shelf: build more, and the balance moves back toward zero and beyond.

When the parent bill is cancelled or refunded, the assembly’s shelf may or may not be replenished, depending on the cascade rule. Briefly:

  • Parent’s Keep assembled on return is on: the finished good’s pre-assembled gets +N. The assembly’s shelf is unchanged.
  • Parent off, assembly’s flag on: the assembly’s shelf gets +N × its reference quantity. The assembly’s components stay inside.
  • Parent off, assembly’s flag off: the assembly’s components return to stock. The assembly’s shelf is unchanged.

Full coverage in Keep-assembled cascade.

  • The shelf is per layer in the recursion. Each assembly node has its own opportunity to absorb the requirement before falling through.
  • No Shopify-side stock for assembly bills. The Available in Shopify column on the assembly bill page stays blank with a reason rather than showing a zero. There is no Shopify inventory to adjust.
  • Adjusting the shelf is not the same as building. Correction (count) changes only the number. If you actually assembled units, pick Manufactured / built so the components come out of stock too.