Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,75 +1,76 @@
=============================
Manage semi-finished products
=============================
===============
Multilevel BoMs
===============

A *semi-finished product*, also known as a *subassembly*, is a manufactured product that is used as
a component in another product's bill of materials (BoM). Semi-finished products are used to
simplify complex :abbr:`BoMs (Bills of Materials)` or to more accurately represent a manufacturing
flow. A :abbr:`BoM (Bill of Materials)` that contains semi-finished products is referred to as a
*multilevel BoM*, where the main *top-level product* and its subassemblies are distinguished.
.. |BOM| replace:: :abbr:`BoM (Bill of Materials)`
.. |BOMs| replace:: :abbr:`BoMs (Bills of Materials)`

Configure semi-finished products
================================
Use a multilevel bill of materials (BoM) when a manufactured product is part of another assembly.
This method nests |BOMs| within other |BOMs|, organizing complex products while simplifying
manufacturing by defining each procurement and production step separately.

To set up a multilevel :abbr:`BoM (Bill of Materials)`, the top-level product and semi-finished
products must be configured. Therefore, the first step is to create the semi-finished products and
their :abbr:`BoMs (Bills of Materials)`.
Sublevel |BOMs| (subassemblies or semifinished products) streamline these production workflows, and
are beneficial when the subassembly is used across multiple finished products (meaning they'd appear
on multiple top-level |BOMs|). The more complicated a product is to build or procure, the more value
a multilevel |BOM| can provide.

.. seealso::
:doc:`../basic_setup/bill_configuration`
Create a multilevel BoM
=======================

To set up a multilevel |BOM|, the top-level product and sublevel products's |BOMs| must be created.
If starting from scratch, build the |BOMs| from the bottom up. Start with the lowest-level product
|BOMs|, then include those products as components in higher-level |BOMs|.

For example, a printed circuit board (PCB) for a custom keyboard would be composed of hundreds of
electronic components, such as transistors, resistors, and capacitors. Instead of listing all of
those components out, a sublevel product and |BOM| for `PCB` is created, to track the quantities of
transistors and other small components, without needing to overcrowd the toplevel |BOM| for custom
keyboard with listing them. Instead, the custom keyboard's |BOM| consists of an assortment of
components and sublevel |BOMs| alike, like keycaps, switches, the PCB, and keyboard plate.

.. image:: sub_assemblies/semifinished-product-bom.png
:align: center
:alt: A bill of materials for a semi-finished product.
:doc:`Learn how to build a simple bill of materials <../basic_setup/bill_configuration>`. For the
PCB, this would include the transistors, resistors, and other components.

Create the top-level bill of materials (BoM)
============================================
.. image:: sub_assemblies/sublevel-bom.png
:alt: A bill of materials for a PCB.

After the semi-finished products are fully configured, navigate to :menuselection:`Manufacturing
--> Products --> Products`. Then, :guilabel:`Create` the top-level product. Configure the product's
specifications as desired, and be sure to :guilabel:`Save`.
After the sublevel products (like the PCB, keycaps, and keyboard plate) are fully configured, create
the top-level product by navigating to :menuselection:`Manufacturing --> Products --> Products`, and
then selecting :guilabel:`New`. From here, configure the product's specifications as needed.

Once the top-level product is configured, click the :guilabel:`Bill of Materials` smart button on
the product form, then click :guilabel:`Create` to make a :abbr:`BoM (Bill of Materials)` for the
top-level product. Then, simply add the semi-finished products to this :abbr:`BoM (Bill of
Materials)`, along with any other necessary components.
Once the top-level product (the keyboard) is configured, click the :guilabel:`Bill of Materials`
smart button on the product form, and then select :guilabel:`New` to make a |BOM| for the top-level
product. Add the sublevel products to this |BOM|, along with any other necessary components.

.. image:: sub_assemblies/custom-computer-bom.png
:align: center
:alt: A bill of materials for a top-level product, containing a subassembly component.
.. image:: sub_assemblies/top-level-bom.png
:alt: A bill of materials for a keyboard, containing a bill of materials for a PCB.

Manage production planning
==========================

There are several methods to manage manufacturing order automation for products with multilevel
:abbr:`BoMs (Bills of Materials)`.
The two options below are two of the best ways to manage manufacturing order automation for products
with multilevel |BOMs|.

.. note::
Semi-finished products are specifically used to manage manufacturable products with multilevel
BoMs. If a BoM is being created simply to organize components or bundle sellable products,
using :doc:`Kits <kit_shipping>` is the more appropriate option.
Complex |BOMs| are specifically used to manage products that require manufactured components. If
a BoM is being created to organize components or bundle sellable products, :doc:`use a kit
<kit_shipping>` instead.

To automatically trigger manufacturing orders for semi-finished products after confirming a
manufacturing order for the main product, there are two options:
To automatically trigger manufacturing orders for sublevel products after confirming a manufacturing
order for the main product, there are two options:

- **Option 1 (recommended):** Create *Reordering Rules* for the semi-finished products and set both
the minimum and maximum desired stock quantities to `0`.
- **Option 1 (recommended):** Create *Reordering Rules* for the sublevel products and set both the
minimum and maximum needed stock quantities to `0`.
- **Option 2:** Activate the :guilabel:`Replenish on Order (MTO)` and :guilabel:`Manufacture` routes
under the :guilabel:`Inventory` tab of the sublevel product's product form.

.. seealso::
:doc:`../../purchase/products/reordering`
:doc:`../../inventory/warehouses_storage/replenishment/mto`

- **Option 2:** Activate the :guilabel:`Replenish on Order (MTO)` and :guilabel:`Manufacture`
routes under the :guilabel:`Inventory` tab of the semi-finished product's product form.

Option 1 is more flexible than Option 2 and is therefore recommended. Reordering rules do not
directly link demand to replenishment, and therefore allow stocks to be unreserved and redirected
to other orders, if necessary. The Replenish on Order (MTO) route creates a unique link between the
semi-finished and top-level products, exclusively reserving quantities for the confirmed top-level
manufacturing order.

Regardless of the method chosen, semi-finished products must be fully manufactured before
manufacturing can begin on the top-level product.
Option 1 is more flexible than Option 2 and is recommended. Reordering rules do not directly link
demand to replenishment, allowing stock to be unreserved and reassigned as needed. The Replenish on
Order (MTO) route, however, uniquely links sublevel and top-level products, reserving quantities for
the confirmed top-level manufacturing order.

.. image:: sub_assemblies/semifinished-on-mo.png
:align: center
:alt: A manufacturing order for a top-level product.
In both methods, sublevel products must be fully manufactured before starting the top-level product.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.