Leo Tran Manufacturing Published: 5/16/20 Hits: 1,146

Using Bills of Materials

Bills of Materials are documents that describe the list of raw materials used to make a finished product. To illustrate the concept of specification, you will work on a shelf (or cabinet) where the manufacturing plan is given by the figure Plan of Construction of a Shelf.

mrp armoire

Plan of Construction of a Shelf

The shelf is assembled from raw materials and intermediate assemblies. The Image Code refers to the picture, the Product Reference is the corresponding code in Odoo ERPOnline.

Change the unit of the Wood Lintel 4m (LIN40) product to m instead of Unit(s).

Product Definitions before defining Bills of Materials (already defined)
Image CodeProduct ReferenceDescription

ARM100

SHE100

Shelf 100 cm

PANLAT

SIDEPAN

Side Panel

PANA100

RPAN100

Rear Panel SHE100

PROFIL

PROFIL

Assembly Section

ETA100

RCK100

Rack 100cm

BOIS002

WOOD002

Wood 2mm

TAQ000

METC000

Metal Cleats

LIN40

LIN40

Wood Lintel 4m

New Products to be created before defining Bill of Materials
Image CodeProduct ReferenceDescription

PLET100

SPAN100

Shelf Panel

BOIS010

WOOD010

Wood 10mm

To create the above products, duplicate existing ones, such as Side Panel and Wood 2mm, from the Purchase or Sales menu Purchases > Products > Products.

To describe how this shelf should be assembled, you define a bill of materials for each intermediate product and for the final shelf assembly. These are shown in the tables below. You can start from the demo data and complete them according to the specifications. To create or change a bill of materials, go to Manufacturing > Products > Bill of Materials.

Bill of Materials for 1 SHE100 Unit (already defined)
Product Ref.QuantityUnit of Measure

PROFIL

4

Unit(s)

SIDEPAN

2

Unit(s)

METC000

12

Unit(s)

RPAN100

1

Unit(s)

RCK100

3

Unit(s)

Bill of Materials for 1 RCK100 Unit(s)
Product CodeQuantityUnit of Measure

SPAN100

1

Unit(s)

METC000

4

Unit(s)

Bill of Materials for 1 SPAN100 Unit(s)
Product CodeQuantityUnit of Measure

WOOD010

0.083

m

Bill of Materials for 1 PROFIL Unit(s)
Product CodeQuantityUnit of Measure

LIN40

0.25

m

Bill of Materials for 1 RPAN100 Unit(s)
Product CodeQuantityUnit of Measure

WOOD002

0.25

m

Bill of Materials for 1 SIDEPAN Unit(s)
Product CodeQuantityUnit of Measure

WOOD002

0.083

m

The bills of materials are then used by the software to calculate the raw material needs based on the requirements of the finished products. So if you want to manufacture 10 shelves, the system can calculate the actual products that will be consumed:

Total Quantities per Shelf
Product CodeQuantityUnit of Measure

WOOD002

0.416 (2 * 0.083 + 0.25)

m

LIN40

1 (4 * 0.25)

m

WOOD010

0.249 (0.083 * 3)

m

METC000

132 ((3 * 4) + (10 * 12))

Unit(s)

To see the bill of materials in tree view, use the menu Manufacturing > Products > Products then select the product and choose Product BOM Structure from more button.

mrp bom tree new

Bill of Materials structure

Use the menu Manufacturing > Products > Bill of Materials and click the Create button to define a new bill of materials.

To change the view in the bill of materials you can:

  • From the list, select a bill of materials name and then click Form View,
  • From a product form, use the Bill of Materials Button.

mrp bom new

Defining a Bill of Materials

In the Product field of the bill of materials, you should set the finished product, which will be manufactured or assembled. Once the product has been selected, Odoo ERPOnline automatically completes the name of the bill of materials and the default Unit of Measure for this product.

The type of BoM (BoM Type: Sets/Phantom or Normal BoM) and the Routing field will be described in more detail later in the chapter.

Now you can select the raw materials (Components) that are used to manufacture the finished product. The quantities are set out based on the quantities of finished product and the quantities needed to produce them from the bill of materials.

The tab, By products, allows you to produce several products from one production order. This feature is available if you have installed the module mrp_byproducts, which can be done by selecting Produce several products from one manufacturing order in the Settings > Configuration > Manufacturing in Order.

mrp bom subproduct

By Products of a Bill of Materials 

In the third tab, Properties, you can put a free text reference to a plan, a sequence number that is used to determine the priorities between bills of materials, dates between which a bill of materials is valid, and values for rounding and production efficiency.

mrp bom properties

Properties of a Bill of Materials 

Rounding is used to set the smallest Unit of Measure in which the quantities of the selected product can be expressed. So if you set the rounding to 1.00, you will not be able to manufacture half a piece. The Efficiency of the product lets you indicate the percentage you lose during manufacturing. This loss can be defined for the finished product or for each raw materials (components) line. The impact of this efficiency figure is that Odoo ERPOnline will reserve more raw materials for manufacturing than you would otherwise use just from the Bill of Materials calculations.

The final part of this tab lets you set some properties for the product's manufacturing processes. These will be detailed further on in the chapter in the section about configurable products.

