--- pdfexport: true alias: tutorials-bom-quantity-variations timetoread: true glightbox: false description: "This documentation explains how to define and manage quantities within a Bill of Materials, including dependent, fixed, and tolerance settings," --- # Quantity Variation This tutorial provides an overview of the different ways the quantity of a BOM Item can be defined and configured in Critical Manufacturing MES. It covers quantities dependent on the main **Material**, fixed quantities, negative quantities for by-products, as well as specific configurations such as quantity tolerances and reference items. ## Overview This tutorial will explain the key concepts related to how BOM Item quantities can be defined and managed, including: - BOM Item consumption dependent on main **Material** quantity - where the required quantity scales with the quantity of the main **Material**. - BOM Item consumption with fixed quantity - where the required quantity remains constant, regardless of the main **Material** quantity. - BOM Item consumption tolerances - allowing flexibility in meeting exact quantity requirements. - Negative quantity (by-products) - where the **BOM** defines **Materials** produced as a result of the process. - BOM reference Items - used for reference or informational purposes without consumption in MES. - Option to capture - enabling the recording of specific values or details during assembly. The tutorial concludes with a practical use case that brings these concepts together, demonstrating their application and the necessary configurations to support them. ## Dependent Quantity The dependent quantity configuration is the most common approach for BOM Items. In this scenario, the required quantity of a BOM Item is directly proportional to the quantity of the main **Material** being assembled. This behavior covers situations where, for example, assembling 1 unit of a main **Material** of a given **Product** requires X units of a specific consumable **Product**. Main configuration requirements: - Units of the **Product** to be assembled - BOM Item **Products** and their substitutes - Amount of BOM Item units to be consumed ## Fixed Quantity The fixed quantity configuration applies when the required amount of a BOM Item is constant, regardless of the main **Material** quantity being processed. For example, a quality test kit might be included with the **Product**. Whether 1 or 100 units are assembled or tested, only a single kit is added for the final customer. This applies for Assemble, Disassemble and Replace & Disassemble operations, and is also considered for Material Transfer Requirements and BOM Explosion. Main configuration requirements: - Units of the **Product** to be assembled - BOM Item **Products** and their substitutes - Amount of BOM Item units to be consumed - Assembly Type must be Explicit Long Running, Automatic at Track-In or Automatic at Track-Out ## Tolerances Tolerances allow for flexibility in BOM Item consumption, enabling the recorded consumed quantity to differ from the theoretical quantity. This is available for **BOMs** with the Materials scope with manual assembly types, and is in use by default in BOM Weigh and Dispense. This supports use cases, as for example: an industrial air conditioning unit BOM specifies 1.2 m² of insulation foam based on CAD measurements. In practice, operators may use 1.6-1.8 m² due to manual cutting inaccuracies or overlapping pieces to ensure coverage. Main configuration requirements: - Units of the **Product** to be assembled - `Use Tolerances` property set to true - BOM Item products and quantities - Lower and upper tolerance values (percentage-based set from 0 to 100) for all BOM Items - If the **Product** is discrete, tolerances are also supported. If no tolerances are defined, the required quantity is rounded up if positive or rounded down if negative. If tolerances are defined, the lower limit is rounded down and the upper limit is rounded up. - Substitute BOM **Products**, where applicable Regarding the Disassemble operation, the calculated quantities are the theoretical ones, and tolerances are applied in order to allow the user to disassemble the same quantity that was assembled before. Regarding the Replace, BOM Item tolerances are applied to the quantity available for replacement. ## Negative Quantity Negative quantities support scenarios where the production process also produces by-products that need to be tracked in the system. This applies to **BOMs** with the Materials scope only. Also, Transfer Requirement for material ignore the negative BOM Item and it is not possible to add negative BOM Item for Material deviation in a **Checklist**. The key difference from normal BOM Items is that consumption happens in reverse: the by-product quantity increases during assembly and decreases during disassembly. To illustrate an example, consider a juice production, where processing fruit yields peel by-products. These peels may be collected for essential oil extraction or biofuel production. Main configuration requirements: - Units of the **Product** to be assembled - BOM Item **Products**, no substitutes are not allowed for negative BOM Items - Negative quantity value representing the by-product yield ## Reference Items A reference item is a BOM Item which consumption is not recorded in MES. It is included purely for informational or display purposes within the **BOM**, ensuring that relevant, non-consumable items are visible in the assembly context. Main configuration requirements: - Units of the **Product** to be assembled - BOM Item **Products** and their substitutes - Flag option `IsReference` set to True for the Reference Items - Any informational quantity (optional, since it will not be tracked in the system) ## Option to Capture The Option to Capture setting is independent of whether the BOM Item is to be consumed or is just a reference. It enables the collection of specific data during assembly, which is associated with the BOM Item. This feature is available for **BOMs** with Materials and Parts scope. It does not apply to substitutes, which inherit the capture settings from the main BOM Item. There are some use cases where this feature might be relevant: - Capturing lot, batch, or serial numbers for traceability, with or without actual consumption. - Recording details for external components not tracked as materials in MES, such as cable ties used in machine assembly. - Enforcing manual entry of specific data during the assembly of certain components. Main configuration requirements: - Units of the **Product** to be assembled - BOM Item **Products** and their substitutes - Enable the `Information Capture Required` field for the item, and set the `Information Capture` data ## Use Case For this use case, a more specific manufacturing context will be presented, as these concepts are easier to assimilate with a actual production process. Consider a manufacturing company that assembles Industrial Coffee Machines (**Product**: CMC-5000). Each unit requires a set of components, some of which are consumed proportionally to the quantity of machines, while others are fixed. The process may also produce by-products, allow tolerances for certain components, include items for reference only, or require optional data capture for traceability. At the final stages of the production processes, the following steps and requirements must be considered: | Step | BOM Item Functionality | Product | Quantity | Extra Settings | Description | |--------------------|--------------------------------|----------------------------------|-------------------------|----------------------------------------|--------------------------------------------------------------------| | Grinder Assemble | Option to Capture | Coffee Grinder Module | 1 per unit | Capture Serial Number | Serial number recorded for warranty and traceability. | | Thermal Insulation | Tolerances | Thermal Insulation Foam | 1.2 m² per unit | Lower: 0% ; Upper: 50% | Allows extra usage due to manual cutting imprecision. | | Machine Testing | Negative Quantity | Coffee Grounds Waste | -0.5 kg per unit | — | Produced during testing, collected and sold to composting partner. | | Boxing | Reference Item | User Manual | 1 per unit | Display only | Included in packaging; not tracked for consumption. | | Boxing | Fixed Quantity | Water Quality Test Kit | 1 kit (fixed per order) | — | Used once per production order for water flow testing. | For simplicity, the overlaying structure includes a general **Service** provided by a shared **Resource**, which is required by all **Steps**. In addition, there is a storage **Flow** and a **Step** dedicated to gathering all component Materials. ### Configuration Basic configurations like **Calendar**, **Facility**, **Area**, **Resource**, and **Service** are assumed to be pre-defined and are not detailed here. ??? info "Useful Documentation" - [[tutorials-howto-createcalendar]] - [[tutorials-howto-createfacility]] - [[tutorials-howto-createarea]] - [[tutorials-howto-createservice]] - [[tutorials-howto-createresource]] - [[tutorials-howto-associateservicetoresource]] - [[tutorials-howto-addvaluetosmarttable]], for populating the [[servicecontext-st]] Smart Table #### Steps and Flows The general configuration of the sequential main production **Flow** and **Step** is detailed in the images below. === "Machine Flow" ![Machine Flow](images/bom_quantity_flow.png) === "Grinder Assemble Step" ![Grinder Assemble Step](images/bom_quantity_step1.png) === "Thermal Insulation Step" ![Thermal Insulation Step](images/bom_quantity_step2.png) === "Machine Testing Step" ![Machine Testing Step](images/bom_quantity_step3.png) === "Boxing Step" ![Boxing Step](images/bom_quantity_step4.png) The general configuration of the sequential storage **Flow** and **Step** is detailed in the images below. === "Storage Flow" ![Storage Flow](images/bom_quantity_storage_flow.png) === "Storage Step" ![Storage Step](images/bom_quantity_storage_step.png) A few details worth mentioning are the following: - The property `IsDecimalQuantityAllowed` is set to true for the Storage Step as this **Step** will deal with decimal quantities for **Materials** of the **Product** Thermal Insulation Foam and Coffee Grounds Waste. - Both Storage and Machine Flows are sequential. !!! info "Useful Documentation" - [[user-guide-create-step]] - [[tutorials-howto-createstep]] - [[user-guide-create-flow]] - [[tutorials-howto-createflow]] #### Product For this scenario, six **Products** are considered: | Product | Product Type | Default Units | Is Discrete | |-------------------------|---------------|---------------|-------------| | CMC-5000 | Finished Good | Units | Yes | | Coffee Grinder Module | Raw Material | Units | Yes | | Thermal Insulation Foam | Raw Material | m² | No | | Coffee Grounds Waste | Raw Material | Kg | No | | User Manual | Raw Material | Units | Yes | | Water Quality Test Kit | Raw Material | Units | Yes | The general configuration of the **Products** is detailed in the images below. === "CMC-5000" ![Screenshot showing product details, including type and default units.](images/bom_quatity_mainprod.png) === "Coffee Grinder Module" ![Coffee Grinder Module](images/bom_quantity_cgm.png) === "Thermal Insulation Foam" ![Thermal Insulation Foam](images/bom_quantity_tif.png) === "Coffee Grounds Waste" ![Coffee Grounds Waste](images/bom_quantity_cgw.png) === "User Manual" ![User Manual](images/bom_quantity_um.png) === "Water Quality Test Kit" ![Water Quality Test Kit](images/bom_quantity_wqtk.png) !!! info "Useful Documentation" - [[user-guide-create-product]] - [[tutorials-howto-createproduct]] #### BOM The **BOM** is configured to be of scope Materials, and to use tolerances. The details to consider for each BOM Item are the following: | Source Product | Quantity | Is Fixed Quantity | Lower Tolerance | Upper Tolerance | Source Step | Assembly Step | Is Reference | Information Capture | |-------------------------|----------|-------------------|-----------------|-----------------|--------------|--------------------|--------------|---------------------| | Coffee Grinder Module | 1 Units | No | 0 | 0 | Storage Step | Grinder Assemble | No | Serial Number | | Thermal Insulation Foam | 1.2 m² | No | 0 | 50% | Storage Step | Thermal Insulation | No | Not Applicable | | Coffee Grounds Waste | -0.5 Kg | No | 0 | 0 | Storage Step | Machine Testing | No | Not Applicable | | User Manual | 1 Units | No | 0 | 0 | Storage Step | Boxing | Yes | Not Applicable | | Water Quality Test Kit | 1 Units | Yes | 0 | 0 | Storage Step | Boxing | No | Not Applicable | The configuration of the **BOM** and BOM Items can be found in the image below. ![BOM and BOM Item](images/bom_quantity_bom.png) - The `Use Mixed Assembly` property is set to false. - The **BOM** is configured with the Materials scope. - The `Base Quantity` property is set to 1. #### BOM Context For each **Step**, when a **Material** of CMC-5000 Product is tracked in, the CMC-5000 BOM will be triggered, and each **Step** has its own assembly type. The configuration of the [[bomcontext-st]] Smart table is presented in the table below. | Step | Product | BOM | Assembly Type | |--------------------|----------|--------------|------------------------| | Grinder Assemble | CMC-5000 | CMC-5000 BOM | Explicit | | Thermal Insulation | CMC-5000 | CMC-5000 BOM | Explicit | | Machine Testing | CMC-5000 | CMC-5000 BOM | Explicit | | Boxing | CMC-5000 | CMC-5000 BOM | Explicit Long Running | !!! info "Useful Documentation" - [[tutorials-howto-addvaluetosmarttable]] The master data file supporting this use case is available here: [XML File](files/bom_quantity_tutorial.xlsx). ### Execution To begin this scenario, a **Material** must exist for each BOM Item that is not marked as a reference (for example, all BOM Items except the User Manual **Product**). These Materials must be available at the Storage Step of the Storage Flow, with sufficient quantity to fulfill the demand of the main **Material**. In addition, a **Material** with a quantity greater than 0 must exist to simulate the production of a CMC-5000 **Product**. This **Material** should be placed at the Grinder Assemble **Step** of the Machine Flow. Grinder Assemble **Step**: 1. Dispatch and Track-In the CMC-5000 **Material**. - The **BOM** information for the BOM Item Coffee Grinder Module and its required quantity is displayed. 2. Perform Assemble. - Select the component **Material**. - The system prompts for the Serial Number, as defined in the configuration. - Once assembled, it is possible to perform Disassemble or Replace. 3. After the full **Material** quantity is assembled, Track-Out and Move Next. Thermal Insulation **Step**: 1. Dispatch and Track-In the CMC-5000 Material. - The **BOM** information for the BOM Item Thermal Insulation Foam and its required quantity is displayed. 2. Perform Assemble. - Select the component **Material**. - Since this BOM Item has tolerances, the user may assemble a quantity within the allowed range (up to 50% above the theoretical requirement). - Because this step uses the Explicit Assembly type, it is also possible to disassemble quantities within the defined tolerances, as explained above. 3. After the full **Material** quantity is assembled, Track-Out and Move Next. Machine Testing **Step**: 1. Dispatch and Track-In the CMC-5000 **Material**. - The BOM information for the BOM Item Coffee Grounds Waste and its expected quantity is displayed. 2. Perform Assemble. - Select the component **Material**. - As this BOM Item represents a by-product, the quantity of the source **Material** increases when assembled. - Once assembled, it is possible to perform Disassemble or Replace. 3. After the full **Material** quantity is assembled, Track-Out and Move Next. Boxing **Step**: 1. Dispatch and Track-In the CMC-5000 **Material**. - The **BOM** information for the BOM Items User Manual and Water Quality Test Kit, along with their required quantities, is displayed. 2. Perform Assemble. - For the User Manual, marked as a Reference BOM Item, no source **Material** is required. - For the Water Quality Test Kit, configured with a fixed quantity of 1, only one kit is consumed/assembled regardless of the main **Material** quantity. - Once assembled, it is possible to perform Disassemble or Replace. 3. After the full **Material** quantity is assembled, Track-Out. {% set video_id = 'a925ee6e288a6fcbfc1e496ef2d99834' %} {% include-markdown 'includes/cloudflare_stream.md' %}