{"id":183128,"date":"2026-01-07T15:53:08","date_gmt":"2026-01-07T08:53:08","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=183128"},"modified":"2026-01-15T10:02:22","modified_gmt":"2026-01-15T03:02:22","slug":"hr-budgeting","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/","title":{"rendered":"Strategi HR Budgeting Efektif: Panduan &#038; Cara Mengelolanya"},"content":{"rendered":"<p>HR budgeting sering kali terabaikan, padahal ini adalah kunci untuk mengontrol biaya terbesar perusahaan, biaya SDM. Tanpa strategi yang tepat, perusahaan bisa terjebak dalam pemborosan atau bahkan kekurangan anggaran yang menghambat pengembangan talenta dan tujuan jangka panjang.<\/p>\n<p>Mengandalkan penganggaran manual yang sulit dipantau hanya akan memperburuk masalah ini. Keputusan yang diambil jadi tidak efisien, dan sering kali terjadi pemborosan yang tak terdeteksi. Maka, penting untuk beralih ke sistem yang dapat mengelola biaya SDM secara lebih presisi dan terstruktur.<\/p>\n<p>Dengan HR budgeting yang matang dan pemahaman yang tepat, Anda bisa memaksimalkan anggaran, meningkatkan efisiensi, dan membuat keputusan yang lebih strategis. Ini akan memastikan bahwa setiap dana yang dikeluarkan memberi dampak maksimal untuk perkembangan perusahaan.<\/p>\n<table style=\"border-collapse: collapse; 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 aria-level=\"1\"><a href=\"#a\"><strong>HR budgeting adalah<\/strong><\/a> proses mengalokasikan dana untuk seluruh kebutuhan SDM, mulai rekrutmen, kompensasi, hingga pelatihan dan operasional.<\/li>\n<li aria-level=\"1\"><a href=\"#b\"><strong>Alokasi anggaran pada HR krusial karena<\/strong><\/a> membantu mengontrol biaya SDM, menekan turnover, dan memastikan keputusan rekrutmen serta pengembangan karyawan lebih terukur berbasis data.<\/li>\n<li><a href=\"#c\"><strong>Penyusunan HR budget yang efektif<\/strong><\/a> dilakukan melalui analisis data historis, penyelarasan tujuan strategis, evaluasi biaya SDM, dan pemantauan berkala untuk menjaga efisiensi serta relevansi anggaran.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><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<\/span><\/p>\n<p><span data-sheets-root=\"1\"><span id=\"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><\/span><\/span><\/p>\n<h2>Apa Itu HR Budgeting?<\/h2>\n<p>HR budgeting adalah proses alokasi dana untuk mendukung seluruh kebutuhan SDM, dari rekrutmen hingga pengembangan karyawan. Ini lebih dari sekadar mencatat gaji, tetapi merancang rencana finansial untuk seluruh siklus hidup karyawan.<\/p>\n<p>Proses ini mencakup biaya rekrutmen, pelatihan, hingga teknologi yang mendukung operasional HR. Dengan perencanaan yang matang, HR dapat berkontribusi langsung pada profitabilitas perusahaan.<\/p>\n<p><span id=\"b\">Pengelolaan anggaran yang buruk dapat menyebabkan kebocoran finansial, seperti biaya lembur atau denda kepatuhan. Oleh karena itu, perencanaan anggaran HR harus berbasis data yang akurat dan transparan untuk menjaga stabilitas keuangan jangka panjang.<\/span><\/p>\n<h2>Mengapa HR Budgeting Sangat Krusial bagi Perusahaan?<\/h2>\n<p>HR budgeting tidak hanya tentang alokasi dana untuk gaji karyawan, tetapi juga tentang perencanaan strategis yang mendukung pertumbuhan dan stabilitas perusahaan. Dengan perencanaan yang tepat, setiap anggaran yang dialokasikan dapat mendukung tujuan jangka panjang perusahaan.<\/p>\n<ul>\n<li>Kontrol Biaya Operasional yang Lebih Baik: HR budgeting membantu perusahaan mengontrol biaya operasional dengan memastikan dana dialokasikan secara efisien untuk kebutuhan SDM. Hal ini mengurangi pemborosan dan memastikan anggaran digunakan secara maksimal.<\/li>\n<li>Meningkatkan Keterikatan dan Mengurangi Turnover: Alokasi dana yang tepat untuk kompensasi dan benefit dapat meningkatkan keterikatan karyawan. Ini membantu <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/turnover-karyawan\/\">mengurangi tingkat turnover<\/a> dan menekan biaya rekrutmen ulang yang mahal.<\/li>\n<li>Mendukung Perencanaan dan Pertumbuhan Bisnis: HR budgeting memungkinkan perusahaan untuk memprediksi biaya masa depan dan menyesuaikan anggaran dengan kebutuhan strategis. Dengan perencanaan yang matang, perusahaan bisa tumbuh secara berkelanjutan dan efisien.<\/li>\n<li>Mengukur Return on Investment (ROI) dari Human Capital: Dengan HR budgeting, perusahaan bisa mengukur efektivitas setiap investasi dalam SDM. Setiap rupiah yang dikeluarkan dapat dipertanggungjawabkan berdasarkan kontribusinya terhadap tujuan perusahaan.<\/li>\n<\/ul>\n<h2>Komponen Utama yang Wajib Ada dalam Anggaran HR<\/h2>\n<p>Anggaran HR terdiri dari berbagai elemen kompleks yang saling berkaitan dan harus diperhitungkan secara rinci. Berikut adalah rincian komponen biaya krusial yang harus Anda masukkan ke dalam perencanaan:<\/p>\n<h3>1. Biaya Rekrutmen dan Onboarding (Talent Acquisition)<\/h3>\n<p>Biaya ini mencakup pengeluaran untuk iklan lowongan kerja, <em>agency fee<\/em>, hingga biaya pemeriksaan latar belakang kandidat. Selain itu, Anda juga perlu mengalokasikan dana untuk proses administrasi saat karyawan baru masuk, seperti penyediaan <em>onboarding kits<\/em>. Perhitungan yang meleset di sini bisa membengkakkan biaya per rekrutan (<em>cost per hire<\/em>).<\/p>\n<h3>2. Kompensasi dan Tunjangan (Compensation &amp; Benefits)<\/h3>\n<p>Ini adalah porsi terbesar dalam anggaran, meliputi gaji pokok, tunjangan tetap, dan asuransi kesehatan swasta. Jangan lupa mengalokasikan iuran wajib seperti BPJS Ketenagakerjaan dan Kesehatan serta bonus tahunan atau <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/perhitungan-thr-karyawan-perusahaan\/\">memperhitungkan THR sesuai regulasi Indonesia<\/a>. Kesalahan hitung di sini dapat berakibat fatal pada kepatuhan hukum perusahaan.<\/p>\n<h3>3. Pelatihan dan Pengembangan (Training &amp; Development)<\/h3>\n<p>Alokasi dana untuk peningkatan kompetensi tim sangat penting agar perusahaan tetap kompetitif di pasar. Biaya ini mencakup pendaftaran <em>workshop<\/em>, sertifikasi profesi, seminar, atau investasi pada sistem manajemen pembelajaran (LMS). Pengembangan karyawan yang berkelanjutan adalah investasi jangka panjang untuk produktivitas.<\/p>\n<h3>4. Manajemen Kinerja dan Apresiasi Karyawan<\/h3>\n<p>Untuk menjaga motivasi tim, perusahaan perlu menganggarkan dana khusus bagi program penghargaan dan insentif kinerja. Biaya ini bisa dialokasikan untuk acara <em>gathering<\/em>, bonus pencapaian target, atau penggunaan <em>software<\/em> penilaian KPI. Apresiasi yang nyata terbukti efektif meningkatkan loyalitas karyawan.<\/p>\n<h3>5. Teknologi dan Software HRIS<\/h3>\n<p><span id=\"c\">Investasi pada <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/hr-software-terbaik-di-indonesia\/\" target=\"_blank\" rel=\"noopener\">alat digital\u00a0untuk mengelola karyawan<\/a>\u00a0seperti <em>software<\/em> HRIS atau sistem <em>payroll<\/em> otomatis kini menjadi kebutuhan pokok, bukan lagi opsi. Biaya ini mencakup lisensi perangkat lunak, pemeliharaan sistem, dan pelatihan penggunaan bagi staf HR. Teknologi ini membantu mengurangi <em>human error<\/em> dan mengefisiensikan waktu kerja tim administrasi.<\/span><\/p>\n<h2>Langkah-Langkah Menyusun HR Budget yang Efektif<\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-183668 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132.webp\" alt=\"\" width=\"1024\" height=\"973\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132-300x285.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132-768x730.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132-442x420.webp 442w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132-150x143.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132-696x661.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/hris-e1768204421132-24x24.webp 24w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Menyusun HR budget yang efektif memerlukan pendekatan yang sistematis dan berbasis data untuk memastikan alokasi dana yang tepat. Dengan langkah-langkah yang terstruktur, Anda dapat meminimalkan pemborosan dan memastikan pengelolaan SDM yang optimal.<\/p>\n<p>Berikut adalah langkah-langkah penting yang perlu diikuti dalam menyusun HR budget yang sukses:<\/p>\n<ul>\n<li>Tinjauan Data Historis: Langkah pertama adalah melakukan audit terhadap pengeluaran HR tahun sebelumnya untuk mengidentifikasi tren biaya atau pos anggaran yang tidak efektif. Data historis memberikan landasan untuk membuat proyeksi anggaran yang lebih realistis di tahun depan.<\/li>\n<li>Penentuan Tujuan Strategis: Selaraskan anggaran dengan rencana kebutuhan tenaga kerja di masa depan, seperti ekspansi bisnis atau pembukaan cabang baru. Pastikan anggaran yang disusun mendukung tujuan jangka panjang perusahaan.<\/li>\n<li>Analisis Biaya Mendalam: Lakukan analisis menyeluruh terhadap biaya SDM yang ada, termasuk gaji, tunjangan, dan pelatihan. Ini memastikan bahwa anggaran yang dibuat dapat mengoptimalkan pengeluaran dan meminimalkan pemborosan.<\/li>\n<li>Pemantauan Berkala: Pemantauan anggaran secara berkala memungkinkan penyesuaian jika terjadi perubahan dalam kebutuhan SDM atau kondisi pasar. Dengan pemantauan ini, Anda dapat memastikan bahwa anggaran tetap relevan dan efektif sepanjang tahun.<\/li>\n<\/ul>\n<h2>Hidden Costs (Biaya Tersembunyi) dalam HR yang Sering Terlewat<\/h2>\n<p>Biaya tak terduga meliputi <em>turnover cost<\/em>, biaya akibat absensi tinggi, dan pembayaran lembur yang tidak terpantau.<\/p>\n<p>Banyak perusahaan sering mengabaikan tingginya biaya akibat angka <em>turnover<\/em> karyawan yang tidak terkendali. Biaya penggantian karyawan, mulai dari rekrutmen hingga pelatihan ulang, seringkali jauh lebih mahal daripada biaya program retensi. Ini adalah kebocoran anggaran yang sering tidak disadari oleh manajemen.<\/p>\n<p>Selain itu, biaya lembur (<em>overtime<\/em>) yang tidak terpantau dan tingginya tingkat absensi dapat mengganggu produktivitas operasional secara signifikan. Ketidakhadiran karyawan memaksa perusahaan membayar upah lembur bagi karyawan lain untuk menutupi beban kerja. Akibatnya, anggaran gaji bisa membengkak melebihi proyeksi awal.<\/p>\n<h2>Tips Mengoptimalkan Anggaran HR Tanpa Mengurangi Kualitas<\/h2>\n<p>Strategi efisiensi meliputi otomatisasi proses, fokus pada retensi karyawan, dan evaluasi vendor pihak ketiga secara berkala.<\/p>\n<p>Perusahaan sangat disarankan menggunakan teknologi untuk mengurangi biaya administrasi manual yang memakan waktu dan penggunaan kertas berlebih. Selain menghemat biaya operasional, sistem digital juga meminimalisir risiko denda akibat kesalahan perhitungan pajak atau gaji. Efisiensi administratif ini memungkinkan tim HR fokus pada hal strategis.<\/p>\n<p>Strategi berikutnya adalah mendorong fokus pada retensi karyawan dan pengembangan talenta internal daripada terus-menerus merekrut dari luar. Promosi internal dan <em>upskilling<\/em> biasanya memakan biaya yang lebih rendah dibandingkan proses rekrutmen eksternal yang panjang. Ini juga membangun budaya perusahaan yang positif dan loyal.<\/p>\n<h2><strong>Regulasi Perpajakan yang Perlu Diperhatikan dalam HR Budgeting di Indonesia<\/strong><\/h2>\n<p>Di Indonesia, HR budgeting tidak hanya harus memperhitungkan alokasi biaya SDM, tetapi juga mematuhi berbagai peraturan perpajakan yang berlaku. Setiap pengeluaran untuk SDM, baik gaji, tunjangan, atau bonus, memiliki dampak langsung terhadap kewajiban pajak yang harus dipenuhi oleh perusahaan.<\/p>\n<p>Penting bagi perusahaan untuk memastikan bahwa seluruh biaya SDM yang tercatat dalam anggaran sesuai dengan regulasi perpajakan, termasuk <a href=\"https:\/\/www.pajak.go.id\/id\/pph-pasal-2126\">ketentuan mengenai Pajak Penghasilan (PPh)<\/a> dan pajak terkait lainnya. Misalnya, perusahaan wajib memotong dan menyetor PPh 21 sesuai dengan peraturan yang ada. Dengan mengintegrasikan sistem HR yang mematuhi regulasi perpajakan ini, perusahaan dapat menjaga kepatuhan dan menghindari sanksi administratif yang merugikan.<\/p>\n<p>Penting untuk memperhatikan peraturan terbaru terkait PPN dan PPh, yang mempengaruhi cara perusahaan mengelola dan melaporkan kewajiban pajaknya. Perusahaan juga harus mengikuti pedoman yang tercantum dalam<strong> Peraturan Pemerintah Nomor 58 Tahun 2023<\/strong> untuk memastikan kesesuaian dalam perhitungan dan pelaporan pajak.<\/p>\n<h2>Mengelola HR Budgeting dengan Lebih Efisien dengan Solusi HRIS<\/h2>\n<p>Pengelolaan anggaran sumber daya manusia (SDM) sering menjadi tantangan bagi banyak perusahaan, terutama dalam mengatur payroll, tunjangan, dan klaim expense. Tanpa sistem yang terintegrasi, proses ini bisa memakan waktu dan rentan terhadap kesalahan yang akhirnya mempengaruhi pengambilan keputusan.<\/p>\n<p>Salah satu klien kami, <strong>Buma Perindahindo<\/strong>, sebelumnya menghadapi kesulitan dalam mengelola anggaran SDM mereka. Namun, setelah <a href=\"https:\/\/www.hashmicro.com\/id\/manajemen-human-resource?ref=HR-budgeting\">mengimplementasikan <strong>solusi digitalisasi HRIS dari HashMicro<\/strong><\/a>, mereka berhasil mengelola payroll dan pajak dengan akurasi tinggi, serta memonitor kinerja karyawan secara real-time, mengurangi kesalahan, dan mempercepat proses administrasi.<\/p>\n<p>Dengan menggunakan fitur seperti Budget vs Realization Report, mereka dapat dengan mudah membandingkan antara anggaran yang direncanakan dan pengeluaran yang sebenarnya. Hal ini memungkinkan manajemen untuk membuat keputusan strategis yang lebih tepat, dengan data yang lebih akurat dan terkini.<\/p>\n<p>Melalui implementasi HRIS yang terintegrasi, perusahaan seperti Buma Perindahindo kini dapat mengelola biaya SDM dan memantau kinerja karyawan dengan lebih efisien, sambil menjaga kepatuhan terhadap regulasi yang berlaku, serta memastikan laporan keuangan tetap transparan dan akurat.<\/p>\n<h2><strong>Pertanyaan Seputar HR Budgeting<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa Perbedaan Antara HR Budget Dan HR Forecast?<\/strong><\/summary>\n<p>HR budget adalah rencana alokasi dana yang ditetapkan untuk periode tertentu (biasanya satu tahun), sedangkan HR forecast adalah prediksi kebutuhan dana di masa depan berdasarkan tren data saat ini.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Berapa Persentase Ideal Biaya HR Dari Total Pendapatan Perusahaan?<\/strong><\/summary>\n<p>Persentase ideal biaya HR bervariasi tergantung industri, namun umumnya berkisar antara 15% hingga 30% dari total pendapatan perusahaan. Industri jasa biasanya memiliki persentase yang lebih tinggi dibandingkan manufaktur.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah Software HRIS Masuk Dalam Kategori Biaya Modal (CAPEX) Atau Operasional (OPEX)?<\/strong><\/summary>\n<p>Software HRIS bisa masuk ke CAPEX jika dibeli putus (on-premise) sebagai aset, atau masuk OPEX jika menggunakan model berlangganan (SaaS\/Cloud) yang dibayar berkala.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana Cara Mengelola Budget Pelatihan Agar Tidak Sia-sia?<\/strong><\/summary>\n<p>Kelola budget pelatihan dengan melakukan analisis kebutuhan training (TNA) terlebih dahulu, pilih metode pelatihan yang efektif, dan ukur ROI pasca-pelatihan melalui peningkatan kinerja karyawan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana Cara Menghitung Cost Per Hire Dalam Budgeting?<\/strong><\/summary>\n<p>Cost per Hire dihitung dengan menjumlahkan seluruh biaya rekrutmen (iklan, agensi, tim rekrutmen) lalu membaginya dengan jumlah karyawan yang berhasil direkrut dalam periode tersebut.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>HR budgeting sering kali terabaikan, padahal ini adalah kunci untuk mengontrol biaya terbesar perusahaan, biaya SDM. Tanpa strategi yang tepat, perusahaan bisa terjebak dalam pemborosan atau bahkan kekurangan anggaran yang menghambat pengembangan talenta dan tujuan jangka panjang. Mengandalkan penganggaran manual yang sulit dipantau hanya akan memperburuk masalah ini. Keputusan yang diambil jadi tidak efisien, dan [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":183111,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-183128","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"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>Strategi HR Budgeting Efektif: Panduan &amp; Cara Mengelolanya &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Pelajari pentingnya HR budgeting untuk keberlanjutan organisasi dan manajemen biaya sumber daya manusia yang efektif.\" \/>\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\/hr-budgeting\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Strategi HR Budgeting Efektif: Panduan &amp; Cara Mengelolanya\" \/>\n<meta property=\"og:description\" content=\"Pelajari pentingnya HR budgeting untuk keberlanjutan organisasi dan manajemen biaya sumber daya manusia yang efektif.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/\" \/>\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=\"2026-01-07T08:53:08+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-15T03:02:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Reno Wicaksana\" \/>\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=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 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\/hr-budgeting\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"Strategi HR Budgeting Efektif: Panduan &#038; Cara Mengelolanya\",\"datePublished\":\"2026-01-07T08:53:08+00:00\",\"dateModified\":\"2026-01-15T03:02:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/\"},\"wordCount\":1604,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/\",\"name\":\"Strategi HR Budgeting Efektif: Panduan & Cara Mengelolanya &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp\",\"datePublished\":\"2026-01-07T08:53:08+00:00\",\"dateModified\":\"2026-01-15T03:02:22+00:00\",\"description\":\"Pelajari pentingnya HR budgeting untuk keberlanjutan organisasi dan manajemen biaya sumber daya manusia yang efektif.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp\",\"width\":1200,\"height\":675,\"caption\":\"HR budgeting\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Strategi HR Budgeting Efektif: Panduan &#038; Cara Mengelolanya\"}]},{\"@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\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"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\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/william-w-88353a262\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Strategi HR Budgeting Efektif: Panduan & Cara Mengelolanya &#187; HashMicro Indonesia","description":"Pelajari pentingnya HR budgeting untuk keberlanjutan organisasi dan manajemen biaya sumber daya manusia yang efektif.","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\/hr-budgeting\/","og_locale":"id_ID","og_type":"article","og_title":"Strategi HR Budgeting Efektif: Panduan & Cara Mengelolanya","og_description":"Pelajari pentingnya HR budgeting untuk keberlanjutan organisasi dan manajemen biaya sumber daya manusia yang efektif.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-01-07T08:53:08+00:00","article_modified_time":"2026-01-15T03:02:22+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"Strategi HR Budgeting Efektif: Panduan &#038; Cara Mengelolanya","datePublished":"2026-01-07T08:53:08+00:00","dateModified":"2026-01-15T03:02:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/"},"wordCount":1604,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/","name":"Strategi HR Budgeting Efektif: Panduan & Cara Mengelolanya &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp","datePublished":"2026-01-07T08:53:08+00:00","dateModified":"2026-01-15T03:02:22+00:00","description":"Pelajari pentingnya HR budgeting untuk keberlanjutan organisasi dan manajemen biaya sumber daya manusia yang efektif.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/HR-budgeting.webp","width":1200,"height":675,"caption":"HR budgeting"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/hr-budgeting\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Strategi HR Budgeting Efektif: Panduan &#038; Cara Mengelolanya"}]},{"@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\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","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\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"HR budgeting","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/183128","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\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=183128"}],"version-history":[{"count":7,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/183128\/revisions"}],"predecessor-version":[{"id":185026,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/183128\/revisions\/185026"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/183111"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=183128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=183128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=183128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}