Multi-level Bills of Materials

In Odoo ERPOnline, each line of a bill of materials may itself be a bill of materials. This allows you to define BoMs with several levels. Instead of defining several BoMs for the shelf in the figure Plan of Construction of a Shelf, you could define the single bill of materials below:

Single Bill of Materials for 1 SHE100 Unit
Product Ref.QuantityUnit of Measure

SHE100

1

Unit(s)

SIDEPAN

2

Unit(s)

WOOD002

0.166

m

RPAN100

1

Unit(s)

WOOD002

0.25

m

PROFIL

4

Unit(s)

LIN40

1

m

RCK100

3

Unit(s)

SPAN100

3

Unit(s)

WOOD010

0.249

m

METC000

132

Unit(s)

Odoo ERPOnline behaves differently depending on whether the bill of materials is defined in several small BoMs each on a single level or in one BoM tree-structured on several levels.

If you select a BoM using intermediate products that automatically generates production orders based on calculated requirements, Odoo ERPOnline will propose to manufacture an intermediate product. To manufacture a shelf according to the different bills of materials defined, you would create 6 production orders:

Production Order
Product Ref.QuantityUnit of Measure

SPAN100

3

Unit(s)

WOOD010

0.249

m

Production Order
Product Ref.QuantityUnit of Measure

RCK100

3

Unit(s)

SPAN100

3

Unit(s)

METC000

12

Unit(s)

Production Order
Product Ref.QuantityUnit of Measure

PROFIL

4

Unit(s)

LIN40

1

m

Production Order
Product Ref.QuantityUnit of Measure

RPAN100

1

Unit(s)

WOOD002

0.25

m

Production Order
Product Ref.QuantityUnit of Measure

SIDEPAN

2

Unit(s)

WOOD002

0.17

m

Production Order
Product Ref.QuantityUnit of Measure

SHE100

1

Unit(s)

SIDEPAN

2

Unit(s)

RPAN100

1

Unit(s)

PROFIL

4

Unit(s)

RCK100

3

Unit(s)

METC000

12

Unit(s)

In the case where a single bill of materials is defined in multiple levels, a single manufacturing order will be generated for each shelf, including all of the sub BoMs. You would then get the following production order:

Single Production from a tree-structured BoM
Product Ref.QuantityUnit of Measure

SHE100

1

Unit(s)

WOOD002

0.17

m

WOOD002

0.25

m

LIN40

1

m

WOOD010

0.249

m

METC000

132

Unit(s)

Phantom Bills of Materials

If a finished product is defined using intermediate products that are themselves defined using other BoMs, Odoo ERPOnline will propose to manufacture each intermediate product. This will result in several production orders. If you only want a single production order, you can define a single BoM with several levels.

Sometimes, however, it may be useful to define the intermediate product separately and not as part of a multi-level assembly, even if you do not want separate production orders for intermediate products.

In the example, the intermediate product RCK100 is used in the manufacturing of different shelves (SHE100, SHE200, ...). So you would prefer to define a unique BoM for it, even though you do not want any instances of this product to be built, nor would you want to rewrite these elements in a series of different multi-level BoMs.

If you only want a single production order for the complete shelf, and not one for the BoM itself, you can define the BoM line corresponding to product RCK100 in the shelf's BoM as type Sets/Phantom. Then Odoo ERPOnline will automatically put RCK100's BoM contents into the shelf's production order, even though it has been defined as multi-level.

This way of representing the assembly is very useful, because it allows you to define reusable assembly elements and keep them isolated.

If you define the BoM for the SHE100 shelf in the way shown by the table below, you will get two production orders on confirmation of a sales order, as also shown in the tables.

Defining and Using Phantom BoMs
Product Ref.QuantityUnit of MeasureType of BoM

SHE100

1

Unit(s)

normal

SIDEPAN

2

Unit(s)

normal

RPAN100

1

Unit(s)

phantom

PROFIL

4

Unit(s)

phantom

RCK100

3

Unit(s)

phantom

Production Order from Phantom BoMs
Product Ref.QuantityUnit of Measure

SHE100

1

Unit(s)

SIDEPAN

2

Unit(s)

WOOD002

0.25

m

LIN40

1

m

WOOD010

0.249

m

METC000

12

Unit(s)

Production Order from Normal BoM
Product Ref.QuantityUnit of Measure

SIDEPAN

2

Unit(s)

WOOD002

0.17

m

Bills of Materials for Kits/Sets

In other software, this is sometimes called a Sales Bill of Materials. In Odoo ERPOnline, the term Kits/Sets is used, because the effect of the bill of materials is visible not only in sales, but also elsewhere, for example, in the intermediate manufactured products.

Kits/Sets bills of materials enable you to define assemblies that will be sold directly. These could also be used in deliveries and stock management rather than just sold separately. For example, if you deliver the shelf in pieces for self-assembly, set the SHE100 BoM to type Sets / Phantom.

When a salesperson creates an order for a SHE100 product, Odoo ERPOnline automatically changes the SHE100 from a set of components into an identifiable package for sending to a customer. Then it asks the storesperson to pack 2 SIDEPAN, 1 RPAN100, 4 PROFIL, 3 RCK100. This is described as a SHE100, not just the individual products delivered.