A sub-assembly part is the stock that a build produces. Build a project and the matching sub-assembly part's stock goes up by the number you built. That part then behaves like any other part, which means you can use it as a component in another project. This is how PartsBox builds products that have several levels of assembly.
A sub-assembly part is always counted in whole pieces. It cannot have a unit of measure of its own, even when some of its components are measured in meters or grams.
Say you make LED desk lamps, each built from three sub-assemblies:
Create a project for each one — "Control Module v1.1", "LED Module v1.3", "Enclosure v1" — and enable its sub-assembly part with a single click. Building each project adds stock to its sub-assembly part.
Now create a project for the finished lamp, "LAMP v1", and add the three sub-assembly parts as its components. PartsBox works out how many complete lamps you can build from the sub-assemblies in stock, and a build of the lamp draws those sub-assemblies down. Nesting has no fixed limit: a sub-assembly can itself be built from other sub-assemblies.
Sub-assembly stock added by a build records which build produced it. From the stock you reach the build, and from the build the components it consumed — with lot control, the exact lots. A finished module on the shelf traces back to its sources, and splitting a lot that came from a build keeps both halves pointing at that build.
You can also add or adjust sub-assembly stock by hand, for modules you already have on the shelf or assembled before you started recording builds.
When two versions of a sub-assembly are interchangeable — "Control Module v1.1" and "v1.2", say — put both in a meta-part and use the meta-part in the lamp's BOM. PartsBox then treats either version as a valid substitute, so a build uses whichever you have.
A single hierarchical BOM works for one product in isolation, but it falls apart when several products share sub-modules. Sub-assembly parts are separate, reusable parts instead: one sub-assembly can appear in many projects, several versions can coexist, and each behaves like a normal part — with its own stock, attachments, low-stock alerts, and attrition. You manage a shared module once and reuse it everywhere.
Sub-assembly parts start on the Essentials plan.