1. Home
  2. Bill of Materials
  3. Bills of Material: Bills of Material Maintenance

Bills of Material: Bills of Material Maintenance

Bills of Material Maintenance

Bills of Material Maintenance - Details pane

The Bill of Materials Maintenance window contains an assembly tree list that can be populated using drag and drop from the parts ScratchPad or directly by using the Select Parent function on the BoM menu. When an assembly number is selected in the tree list the parent’s component list is built and is displayed. If there are potential conflicts with orders the Parent On-Order Status window will open to warn you.

To create an assembly in the first place, select the part number or drag it into the list and select it. Then add components to the list.

You can add parts to the component list using drag and drop from the Scratchpad or the BoM Listing built from the Scratchpad.

The window shows component current costs under the list and a total for the parent below the list. Note that this is NOT the total cost value for the parent as it ignores costs associated with the assembly process route and any receiving overheads.



Assembly Tree

Assembly and sub-assembly tree. Click on the expander to show sub-assemblies. Click on the icon or part number to list components.

If you move the mouse over the tree list, there is a context menu (right-click) which contains the following functions:

  • Select Parent – has the same function as that on the BoM menu.
  • Expand All – causes any assembly listed to be fully expanded down to the lowest sub-assembly.
  • Where-Used – has the same function as the icon button above the tree list.
  • Clear All – has the same function as the icon button above the tree list.

Component List

List of components in the selected parent’s bill of material.

Tip TIP: You can multi-select components in this list and drag them onto a parent part number in the Assembly Tree to add them to that assembly.

Parent part number

BoM Structure. Parent part number. {BOMFILE.BOMPPNO char 18}

Parent description

Parts Master. Part description. {PTMFILE.PTMDESC char 30}

Parent stock unit of measure

Parts Master. Standard stock unit of measure. {PTMFILE.PTMSTUM char 6}

Parent part type

Parts Master. Part type (A,B,M,N,O,P). {PTMFILE.PTMTYPE char 1}

Parent engineering issue

Parts Master. Engineering issue reference. {PTMFILE.PTMISSU char 4}

Total component current cost

The value of the current costs of all components in the BoM. This is not the same as the total current cost of the assembly as it does not take account of any process route operations that may exist for the assembly.

Total quantity (optional)

Total BoM Quantity for the components in the list with the indicated Stock UoM. Controlled by the system option optBoMQtySumUoM.



Where-used Icon button

Loads the higher parents of the selected part, if there are any and they are not already listed.

Clear Tree List button

Clears all assembles from the tree.


Re-reads the modified Bom from file. All changes other than deletes will be lost.

Save Changes

Saves all component changes and additions to file. Consequential adjustments will also be made.


Aborts the process currently in session. The keyboard equivalent is the Esc key for Windows computers and Command-.(full stop or period) for the Mac.


The OK button updates the data you have entered, or confirms the selection and/or processes the function you have called.

The window has 2 tab panes.



This pane enables you to view the component details.

To edit the details, double-click on the list line. Confirm with an OK and after changes are complete Save Changes.



Component part number

The Part Number of the Component Part must be defined in the Parts Master File. This Component can have its own BoM. The system protects against entry of a Component that is itself a Parent, at a higher level, of this bill structure. If this were allowed a physically impossible recursive structure would result. The part’s current Issue, Description, Unit of measure and Lowest level number are shown along side.


Parts Master. Engineering issue reference. {PTMFILE.PTMISSU char 4}


Parts Master. Part description. {PTMFILE.PTMDESC char 30}

Stock UoM

Parts Master. Standard stock unit of measure. {PTMFILE.PTMSTUM char 6}

Part type

BoM Structure. Component part type (from PTMTYPE of BOMCPNO). {BOMFILE.BOMTYPE char 1}

Component reference

BoM Structure. Component reference within structure. {BOMFILE.BOMCREF char 4}
This optional 4 character alpha-numeric field is provided for any special Parent-Component link referencing you may wish to apply. BoM reviews and reports can list the components in Reference order. It is often used to provide for sub-kitting to Process Route individual Operations, or as a reference to details on a drawing.

Component engineering issue

BoM Structure. Component part issue reference. {BOMFILE.BOMISSU char 4}
The part issue for the component when used to manufacture this parent part. This can be different from the current issue for the component stored in the parts master. This enables you to hold historic designs and can be useful in managing engineering changes. However, this is for memo purposes only and is not used in any system processing logic.

Component quantity

BoM Structure. Component quantity in stock UoM. {BOMFILE.BOMQTY number 3dp}
The quantity of the Component Part used on each Parent Part. Stock UoM applies to both Parent and Component. i.e. if the Stock UoM of the Parent is “Each” and the Component “Pk 10”, and if the Quantity (per Parent) is 5, then 50 Components are used in making each Parent.

Tip TIP: If the system option optBoMZeroQty is set to 1, BoM quntity for a component can be zero.

Tip TIP: If the system option optBoMAllowNegQty is set to 1, 2 or 3, BoM quantity for a component can be negative.

See the Negative BoM Component Quantities section below for more details.

Back to top


Bills of Material Maintenance - Texts pane

To view the component structure texts.



Special structure comment

BoM Structure. Component special structure comment. {BOMFILE.BOMSTCO char 10000000}

Standard engineering text code

BoM Structure. Engineering standard text code. {BOMFILE.BOMTXE char 4}

Standard engineering text

Standard Texts (E,P,S,W). Text. {TXTFILE.TXTTEXT char 10000000}




