{"id":3784,"date":"2022-09-04T09:33:00","date_gmt":"2022-09-04T09:33:00","guid":{"rendered":"https:\/\/www.hashmicro.com\/blog\/?p=3784"},"modified":"2025-05-16T08:38:24","modified_gmt":"2025-05-16T08:38:24","slug":"what-is-a-bill-of-materials-complete-explanation","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/","title":{"rendered":"What Is a Bill of Materials? | Complete Explanation"},"content":{"rendered":"\r\n<p>In the manufacturing industry, we recognize the term Bill of Materials, or simply BOM, as a must-have calculation in management. The term <a href=\"https:\/\/www.hashmicro.com\/hash-manufacturing-software\" target=\"_blank\" rel=\"noopener\">manufacturing application<\/a> is already widely known by manufacturing companies because it can simplify all jobs with fast and accurate results. Then, what is a bill of materials? This article will give you a complete explanation of BOM, from its definition, importance, structures, types, to efficient BOM management.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>Let\u2019s start!<\/p>\r\n<a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=free-product-tour\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/Free-Product-Tour-resized.webp\" alt=\"Free Demo\"><\/a>\r\n<p><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:513,&quot;3&quot;:{&quot;1&quot;:0},&quot;12&quot;:0}\"><!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div> -->\r\n\r\n<!-- <div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Table of Content<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Table of Content<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_top li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor: #000;\r\n\t\tmargin-bottom: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- ToC styling  -->\r\n<style>\r\n\t\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 700;\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\tconst panel2 = document.querySelector(\"#toc .list\");\r\n\tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n  let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n  \/\/ Function to handle scroll and add\/remove .sticky class\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Highlight user progress as the heading comes\r\n    headers.forEach(header => {\r\n\t\tconst headerTop = header.offsetTop;\r\n\t\tconst headerHeight = header.clientHeight;\r\n\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\t\t\ttocTitle.textContent = currentHeaderText;\r\n\t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\ttocTitle.textContent = 'Table of Content';\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader != '') {\r\n\t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\t\t\t  link.classList.add('active');\r\n\t\t  }\r\n\t  }\r\n    });\r\n\/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/         toc.style.display = 'block';\r\n\/\/ \t}else{\r\n\/\/         toc.style.display = 'none';\r\n\/\/ \t}\r\n    \/\/ Update TOC title if sticky\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n        toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n        toc.style.backgroundColor = \"#FFF\";\r\n\t\tpanel2.style.height = '0px';\r\n\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t  if(window.innerWidth < 767){\r\n\/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n       \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\t\t  }\r\n      }\r\n      if (currentHeader) {\r\n\/\/         console.log(\"activeLink:\", activeLink);\r\n        if (activeLink) {\r\n\/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n          tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n        }\r\n      }\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset'; \/\/ Reset to original width\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\t\ticon.style.transform = \"rotate(180deg)\";\r\n    }\r\n  }\r\n\r\n    \/\/ Attach the scroll event listener to the window\r\n    window.addEventListener('scroll', handleScroll);\r\n\r\n    \/\/ Initial call to handleScroll to set the correct state on load\r\n    handleScroll();\r\n});\r\n\t\r\n\t\/\/ Open toggle TOC\r\n\t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\t\tvar toc = document.querySelector(\"#toc\");\r\n\t\tvar icon = document.querySelector(\".toc-icon\");\r\n\t\tconst tocTitle = document.querySelector('#toc-title');\r\n\t\tconst tocs = document.querySelector('#toc.sticky');\r\n \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\t\t  tocHeader.addEventListener(\"click\", function() {\r\n\t\t\tvar panel = this.nextElementSibling;\r\n\t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\t\t\t\tif(window.innerWidth > 768){\r\n\t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\t\t\t\t}\r\n\t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\t\t\t} else {\r\n\t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t  tocTitle.textContent = 'Table of Content'; \/\/ Reset title\r\n\t\t\t\ttoc.style.paddingBottom = '24px';\r\n\t\t\t \tif(window.innerWidth < 767){\r\n\t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t  });\r\n\r\n\t\t  \/\/ Close TOC when a link inside it is clicked\r\n\t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\t\t  tocLinks.forEach(function(link) {\r\n\t\t\tlink.addEventListener(\"click\", function() {\r\n\t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\t\t\t});\r\n\t\t  });\r\n\t\t});\r\n\r\n\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<!-- START script lama -->\r\n<!-- <script>\r\n\/\/ \tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/ \t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\/\/ \t\tdropdownFixedTop.addEventListener('click', function() {\r\n\/\/ \t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\/\/ \t\t\tdropdownContent.classList.toggle('show');\r\n\/\/ \t\t});\r\n\r\n\/\/ \t\twindow.addEventListener('click', function(event) {\r\n\/\/ \t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\/\/ \t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\/\/ \t\t\t\tlistTocTop.classList.remove('show');\r\n\/\/ \t\t\t}\r\n\/\/ \t\t});\r\n\/\/ \t});\r\n\t\r\n\/\/ \tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\/\/ \tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n\/\/     var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n\/\/     window.addEventListener('scroll', function() {\r\n\/\/         if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(false);\r\n\/\/             triggered = true;\r\n\/\/         } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(true);\r\n\/\/             triggered = false;\r\n\/\/         }\r\n\/\/     });\r\n\r\n\/\/     function isCompletelyScrolledPast(element) {\r\n\/\/         var elementTop = element.getBoundingClientRect().top;\r\n\/\/         var elementBottom = element.getBoundingClientRect().bottom;\r\n\/\/         return elementTop < 0 && elementBottom < 0;\r\n\/\/     }\r\n\r\n\/\/     function showSectionDropdownFixedTop(show) {\r\n\/\/ \t\tif (show) {\r\n\/\/ \t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\/\/ \t\t}\r\n\/\/     }\r\n<\/script> -->\r\n<!-- <script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n\t\t  pilihDaftarIsi.innerHTML = a.textContent;\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float', 'list_toc_top']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script> -->\r\n<!-- END script lama -->\r\n\t\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\t\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!--  <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\r\n        Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\t\r\n        Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<\/span><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"what-is\"><strong>What is a Bill of Materials (BOM)?<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Bill of Materials (<a href=\"https:\/\/www.investopedia.com\/terms\/b\/bill-of-materials.asp\" target=\"_blank\" rel=\"noopener\">BOM<\/a>) is a complete list of compulsory materials and components in product manufacturing. BOM does not only encompass raw materials but also the assembly, sub-assembly, sub-component, and other parts in the production process.<\/p>\r\n\r\n\r\n\r\n<p>The format of BOM varies depending on the manufacturing processes. However, there are two common BOM types. The first is BOM used in the engineering phase or product\u2019s first development (eBOM). The second type is BOM associated with the time when the product enters the mass production phase and shipped to the customers (mBOM).\u00a0<\/p>\r\n\r\n\r\n\r\n<p>We will further discuss these BOM types more.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"why\"><strong>Why is Bill of Materials important?<\/strong><\/h2>\r\n\r\n\r\n\r\n<div class=\"wp-block-image\">\r\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2.webp\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-65122 size-full\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2.webp\" alt=\"bill of materials 2\" width=\"1200\" height=\"650\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-300x163.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-1024x555.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-768x416.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-775x420.webp 775w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-150x81.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-696x377.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_2-1068x580.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><\/figure>\r\n<\/div>\r\n\r\n\r\n\r\n<p>The definition of a bill of materials sounds simple. However, everything that sounds easy in technology usually involves something complex. Then, what should there be BOM?<\/p>\r\n\r\n\r\n\r\n<p>BOM contains all components that you need in production, from the designing phase to the manufacturing phase. The total cost stated in BOM is valuable information for the purchasing and financial departments.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>Moreover, the price of the product depends on BOM to determine its production cost and margin. The logistics department will retrieve information such as the requirement for packing and shipping. Furthermore, BOM can also be a specification reference to repair or replace a product for the service department.\u00a0\u00a0<\/p>\r\n\r\n\r\n\r\n<p><strong>Related article:<\/strong> <a href=\"https:\/\/www.hashmicro.com\/blog\/manufacturing-production-process-mistake\/\" target=\"_blank\" rel=\"noopener\">5 Mistakes in Manufacturing Production Planning<\/a><\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"include\"><strong>What should you include in a Bill of Materials?<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Hare are bill of materials components that you must include:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li><strong>BOM Level:<\/strong> Every part or assembly in BOM should have a number or ranking that represents its hierarchy. This will help the BOM reader to understand it.\u00a0<\/li>\r\n<li><strong>Part number:<\/strong> Assign part numbers in every item to each item so that the reader can identify in which production cycle they belong easily.<\/li>\r\n<li><strong>Part name:<\/strong> Give a name for every part, material, or assembly that is easy to understand so the reader can understand it without having to look for a reference.\u00a0<\/li>\r\n<li><strong>Phase:<\/strong> Make sure that all stages of each part in BOM. Use easy-to-understand phase names such as \u201cIn Production\u201d or \u201cIn Design\u201d.<\/li>\r\n<li><strong>Description:<\/strong> Assert descriptive and comprehensive information on each material or part. This description is useful to distinguish similar items.\u00a0<\/li>\r\n<li><strong>Quantity:<\/strong> Specify the amount of the items listed. The purchasing department will rely on this to keep the production running.\u00a0<\/li>\r\n<li><strong>Unit of measurement:<\/strong> Specify the unit of measurement that you use in order to quantify the items, such as \u201ckilograms\u201d or \u201cmeters\u201d.<\/li>\r\n<li><strong>Procurement type:<\/strong> Identify the procurement process of each item, whether you produce the items or your own, or purchase them from vendors.\u00a0<\/li>\r\n<li><strong>Cost:<\/strong> The amount of money spent on parts production or purchase.<\/li>\r\n<li><strong>BOM notes:<\/strong> Insert any relevant information about BOM.\u00a0<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"structure\"><strong>BOM Structure<\/strong><\/h2>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-65124 size-full\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3.webp\" alt=\"bill of materials 3\" width=\"1200\" height=\"650\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-300x163.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-1024x555.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-768x416.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-775x420.webp 775w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-150x81.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-696x377.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_3-1068x580.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\r\n\r\n\r\n\r\n<p>The Bill of materials structure serves for how the components are written in that list. Here are the two common BOM structures:<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Single-level BOM<\/h3>\r\n\r\n\r\n\r\n<p>A single-level bill of materials is BOM that contains the list of components in which the assembly or sub-assembly appears only once. It is easier to create but not suitable to list the components of a complex product.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>This is because Single-level BOM does not state the relationship between assembly or sub-assembly or between children and parents part. Hence, if a product undergoes failed manufacturing, it\u2019s difficult to find what to repair or replace with this BOM structure.\u00a0<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Multi-level BOM<\/h3>\r\n\r\n\r\n\r\n<p>The structure of this BOM is more complicated and requires more attention than the single-level bill of material. It represents all the components in each manufacturing cycle. However, the information it contains is obviously more detailed and specific. There is clear information about the relationship between assembly and sub-assembly and between children and parents part as well.\u00a0<\/p>\r\n<p>You can also explore other articles related to <a href=\"https:\/\/www.hashmicro.com\/blog\/manufacturing-system\/\">manufacturing system<\/a>, which provide detailed insights and examples to help you create accurate and efficient documentation for your manufacturing or project needs.<\/p>\r\n<style>\r\n.cta-in-article-image .desktop-banner{\r\n    display: none;\r\n    text-align: center;\r\n}\r\n.cta-in-article-image .desktop-mobile{\r\n    display: block;\r\n    text-align: center;\r\n    width: 100%;\r\n}\r\n@media (min-width: 650px) {\r\n    .cta-in-article-image .desktop-banner {\r\n        display: block!important;\r\n    }\r\n}\r\n@media (min-width: 650px) {\r\n   .cta-in-article-image .desktop-mobile {\r\n        display: none!important;\r\n    }\r\n}\r\n<\/style>\r\n<div class=\"cta-in-article-image\">\r\n\t<a href=\"https:\/\/www.hashmicro.com\/grants?utm_source=blog&medium=banner-article\" target=\"_blank\" rel=\"noopener\">\r\n\t\t<div id=\"desktop-banner-container\">\r\n\t\t\t<div class=\"desktop-banner\">\r\n<!-- \tnew CTC Grants Banner\t\t -->\r\n\t\t\t\t<img decoding=\"async\" width='696' height='189' src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/07\/CTC-Grants-scaled.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"mobile-banner-container\">\r\n\t\t\t<div class=\"desktop-mobile\">\r\n\t\t\t\t<img decoding=\"async\" width='450' height='497' src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2023\/11\/EDG-Banner-Mobile.png.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/a>\r\n<\/div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"types\"><strong>Bill of Materials Types<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>When talking about the definition of a bill of materials we have nudged eBOM and mBOM. What are they?<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Engineering Bill of Material (eBOM)<\/h3>\r\n\r\n\r\n\r\n<p>eBOM is the BOM that informs all the components used when the product is in the engineering or design phase. Usually, the engineers carry out this phase with Computer-aided Design (CAD) or Electronic Design Automation (EDA) as their aid tools.<\/p>\r\n\r\n\r\n\r\n<p>A product design might have a lot of eBOM. For example, BOM for a circuit board designed by electronic engineers will contain a resistor, chip, capacitor. Meanwhile, BOM created when the product is in the hand of mechanical engineers will contain various hardware and other parts. There will be revision BOM as well.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>In short, eBOM is all BOMs created during the design phase of a product.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Manufacturing bill of materials (mBOM)<\/h3>\r\n\r\n\r\n\r\n<p>mBOM is a BOM that represents how a product is manufactured. It contains all part requirements before it enters the assembly and shipped to the customers.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>Therefore, mBOM does not only contain the component of the product itself but also the materials for the packaging, user manual, and other components necessary for proper functionality. Whatever that customers find in the box should be listed in the mBOM.\u00a0<\/p>\r\n\r\n\r\n\r\n<p>mBOM accuracy is vital. Otherwise, the production process will be slow, incorrect, or unable to be carried out at all.\u00a0<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"effective\"><strong>Effective Bill of Materials management<\/strong><\/h2>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-65125 size-full\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4.webp\" alt=\"bill of materials 4\" width=\"1200\" height=\"650\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-300x163.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-1024x555.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-768x416.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-775x420.webp 775w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-150x81.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-696x377.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation_4-1068x580.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/figure>\r\n\r\n\r\n\r\n<p>The bigger the company, the more massive the production and the complexity of BOM also increases. So now, many manufacturing companies have switched to using manufacturing software. You can create, store, and view BOM in one platform in real-time through this software. You can view images of each component, BOM version and previous products, set workflows and more.<\/p>\r\n<p>Manufacturing software can be integrated with other business operations such as <a href=\"https:\/\/www.hashmicro.com\/accounting\" target=\"_blank\" rel=\"noopener\">accounting software<\/a>, purchasing, sales, supply chain, <a href=\"https:\/\/www.hashmicro.com\/warehouse-management-system\" target=\"_blank\" rel=\"noopener\">warehouse management system<\/a>, and others. Thus the BOM you create can be helpful efficiently, and your company can collaborate well.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\" id=\"wrap-up\"><strong>Wrap Up<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Now, you have the answer to \u201cWhat is a bill of materials\u201d. Managing and creating BOM manually is time-consuming and tiring because there are a lot of types and components that you should include. If there is a problem in the BOM management, the effect will proliferate to the whole company, business partners, even supply chain in wide areas.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/www.hashmicro.com\/hash-manufacturing-software\" target=\"_blank\" rel=\"noopener\">Manufacturing software<\/a> from HashMicro can improve the operational efficiency of your manufacturing business with flexible and cost-efficient process manufacturing with the best manufacturing software.<\/p>\r\n<p>This solution is eligible for funding support of up to 70% through the <a href=\"https:\/\/www.hashmicro.com\/ctc-grants\">CTC Grant<\/a>, which helps companies accelerate their digital transformation. Schedule a <a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\">free demo<\/a> now to experience the transformational power it brings to your operations.<\/p>\r\n<a href=\"https:\/\/www.hashmicro.com\/hash-manufacturing-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Manufacturing.webp\" alt=\"Hash Manufacturing Automation\"><\/a>\r\n<p><script type=\"application\/ld+json\">\r\n{\r\n  \"@context\": \"https:\/\/schema.org\",\r\n  \"@type\": \"FAQPage\",\r\n  \"mainEntity\": [{\r\n    \"@type\": \"Question\",\r\n    \"name\": \"What is a Bill of Materials (BOM)?\",\r\n    \"acceptedAnswer\": {\r\n      \"@type\": \"Answer\",\r\n      \"text\": \"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. BOM does not only encompass raw materials but also the assembly, sub-assembly, sub-component, and other parts in the production process.\r\n\r\nThe format of BOM varies depending on the manufacturing processes. However, there are two common BOM types. The first is BOM used in the engineering phase or product\u2019s first development (eBOM). The second type is BOM associated with the time when the product enters the mass production phase and shipped to the customers (mBOM).\"\r\n    }\r\n  },{\r\n    \"@type\": \"Question\",\r\n    \"name\": \"Why is Bill of Materials important?\",\r\n    \"acceptedAnswer\": {\r\n      \"@type\": \"Answer\",\r\n      \"text\": \"The definition of a bill of materials sounds simple. However, everything that sounds easy in technology usually involves something complex. Then, what should there be BOM?\r\n\r\nBOM contains all components that you need in production, from the designing phase to the manufacturing phase. The total cost stated in BOM is valuable information for the purchasing and financial departments.\u00a0\r\n\r\nMoreover, the price of the product depends on BOM to determine its production cost and margin. The logistics department will retrieve information such as the requirement for packing and shipping. Furthermore, BOM can also be a specification reference to repair or replace a product for the service department.\"\r\n    }\r\n  }]\r\n}\r\n<\/script><\/p>","protected":false},"excerpt":{"rendered":"<p>In the manufacturing industry, we recognize the term Bill of Materials, or simply BOM, as a must-have calculation in management. The term manufacturing application is already widely known by manufacturing companies because it can simplify all jobs with fast and accurate results. Then, what is a bill of materials? This article will give you a [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":65123,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[253],"tags":[],"class_list":{"0":"post-3784","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-manufacturing"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Bill of Materials: Definiton, Types, and Benefits<\/title>\n<meta name=\"description\" content=\"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. Simplify all jobs with fast and\" \/>\n<meta name=\"robots\" content=\"noindex, nofollow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What Is a Bill of Materials? | Complete Explanation\" \/>\n<meta property=\"og:description\" content=\"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. Simplify all jobs with fast and\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/\" \/>\n<meta property=\"og:site_name\" content=\"BusinessTech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/hashmicro\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-04T09:33:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-16T08:38:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Syifa Fadiyah\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Syifa Fadiyah\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/\"},\"author\":{\"name\":\"Syifa Fadiyah\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/b099ef0a37ede0dda048e75cf4a3f85c\"},\"headline\":\"What Is a Bill of Materials? | Complete Explanation\",\"datePublished\":\"2022-09-04T09:33:00+00:00\",\"dateModified\":\"2025-05-16T08:38:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/\"},\"wordCount\":1184,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp\",\"articleSection\":[\"Manufacturing\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/\",\"name\":\"Bill of Materials: Definiton, Types, and Benefits\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp\",\"datePublished\":\"2022-09-04T09:33:00+00:00\",\"dateModified\":\"2025-05-16T08:38:24+00:00\",\"description\":\"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. Simplify all jobs with fast and\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp\",\"width\":1200,\"height\":650,\"caption\":\"bill of materials\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What Is a Bill of Materials? | Complete Explanation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"name\":\"BusinessTech\",\"description\":\"Business Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\",\"name\":\"HashMicro\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"width\":334,\"height\":51,\"caption\":\"HashMicro\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/web.facebook.com\/hashmicro\/\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/b099ef0a37ede0dda048e75cf4a3f85c\",\"name\":\"Syifa Fadiyah\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/cropped-syifa-nur-fadiyah-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/cropped-syifa-nur-fadiyah-96x96.webp\",\"caption\":\"Syifa Fadiyah\"},\"description\":\"In my role as a content writer, I regularly produced a few articles to assist businesses in need of a system. In addition, I authored a few helpful articles that are related to the method that businesses use.\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/author\/syifa-nur-fadiyah\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Bill of Materials: Definiton, Types, and Benefits","description":"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. Simplify all jobs with fast and","robots":{"index":"noindex","follow":"nofollow"},"og_locale":"en_US","og_type":"article","og_title":"What Is a Bill of Materials? | Complete Explanation","og_description":"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. Simplify all jobs with fast and","og_url":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/","og_site_name":"BusinessTech","article_publisher":"https:\/\/web.facebook.com\/hashmicro\/","article_published_time":"2022-09-04T09:33:00+00:00","article_modified_time":"2025-05-16T08:38:24+00:00","og_image":[{"width":1200,"height":650,"url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp","type":"image\/webp"}],"author":"Syifa Fadiyah","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Written by":"Syifa Fadiyah","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/"},"author":{"name":"Syifa Fadiyah","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/b099ef0a37ede0dda048e75cf4a3f85c"},"headline":"What Is a Bill of Materials? | Complete Explanation","datePublished":"2022-09-04T09:33:00+00:00","dateModified":"2025-05-16T08:38:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/"},"wordCount":1184,"publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp","articleSection":["Manufacturing"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/","url":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/","name":"Bill of Materials: Definiton, Types, and Benefits","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp","datePublished":"2022-09-04T09:33:00+00:00","dateModified":"2025-05-16T08:38:24+00:00","description":"Bill of Materials (BOM) is a complete list of compulsory materials and components in product manufacturing. Simplify all jobs with fast and","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#primaryimage","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2022\/09\/blog_what-is-a-bill-of-materials-complete-explanation.webp","width":1200,"height":650,"caption":"bill of materials"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/blog\/what-is-a-bill-of-materials-complete-explanation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What Is a Bill of Materials? | Complete Explanation"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/blog\/#website","url":"https:\/\/www.hashmicro.com\/blog\/","name":"BusinessTech","description":"Business Management Blog","publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/blog\/#organization","name":"HashMicro","url":"https:\/\/www.hashmicro.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","width":334,"height":51,"caption":"HashMicro"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/hashmicro\/","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/b099ef0a37ede0dda048e75cf4a3f85c","name":"Syifa Fadiyah","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/cropped-syifa-nur-fadiyah-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/cropped-syifa-nur-fadiyah-96x96.webp","caption":"Syifa Fadiyah"},"description":"In my role as a content writer, I regularly produced a few articles to assist businesses in need of a system. In addition, I authored a few helpful articles that are related to the method that businesses use.","url":"https:\/\/www.hashmicro.com\/blog\/author\/syifa-nur-fadiyah\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/3784","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/comments?post=3784"}],"version-history":[{"count":22,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/3784\/revisions"}],"predecessor-version":[{"id":72199,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/3784\/revisions\/72199"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media\/65123"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media?parent=3784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/categories?post=3784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/tags?post=3784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}