{"id":72951,"date":"2024-03-02T17:03:39","date_gmt":"2024-03-02T10:03:39","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=72951"},"modified":"2025-12-16T11:53:09","modified_gmt":"2025-12-16T04:53:09","slug":"7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/","title":{"rendered":"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Pembengkakan biaya proyek adalah masalah serius yang kerap dialami oleh perusahaan konstruksi. Hal ini dapat mengakibatkan beban keuangan signifikan bagi perusahaan, terutama jika harus menanggung biaya tambahan tidak terduga.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Data dari Small Business.chron menunjukkan bahwa sekitar 85% dari proyek konstruksi mengalami <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">atau <\/span><span style=\"font-weight: 400;\">cost overrun <\/span><span style=\"font-weight: 400;\">dari perencanaan anggaran awalnya.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Fenomena ini dapat terjadi akibat kelalaian yang membuat pihak manajemen melewatkan detail penting dalam proyek. Kesalahan akibat <\/span><span style=\"font-weight: 400;\">human error<\/span><span style=\"font-weight: 400;\"> ini bisa Anda cegah dengan memanfaatkan sistem yang dapat mengotomatisasi kegiatan tersebut, seperti <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Hash Construction Suite<\/span><\/a><span style=\"font-weight: 400;\"> dari HashMicro.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Selain otomatisasi, apa saja langkah yang bisa Anda lakukan untuk mencegah <\/span><span style=\"font-weight: 400;\">over budget<\/span><span style=\"font-weight: 400;\">? Simak uraian berikut ini!<\/span><\/p>\n<table style=\"border-collapse: coacllapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Proyek Anda bisa terkendala <\/span><span style=\"font-weight: 400;\">over budget, <\/span><span style=\"font-weight: 400;\">jika terdapat kesalahan pada pendanaan, perencanaan, peralatan, akses yang dibutuhkan, kontraktor, hingga desain.<\/span><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Pembuatan rencana manajemen risiko arus mencakup seluruh risiko potensial serta strategi mitigasi segala permasalahan tersebut.<\/span><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Mengelola anggaran dengan efektif merupakan hal yang sangat penting dalam industri konstruksi.<\/span><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\">Construction Software dari HashMicro<\/a> hadir<\/span><span style=\"font-weight: 400;\"> sebagai solusi dalam mengatur proyek konstruksi Anda dengan lebih efisien.<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script> <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\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\">Daftar Isi<\/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\/* 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\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<style>\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_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: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\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#list_toc_float li a{margin-bottom:0px}\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#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\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\n\/\/ document.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 = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\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 = 'Daftar Isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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 = 'Daftar isi'; \/\/ 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\/\/ START new JS for ToC improvements\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 + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\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  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\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`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\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';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\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<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        } \r\n\t\t  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\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\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        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2 id=\"1\"><b>4 Penyebab <\/b><b>Over Budget <\/b><b>pada Perusahaan Konstruksi<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-72891 size-full aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-11.png\" alt=\"Penyebab Terjadinya Over Budget Pada Proyek Konstruksi\" width=\"700\" height=\"360\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-11.png 700w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-11-300x154.png 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-11-150x77.png 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-11-696x358.png 696w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><span style=\"font-weight: 400;\">Sebelum Anda mengetahui cara-cara untuk meminimalisir <\/span><span style=\"font-weight: 400;\">over budget, <\/span><span style=\"font-weight: 400;\">Anda harus mengetahui lebih dulu faktor apa saja yang dapat menyebabkan terjadinya fenomena ini. Dengan mengetahui hal tersebut, diharapkan Anda bisa lebih berhati-hati sehingga tidak melakukan kesalahan yang sama.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Lalu, apa sajakah faktor-faktor yang dapat menyebabkan <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">pada perusahaan konstruksi Anda? Berikut penjelasannya!<\/span><\/p>\n<h3 id=\"a\"><span style=\"font-weight: 400;\">Estimasi pengerjaan yang meleset<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Rencana proyek haruslah memiliki estimasi yang akurat. Proyek Anda bisa terkendala <\/span><span style=\"font-weight: 400;\">over budget, <\/span><span style=\"font-weight: 400;\">jika terdapat kesalahan pada pendanaan, perencanaan, peralatan, akses yang dibutuhkan, kontraktor, hingga desain.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kesalahan ini bisa terjadi akibat <\/span><span style=\"font-weight: 400;\">stakeholders <\/span><span style=\"font-weight: 400;\">yang terburu-buru untuk mendapatkan persetujuan proyek tersebut, sehingga tidak melakukan pengecekan mendalam terhadap <\/span><span style=\"font-weight: 400;\">planning <\/span><span style=\"font-weight: 400;\">yang dibuat.<\/span><\/p>\n<h3 id=\"b\"><span style=\"font-weight: 400;\">Adanya <\/span><span style=\"font-weight: 400;\">scope creep<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Scope creep <\/span><span style=\"font-weight: 400;\">merupakan munculnya tambahan tidak terduga terhadap fitur maupun fungsional lingkup proyek, sehingga <\/span><span style=\"font-weight: 400;\">project scope <\/span><span style=\"font-weight: 400;\">tidak terdefinisikan dengan baik. Tambahan ini bisa muncul dari permintaan klien maupun inisiatif salah satu pekerja. Kemunculan tiba-tiba ini tentunya dapat menimbulkan kebutuhan baru yang dapat mengakibatkan <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">pada proyek yang Anda jalani.<\/span><\/p>\n<h3 id=\"c\"><span style=\"font-weight: 400;\">Manajemen risiko yang tidak baik<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Pembuatan rencana manajemen risiko merupakan tanggung jawab dari manajer proyek. Rencana ini harus mencakup seluruh risiko potensial serta strategi mitigasi segala permasalahan tersebut.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Saat proyek menghadapi sebuah masalah, peluang terjadinya pengeluaran tak terduga pun akan meningkat jika tidak ada.<\/span><span style=\"font-weight: 400;\">planning <\/span><span style=\"font-weight: 400;\">yang tepat. Hal inilah yang kemudian menyebabkan proyek Anda mengalami <\/span><span style=\"font-weight: 400;\">over budget.\u00a0<\/span><\/p>\n<h3 id=\"d\"><span style=\"font-weight: 400;\">Kurangnya komunikasi<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Setiap orang yang terlibat dalam konstruksi harus bisa mengkomunikasikan seluruh perkembangan selama proyek berlangsung. Alur komunikasi yang tidak berjalan dengan baik dapat menimbulkan kesalahpahaman, sehingga menyebabkan terbuangnya sumber daya\u00a0 karena kesalahan pengadaan atau pembelian berulang. Kesalahan inilah yang pada akhirnya menyebabkan <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">pada proyek Anda<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><b>Baca juga:<\/b> <strong><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pentingnya-monitoring-proyek-konstruksi-dengan-sistem-erp-construction\/\" target=\"_blank\" rel=\"noopener\">Mengapa Industri Konstruksi Butuh Dukungan Sistem ERP yang Baik?<\/a><\/strong><\/p>\n<h2 id=\"2\"><b>7 Tips Menghindari <\/b><b>Over Budget <\/b><b>untuk Perusahaan Konstruksi<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-72887 size-full aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-12.png\" alt=\"Tips Menghindari Over Budget pada Proyek Konstruksi Anda\" width=\"700\" height=\"360\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-12.png 700w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-12-300x154.png 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-12-150x77.png 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-12-696x358.png 696w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Mengelola anggaran dengan efektif merupakan hal yang sangat penting dalam industri konstruksi. Tidak hanya menghambat kemajuan proyek, <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">juga dapat merugikan perusahaan dalam jangka panjang. Simak uraian di bawah ini untuk tips-tips menghindari <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">yang bisa Anda implementasikan pada perusahaan Anda!<\/span><\/p>\n<h3 id=\"e\"><span style=\"font-weight: 400;\">1. Merencanakan proyek secara menyeluruh<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Cara terbaik untuk menghindari <\/span><span style=\"font-weight: 400;\">over budget <\/span><span style=\"font-weight: 400;\">adalah dengan perencanaan yang detail sebelum mengeksekusi proyek. Penyusunan rancangan proyek juga harus menggunakan data akurat dan pertimbangan pengalaman <\/span><span style=\"font-weight: 400;\">real <\/span><span style=\"font-weight: 400;\">di lapangan. <\/span><\/p>\n<p><span style=\"font-weight: 400;\">Semakin lengkap estimasi yang Anda rancang, semakin besar pula tingkat akurasi saat mengimplementasikan rencana tersebut. Selain itu, dukungan dari\u00a0<a href=\"https:\/\/www.hashmicro.com\/id\/blog\/7-software-rab-kontraktor-terbaik-untuk-manajemen-prakonstruksi\/\">aplikasi RAB profesional untuk bisnis konstruksi<\/a> membantu menyusun dan mengelola anggaran secara efisien.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Dengan perencanaan menyeluruh, Anda juga bisa memperhitungkan segala risiko proyek yang mungkin terjadi. Ketika rencana detail tersebut telah ditandatangani oleh seluruh pihak berkepentingan, maka seluruh pihak yang terlibat dapat memiliki ekspektasi yang sama saat menjalankan proyek.\u00a0<\/span><\/p>\n<h3 id=\"f\"><span style=\"font-weight: 400;\">2. Kenali vendor dengan baik<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Banyak proyek yang membutuhkan bantuan vendor untuk menyediakan material maupun peralatan yang dibutuhkan. Pemilihan vendor yang salah dapat menyebabkan terjadinya <\/span><span style=\"font-weight: 400;\">over budget<\/span><span style=\"font-weight: 400;\"> akibat pengeluaran yang tidak terkontrol. Oleh karena itu, penting untuk mengenal secara menyeluruh vendor yang akan bekerjasama dengan Anda sebelum membuat kesepakatan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ada beberapa hal yang harus diperhatikan sebelum memilih vendor bagi proyek Anda. Pertama, ketahui terlebih dahulu apakah vendor tersebut bisa memenuhi kebutuhan Anda. Kedua, pastikan harga yang vendor tawarkan sesuai dengan perencanaan budget Anda. Lalu, sebelum menandatangani kontrak, pastikan Anda telah mengecek kredibilitas dari vendor tersebut.\u00a0\u00a0\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Tetap mengikuti alur <\/span><span style=\"font-weight: 400;\">planning <\/span><span style=\"font-weight: 400;\">agar tidak over budget<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Pada saat melaksanakan proyek konstruksi, tidak jarang muncul permintaan tambahan maupun perubahan di berbagai aspek. Terkadang, perubahan tidak hanya datang dari klien atau <\/span><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.jabarjawara.id\/article\/detail\/ini-definisi-dan-fungsi-stakeholder-dalam-perusahaan\" target=\"_blank\" rel=\"noopener\">stakeholders<\/a>, <\/span><span style=\"font-weight: 400;\">tetapi juga dari anggota tim yang memiliki keinginan dan kebutuhan yang berbeda.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Berbagai permintaan\u00a0 ini lah yang menjadi momok utama terjadinya <\/span><span style=\"font-weight: 400;\">over budget<\/span><span style=\"font-weight: 400;\">. Beberapa perubahan mungkin dapat berdampak baik bagi proyek, tetapi perubahan yang terlalu drastis bisa menyebabkan kerugian akibat banyaknya pengeluaran tidak terduga. Oleh karena itu, penting bagi perusahaan untuk tetap berada di jalur yang telah direncanakan sebelumnya.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Gunakan <\/span><span style=\"font-weight: 400;\">tools <\/span><span style=\"font-weight: 400;\">pembantu dalam merencanakan proyek <\/span><span style=\"font-weight: 400;\">agar tidak over budget<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Kini, dengan adanya perkembangan teknologi, manajer proyek bisa menggunakan <\/span><span style=\"font-weight: 400;\">software<\/span><span style=\"font-weight: 400;\"> pembantu untuk mempermudah pekerjaannya. Pemilihan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-penting-untuk-perusahaan-konstruksi\/\">software manajemen proyek konstruksi<\/a> yang tepat juga bisa meningkatkan produktivitas dan efisiensi proyek, serta menjaga agar tidak terjadi <\/span><span style=\"font-weight: 400;\">over budget. <\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Perangkat lunak seperti <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Hash Construction Suite<\/span><\/a><span style=\"font-weight: 400;\"> merupakan salah satu contoh yang bisa perusahaan konstruksi gunakan untuk membantu pengelolaan proyeknya. Berbagai fitur yang telah terintegrasi dengan modul-modul esensial pada aplikasi ini akan mempermudah pemantauan proyek, pelacakan pengeluaran, serta keadaan keuangan secara <\/span><span style=\"font-weight: 400;\">real-time. <\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h3 id=\"i\"><span style=\"font-weight: 400;\">5. Jaga komunikasi dengan klien<\/span><\/h3>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-73467 size-full aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-24-1.png\" alt=\"Menjaga Komunikasi dengan Klien\" width=\"700\" height=\"360\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-24-1.png 700w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-24-1-300x154.png 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-24-1-150x77.png 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/banner-cw-24-1-696x358.png 696w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Dalam industri konstruksi, komunikasi antara manajer proyek dan <\/span><span style=\"font-weight: 400;\">stakeholders <\/span><span style=\"font-weight: 400;\">harus berjalan lancar. Hal ini bertujuan agar tidak terjadi kesalahpahaman yang bisa menyebabkan kerugian bagi perusahaan. Kerugian tersebut dapat berupa terbuangnya waktu, tenaga, maupun material, sehingga proyek terancam molor dan pengeluaran kian membengkak.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Baik pemangku kepentingan maupun anggota proyek harus membangun komunikasi yang baik, agar masing-masing pihak bisa mendapatkan informasi yang tepat. Dengan informasi yang sesuai inilah proyek bisa berjalan sesuai dengan rencana tanpa adanya sumber daya yang terbuang sia-sia.<\/span><\/p>\n<h3 id=\"j\"><span style=\"font-weight: 400;\">6. Selalu pantau perkembangan proyek agar tidak over budget<\/span><\/h3>\n<p>Perkembangan proyek konstruksi harus selalu diawasi untuk memastikan pelaksanaannya sesuai dengan rencana awal. Dengan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/fungsi-manajemen-keuangan-proyek-konstruksi\/\">manajemen keuangan proyek konstruksi<\/a>, pemantauan anggaran dan pengeluaran menjadi lebih efektif, sehingga over budget dapat dihindari dengan cepat dan tepat.<\/p>\n<p>Sistem yang menyediakan pemantauan secara real-time sangat diperlukan untuk mengawasi perkembangan proyek, performa kerja, timeline, dan inventaris secara efisien. Sistem terintegrasi ini memungkinkan manajer proyek mendapatkan informasi langsung melalui satu dashboard, membantu mempercepat pengambilan keputusan yang penting di lapangan.<\/p>\n<p><span style=\"font-weight: 400;\"><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\t.cta-in-article a {\r\n\t\tfont-size: 0px !important;\r\n\t\tcolor: #fff; \r\n\t\tpadding: 0px !important; \r\n\t\tborder-radius: 0px !important; \r\n\t\tdisplay: block !important; \r\n\t\ttext-decoration: none; \r\n\t}\r\n\t\r\n\t.cta-in-article {\r\n\t\tmargin: 0px !important;\r\n\t\tpadding: 0px !important;\r\n\t\tbox-shadow: none !important;\r\n\t}\r\n\t\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\/id\/offer\/download-skema-harga-software-erp?blog&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\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.Skema-Harga-web-resized.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=\"372\" height=\"465\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.-Skema-Harga-Mobile-372px.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><\/span><\/p>\n<h3 id=\"k\"><span style=\"font-weight: 400;\">7. Mengatur ulang pembagian tugas dan tanggungjawab<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Jika dalam pelaksanaan proyek Anda menemukan adanya pengeluaran dana yang melebihi budget awal, maka perlu adanya evaluasi secara mendalam. Evaluasi bisa Anda lakukan di seluruh aspek, mulai dari efektivitas vendor, kondisi lapangan, hingga performa kerja pegawai konstruksi Anda.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Jika permasalahan ternyata ada pada staf<\/span> <span style=\"font-weight: 400;\">yang bertugas, maka Anda harus mengatur ulang pembagian tugas. Pembagian ini harus disesuaikan dengan kompetensi yang dimiliki agar bisa meningkatkan efisiensi pekerjaan. Oleh karena itu, perlu adanya sistem otomatis yang dapat mengawasi dan memberikan laporan kinerja pegawai konstruksi secara <\/span><span style=\"font-weight: 400;\">real-time. <\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<h2 id=\"3\"><b>Kesimpulan<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Untuk mengatasi masalah pembengkakan biaya konstruksi, perusahaan perlu mengambil langkah-langkah pencegahan yang efektif. Dari tujuh tips di atas, dapat Anda simpulkan bahwa, selain perencanaan yang komprehensif, penggunaan teknologi dan sistem manajemen proyek yang efektif dapat membantu mengontrol biaya konstruksi dan mengelola proyek secara keseluruhan.\u00a0<\/span><\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Desktop.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/47-Construction-Mobile.webp\" alt=\"HashConstructionSuite\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<p><span style=\"font-weight: 400;\">HashMicro hadir dengan <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/hash-construction-software\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">Hash Construction Suite<\/span><\/a><span style=\"font-weight: 400;\"> sebagai solusi dalam mengatur proyek konstruksi Anda. Dengan <\/span><span style=\"font-weight: 400;\">software <\/span><span style=\"font-weight: 400;\">ini, Anda bisa mengelola pendanaan, perencanaan, pengadaan bahan baku, hingga pengelolaan karyawan dan kontrak dalam satu sistem secara <\/span><span style=\"font-weight: 400;\">real time. <\/span><span style=\"font-weight: 400;\">Sistem ini juga menyediakan portal bagi para vendor untuk mempermudah pengadaan Anda. Dapatkan <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/offer\/download-skema-harga-software-erp\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">skema harga<\/span><\/a><span style=\"font-weight: 400;\"> dan <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">demo gratis<\/a> sekarang!<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pembengkakan biaya proyek adalah masalah serius yang kerap dialami oleh perusahaan konstruksi. Hal ini dapat mengakibatkan beban keuangan signifikan bagi perusahaan, terutama jika harus menanggung biaya tambahan tidak terduga. Data dari Small Business.chron menunjukkan bahwa sekitar 85% dari proyek konstruksi mengalami over budget atau cost overrun dari perencanaan anggaran awalnya.\u00a0 Fenomena ini dapat terjadi akibat [&hellip;]<\/p>\n","protected":false},"author":161,"featured_media":138506,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[3],"tags":[],"class_list":{"0":"post-72951","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-construction"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi<\/title>\n<meta name=\"description\" content=\"Over Budget proyek konstruksi merupakan fenomena yang dapat merugikan perusahaan. Lalu, bagaimana cara mencegahnya? Simak uraian berikut ini!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi\" \/>\n<meta property=\"og:description\" content=\"Over Budget proyek konstruksi merupakan fenomena yang dapat merugikan perusahaan. Lalu, bagaimana cara mencegahnya? Simak uraian berikut ini!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-02T10:03:39+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-16T04:53:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png\" \/>\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\/png\" \/>\n<meta name=\"author\" content=\"Jonathan Kurniawan\" \/>\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=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kurniawan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\"},\"author\":{\"name\":\"Jonathan Kurniawan\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5\"},\"headline\":\"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi\",\"datePublished\":\"2024-03-02T10:03:39+00:00\",\"dateModified\":\"2025-12-16T04:53:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\"},\"wordCount\":1250,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png\",\"articleSection\":[\"Construction Suite\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\",\"name\":\"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png\",\"datePublished\":\"2024-03-02T10:03:39+00:00\",\"dateModified\":\"2025-12-16T04:53:09+00:00\",\"description\":\"Over Budget proyek konstruksi merupakan fenomena yang dapat merugikan perusahaan. Lalu, bagaimana cara mencegahnya? Simak uraian berikut ini!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png\",\"width\":1200,\"height\":650,\"caption\":\"7 tips meminimalisir over budget untuk perusahaan konstruksi\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/hashmicro\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5\",\"name\":\"Jonathan Kurniawan\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jonathan-Kurniawan-3-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jonathan-Kurniawan-3-96x96.webp\",\"caption\":\"Jonathan Kurniawan\"},\"description\":\"Jonathan adalah seorang praktisi dalam bidang procurement, TMS, dan supply chain dengan pengalaman 5 tahun. Spesialis dalam mengulas topik seputar manajemen vendor, budget control procurement, otomatisasi proses pengadaan barang, dan analisis procurement. Tulisannya secara konsisten mendukung pengambilan keputusan bisnis yang lebih strategis.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"laki-laki\",\"knowsAbout\":[\"procurement\",\"pengadaan\",\"pembelian\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/jonathankurniawan\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi","description":"Over Budget proyek konstruksi merupakan fenomena yang dapat merugikan perusahaan. Lalu, bagaimana cara mencegahnya? Simak uraian berikut ini!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/","og_locale":"id_ID","og_type":"article","og_title":"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi","og_description":"Over Budget proyek konstruksi merupakan fenomena yang dapat merugikan perusahaan. Lalu, bagaimana cara mencegahnya? Simak uraian berikut ini!","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2024-03-02T10:03:39+00:00","article_modified_time":"2025-12-16T04:53:09+00:00","og_image":[{"width":1200,"height":650,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png","type":"image\/png"}],"author":"Jonathan Kurniawan","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Jonathan Kurniawan","Estimasi waktu membaca":"8 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/"},"author":{"name":"Jonathan Kurniawan","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5"},"headline":"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi","datePublished":"2024-03-02T10:03:39+00:00","dateModified":"2025-12-16T04:53:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/"},"wordCount":1250,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png","articleSection":["Construction Suite"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/","name":"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png","datePublished":"2024-03-02T10:03:39+00:00","dateModified":"2025-12-16T04:53:09+00:00","description":"Over Budget proyek konstruksi merupakan fenomena yang dapat merugikan perusahaan. Lalu, bagaimana cara mencegahnya? Simak uraian berikut ini!","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/03\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi.png","width":1200,"height":650,"caption":"7 tips meminimalisir over budget untuk perusahaan konstruksi"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/7-tips-meminimalisir-over-budget-untuk-perusahaan-konstruksi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"7 Tips Meminimalisir Over Budget untuk Perusahaan Konstruksi"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5","name":"Jonathan Kurniawan","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jonathan-Kurniawan-3-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jonathan-Kurniawan-3-96x96.webp","caption":"Jonathan Kurniawan"},"description":"Jonathan adalah seorang praktisi dalam bidang procurement, TMS, dan supply chain dengan pengalaman 5 tahun. Spesialis dalam mengulas topik seputar manajemen vendor, budget control procurement, otomatisasi proses pengadaan barang, dan analisis procurement. Tulisannya secara konsisten mendukung pengambilan keputusan bisnis yang lebih strategis.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"laki-laki","knowsAbout":["procurement","pengadaan","pembelian"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/jonathankurniawan\/"}]}},"focus_keyword":"over budget","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/72951","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/161"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=72951"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/72951\/revisions"}],"predecessor-version":[{"id":180812,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/72951\/revisions\/180812"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/138506"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=72951"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=72951"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=72951"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}