Click this button to display a list of alternatives for the field alongside the button. Double-clicking on a list line will enter the value from the list.

Negative BoM Component Quantity

There are two reasons why you may want to create BoM Structures where some components have negative component quantities.

One example (A) is a non-obvious way of handling final assembly exceptions or customisation. In this case, suppose we are making a standard car with black tyres and a customer comes along and says that he will place a large order but only if we provide the car with green tyres. The tyres are on the axles which are on the chassis so they are deep within the BoM structure, but as we have anticipated this possibility and our car is made on a production line as a single large BoM Assembly it is easy for us to make the standard car with black tyres a phantom kit. Then we create an end product with a single BoM component of the standard phantom kit assembly. To make the green-tyred car all we need to do is to duplicate the standard black-tyred car end-product assembly and add two components to it’s BoM; 4 green tyres and minus 4 black tyres. When the kit is issued the minus 4 and plus four black tyres in the phantom kit resolve to zero black tyres and we are left with the standard kit without tyres plus 4 green tyres (substitute 5 for 4 if there is a spare!). The main value of this is data efficiency and transparency as the ‘specials’ are all in the top level BoM which will be small, having only the standard phantom kit and any variants. Also any change to the basic common design means only a change to the phantom kit after which all end-product variants will reflect the change.

Another example (B) is where the production process results in a predictable return of stock, perhaps where it has been consumed at an deeper level of production, such as tooling or complex by-products that fall outside the normal by-product functionality.

The following illustrates a non-negative simple build followed by A and B scenario illustrations.

Negative Component Quantity Examples

Caliach Vision (V3.1013 onwards) allows negative component quantities through a system option optBoMAllowNegQty which can take the value 1, 2 or 3. This option works in conjunction with the optBoMZeroQty system option which, if 1 or YES permits the entry of zero quantity components. The rules are as follows:

  1. You can create/edit/import negative component quantities if optBoMAllowNegQty=1, 2 or 3.
  2. If optBoMAllowNegQty=1, 2 or 3 the File — System Manager — System Preference, Bill of Material tab, “Do not consolidate common BoM components in lists” preference will be turned off and disabled; you must view and operate on consolidated kit lists only.
  3. You can not have a zero component quantity unless optBoMZeroQty=1.
  4. The costing system takes account of any negative BoM quantities regardless of any option settings.
  5. In the Bills of Material task (BoM Maintenance) all BoM structures are shown in full, as that is what is stored in the data. There are two exceptions to this: the BoM Report – Lowest-Level Component Breakdown and Trial Kit as both of these reports simulate stock movement activity which abide by the following additional rules:
  6. optBoMAllowNegQty=1 negative component quantities are permitted but any net negative results are ignored in any stock movements or reviews. This means that case A in the preamble will operate fine as long as the main BoM assembly is a phantom kit. Any net negative quantities will not complicate stock movements when kitting but will effect costing, so such entries that produce net negatives may well be validly used. In this case if optBoMZeroQty=1, the kitting lists will show net zero components but not negatives. This may be useful if the net zero is an optional kit component.
  7. optBoMAllowNegQty=2 negative component quantities are permitted and any net negatives will be listed in kit lists, etc. But by default the return quantity during a kit issue or an issue quantity in a kit return will default to zero. The user will have to manually enter a negative quantity to effect a return/issue. optBoMZeroQty=1 has the same effect as in 6.
  8. optBoMAllowNegQty=3 negative component quantities are permitted and any net negatives will be listed in kit lists, etc. By default the return quantity during a kit issue or an issue quantity in a kit return will default to the negative value so the reverse transaction will typically be made. optBoMZeroQty=1 has the same effect as in 6.
  9. The Allocated quantity of a component will go negative if there is a net negative on a WO kit list but only if optBoMAllowNegQty=2 or 3 and Part Process Analysis and Reset Part Process Quantities will reflect this rule. If at any time you change the optBoMAllowNegQty setting, it would be wise to do a File — Advanced — Re-Set Data File and Reset Part Process Quantities for all parts to correct any Allocated balances on part records.
  10. Net negative kit components can never be inverse-shortages regardless of option settings.
  11. Net negative kit components will show up as negative dependant demand in MRP Results and will supplement supply, but only when optBoMAllowNegQty=2 or 3.
  12. In subsequent kit issues or returns of net negatives the stock movement type will remain the type of the function but it’s direction will be the reverse of normal (movement quantity sign opposite to normal). So a positive WO Kit Issue movement will result from a net negative kit issue component.
  13. Multi-Location, Batch Tracked and Serial Numbered parts will behave in the same way as stock movements; with reflected logic.
  14. Sales Orders and Jobs cannot have negative line item quantities, as before, but can have net-zero or negative component quantities in single or multi-level phantom kits.
  15. Changing the optBoMAllowNegQty or optBoMZeroQty setting or removing either will not change any BoM stored data or any already recorded transactions. However, it will effect future transactions, reset part process quantities, BoM Maintenance activities and, in particular, a Re-Unite Missing Relatives operation on the BOMFILE. In the later case a check is made on component quantity and if it is found incompatible to the option settings the record is deleted. So if you have negative (or zero) quantity components, they will be removed by the re-unite process if the option settings no longer permit negative (or zero) quantities.

Back to top

See also: –

Compiled in Program Version 5.10. Help data last modified 23 Feb 2016 11:27:00.00. Class wBomMaint last modified 10 Oct 2017 11:47:59.

Updated on May 27, 2020

Related Articles

Leave a Comment