{"id":177089,"date":"2025-11-18T00:00:00","date_gmt":"2025-11-17T17:00:00","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=177089"},"modified":"2026-03-09T14:24:12","modified_gmt":"2026-03-09T07:24:12","slug":"audit-procurement","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/","title":{"rendered":"Audit Procurement untuk Pengadaan yang Lebih Efisien"},"content":{"rendered":"<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-(--header-height)\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"0977df73-5483-4352-b8bb-3cb1ba8f2b7c\" data-testid=\"conversation-turn-57\" data-scroll-anchor=\"false\" data-turn=\"user\"><\/article>\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-69a7860a-8468-83a0-a79e-81fd32dded3f-10\" data-testid=\"conversation-turn-58\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"fc0c95a3-5605-4fe8-b2ed-681098493422\" data-message-model-slug=\"gpt-5-4-thinking\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"0\" data-end=\"395\">Memasuki 2026, efisiensi operasional menjadi kebutuhan utama bagi perusahaan seiring dinamika pasar yang terus berubah. Salah satu area yang sering memicu pemborosan, tetapi belum selalu mendapat perhatian penuh, adalah proses pengadaan atau <em data-start=\"242\" data-end=\"255\">procurement<\/em>. Tanpa pengawasan yang memadai, pengeluaran bisa menjadi tidak terkontrol, vendor kurang kompetitif, serta risiko kepatuhan ikut meningkat.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<p>Audit <em data-start=\"403\" data-end=\"416\">procurement<\/em> berperan penting untuk memastikan setiap pengeluaran perusahaan memberikan nilai yang optimal. Selain itu, proses ini juga mencakup evaluasi strategi pengadaan, transparansi kerja sama vendor, serta kepatuhan terhadap kebijakan internal dan regulasi yang berlaku.<\/p>\n<p>Dalam praktiknya, banyak audit <em data-start=\"720\" data-end=\"733\">procurement<\/em> masih melakukan pencatatan secara manual dan bersifat reaktif. Akibatnya, ketidaksesuaian harga maupun proses baru teridentifikasi setelah menimbulkan dampak keuangan. Oleh karena itu, pendekatan audit yang lebih modern membantu perusahaan mengelola risiko tersebut sejak awal.<\/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: #8a0e19; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#definisi\">Audit procurement<\/a> adalah proses evaluasi untuk memastikan setiap aktivitas pengadaan berjalan efisien, transparan, dan sesuai regulasi guna menjaga kontrol biaya dan integritas operasional.<\/li>\n<li aria-level=\"1\"><a href=\"#checklist\">Checklist audit<\/a> memastikan tidak ada elemen kritis seperti kontrak, vendor, anggaran, dan proses persetujuan yang terlewat dalam penilaian pengadaan.<\/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> <span id=\"definisi\"><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<h2><span id=\"definisi\">Mengenal Audit Procurement dalam Proses Pengadaan<\/span><\/h2>\n<p data-start=\"55\" data-end=\"412\"><em data-start=\"55\" data-end=\"74\">Audit procurement<\/em> merupakan proses pemeriksaan sistematis serta independen terhadap aktivitas pengadaan untuk menilai efisiensi, efektivitas, serta kepatuhan terhadap kebijakan internal dan regulasi. Selain itu, pemeriksaan ini mencakup seluruh tahapan pengadaan, mulai dari perencanaan kebutuhan, pemilihan vendor, hingga pembayaran serta manajemen aset.<\/p>\n<p data-start=\"414\" data-end=\"812\" data-is-last-node=\"\" data-is-only-node=\"\">Namun demikian, audit ini sering baru mendapat perhatian ketika masalah seperti pembengkakan biaya atau ketidakpatuhan mulai muncul. Padahal, <em data-start=\"556\" data-end=\"575\">audit procurement<\/em> yang dilakukan secara proaktif dapat berperan sebagai kontrol preventif untuk mengidentifikasi area perbaikan. Dengan demikian, perusahaan dapat memperkuat fondasi operasional sekaligus menjaga stabilitas finansial secara lebih terukur.<\/p>\n<h2>Manfaat Strategis Audit Procurement bagi Manajemen<\/h2>\n<p>Melakukan audit pada departemen pengadaan memiliki tujuan strategis yang jauh melampaui sekadar pemeriksaan kepatuhan. Proses ini merupakan investasi untuk kesehatan jangka panjang perusahaan. Selain itu, manfaat yang diperoleh sering kali memberikan <em data-start=\"307\" data-end=\"329\">return on investment<\/em> (<em data-start=\"331\" data-end=\"336\">ROI<\/em>) yang signifikan.<\/p>\n<h3>1. Mengidentifikasi potensi penghematan biaya<\/h3>\n<p>Pertama, tujuan utama audit ini adalah menemukan area pemborosan yang tidak perlu. Auditor akan menganalisis pola pembelian, harga kontrak, serta biaya tersembunyi untuk mengidentifikasi peluang penghematan. Dengan demikian, hasil audit dapat berupa rekomendasi untuk konsolidasi vendor, negosiasi ulang kontrak, maupun perbaikan proses agar biaya operasional menjadi lebih efisien.<\/p>\n<h3>2. Meningkatkan kepatuhan dan mitigasi risiko<\/h3>\n<p>Kedua, kepatuhan merupakan fondasi dari proses pengadaan yang sehat. Audit memastikan setiap transaksi sejalan dengan kebijakan internal perusahaan serta peraturan pemerintah, seperti ketentuan yang ditetapkan oleh <a href=\"https:\/\/lkpp.go.id\/\">LKPP<\/a> untuk pengadaan pemerintah. Oleh karena itu, perusahaan dapat mengurangi risiko hukum, denda, serta kerusakan reputasi yang mungkin muncul akibat ketidakpatuhan.<\/p>\n<h3>3. Mengoptimalkan hubungan dengan vendor<\/h3>\n<p>Selanjutnya, vendor merupakan mitra strategis sehingga hubungan yang sehat menjadi sangat penting. Audit akan mengevaluasi proses seleksi, metrik kinerja, serta komunikasi dengan vendor. Dengan data yang objektif, Anda dapat membangun kemitraan yang lebih kuat, memastikan kualitas pasokan tetap terjaga, dan juga mendorong inovasi bersama.<\/p>\n<h3>4. Memperkuat efisiensi proses internal<\/h3>\n<p>Selain itu, proses yang berbelit-belit dan manual sering kali menjadi sumber inefisiensi. Audit akan memetakan alur kerja pengadaan dari awal hingga akhir, mengidentifikasi hambatan, lalu merekomendasikan penggunaan teknologi atau penyempurnaan prosedur. Tujuannya adalah menciptakan siklus pengadaan yang lebih cepat, lebih ramping, <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/lean-procurement\/\">sesuai prinsip lean procurement<\/a>.<\/p>\n<h3>5. Menyediakan data untuk pengambilan keputusan strategis<\/h3>\n<div class=\"flex flex-col text-sm pb-25\">\n<article class=\"text-token-text-primary w-full focus:outline-none [--shadow-height:45px] has-data-writing-block:pointer-events-none has-data-writing-block:-mt-(--shadow-height) has-data-writing-block:pt-(--shadow-height) [&amp;:has([data-writing-block])&gt;*]:pointer-events-auto scroll-mt-[calc(var(--header-height)+min(200px,max(70px,20svh)))]\" dir=\"auto\" tabindex=\"-1\" data-turn-id=\"request-69a7860a-8468-83a0-a79e-81fd32dded3f-12\" data-testid=\"conversation-turn-62\" data-scroll-anchor=\"true\" data-turn=\"assistant\">\n<div class=\"text-base my-auto mx-auto pb-10 [--thread-content-margin:var(--thread-content-margin-xs,calc(var(--spacing)*4))] @w-sm\/main:[--thread-content-margin:var(--thread-content-margin-sm,calc(var(--spacing)*6))] @w-lg\/main:[--thread-content-margin:var(--thread-content-margin-lg,calc(var(--spacing)*16))] px-(--thread-content-margin)\">\n<div class=\"[--thread-content-max-width:40rem] @w-lg\/main:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group\/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn\" tabindex=\"-1\">\n<div class=\"flex max-w-full flex-col gap-4 grow\">\n<div class=\"min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"99dd689a-c58a-4fc4-9584-c7c7695ac7be\" data-message-model-slug=\"gpt-5-4-thinking\">\n<div class=\"flex w-full flex-col gap-1 empty:hidden\">\n<div class=\"markdown prose dark:prose-invert w-full wrap-break-word dark markdown-new-styling\">\n<p data-start=\"2103\" data-end=\"2477\" data-is-last-node=\"\" data-is-only-node=\"\">Pada akhirnya, laporan hasil audit menyediakan data berharga bagi manajemen tingkat atas. Wawasan mengenai kinerja pengadaan, risiko, serta peluang penghematan dapat menjadi dasar yang kuat untuk merumuskan strategi bisnis. Maka dari itu, keputusan penting seperti ekspansi pasar atau pengembangan produk baru dapat dibuat dengan pertimbangan rantai pasok yang lebih matang.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<h2>Jenis-Jenis Audit Procurement yang Perlu Diketahui<\/h2>\n<p>Audit pengadaan tidak bersifat satu ukuran untuk semua. Jenis audit dapat disesuaikan sesuai tujuan spesifik yang ingin dicapai organisasi. Oleh karena itu, pemahaman terhadap setiap jenis audit membantu perusahaan memfokuskan sumber daya secara lebih efektif. Berikut empat jenis utama yang paling umum ditemukan dalam praktik.<\/p>\n<h3>1. Audit kepatuhan (Compliance audit)<\/h3>\n<p>Pertama, audit ini berfokus pada satu pertanyaan utama: apakah aktivitas pengadaan sudah mengikuti aturan yang berlaku. Auditor memeriksa apakah seluruh proses pengadaan mematuhi kebijakan internal perusahaan, standar industri, serta regulasi pemerintah. Oleh karena itu, jenis audit ini menjadi fondasi utama untuk mitigasi risiko hukum maupun finansial.<\/p>\n<h3>2. Audit proses (Process audit)<\/h3>\n<p>Selanjutnya, audit proses meninjau bagaimana pekerjaan terlaksanakan, bukan sekadar memastikan kesesuaian terhadap aturan. Tujuan utamanya adalah mengevaluasi efisiensi serta efektivitas alur kerja pengadaan, mulai dari permintaan pembelian hingga pembayaran. Selain itu, auditor juga akan mengidentifikasi potensi inefisiensi, duplikasi pekerjaan, atau langkah operasional yang tidak memberikan nilai tambah.<\/p>\n<h3>3. Audit vendor (Vendor audit)<\/h3>\n<p>Kemudian, audit vendor berfokus pada pemasok serta kontrak kerja sama yang sedang berjalan. Auditor akan mengevaluasi kinerja vendor berdasarkan metrik yang tercantum dalam kontrak atau <em data-start=\"1458\" data-end=\"1489\">Service Level Agreement (SLA)<\/em>. Selain itu, proses ini juga mencakup verifikasi keakuratan penagihan serta pemenuhan standar kualitas dan kepatuhan. Dengan demikian, perusahaan dapat memastikan setiap kontrak memberikan nilai maksimal.<\/p>\n<h3>4. Audit kinerja (Performance audit)<\/h3>\n<p>Terakhir, audit kinerja bertujuan mengukur sejauh mana departemen pengadaan mencapai <em data-start=\"1825\" data-end=\"1859\">Key Performance Indicators (KPI)<\/em>. Evaluasi Metrik yang biasanya mencakup realisasi penghematan biaya, waktu siklus pengadaan, tingkat kepuasan pengguna internal, serta kontribusi terhadap tujuan strategis perusahaan. Oleh karena itu, hasil audit ini sangat bermanfaat sebagai dasar evaluasi strategis bagi tim pengadaan.<\/p>\n<h2>Panduan Langkah-demi-Langkah Melakukan Audit Procurement yang Efektif<\/h2>\n<p>Melaksanakan audit procurement yang efektif memerlukan pendekatan yang terstruktur. Proses yang tidak terencana cenderung menghasilkan temuan terbatas. Oleh karena itu, terdapat lima tahapan utama yang perlu dijalankan agar audit memberikan dampak yang optimal.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter wp-image-185484\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/langkah-langkah-audit-procurement.webp\" alt=\"langkah-langkah audit procurement\" width=\"531\" height=\"796\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/langkah-langkah-audit-procurement.webp 667w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/langkah-langkah-audit-procurement-200x300.webp 200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/langkah-langkah-audit-procurement-280x420.webp 280w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/langkah-langkah-audit-procurement-150x225.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/langkah-langkah-audit-procurement-300x450.webp 300w\" sizes=\"auto, (max-width: 531px) 100vw, 531px\" \/><\/p>\n<h3>1. Tahap persiapan dan perencanaan (Preparation and planning phase)<\/h3>\n<p>Tahap ini menjadi fondasi dari seluruh proses audit. Pada tahap ini, tim audit perlu mendefinisikan ruang lingkup, tujuan, serta kriteria audit secara jelas. Aktivitas utama mencakup pembentukan tim audit, penyusunan jadwal audit, pengumpulan dokumen kebijakan terkait, serta komunikasi awal dengan departemen yang akan diaudit agar kerja sama berjalan lancar.<\/p>\n<h3>2. Tahap pelaksanaan dan pengumpulan data (Execution and data collection phase)<\/h3>\n<p>Di sinilah pekerjaan lapangan mulai berjalan pada tahap ini. Auditor akan mengumpulkan bukti melalui berbagai metode, misalnya wawancara dengan staf, observasi proses operasional, serta pengujian sampel transaksi. Selain itu, data kuantitatif dari sistem seperti <em data-start=\"798\" data-end=\"814\">purchase order<\/em>, <em data-start=\"816\" data-end=\"825\">invoice<\/em>, dan kontrak juga akan diekstraksi untuk analisis lebih lanjut.<\/p>\n<h3>3. Tahap analisis data dan identifikasi temuan (Data analysis and findings identification phase)<\/h3>\n<p>Seluruh data serta bukti yang terkumpul akan dianalisis secara mendalam. Auditor akan membandingkan kondisi aktual pada operasional dengan kriteria audit, seperti kebijakan dan prosedur perusahaan. Setiap kesenjangan atau ketidaksesuaian yang ditemukan kemudian dicatat sebagai temuan audit, lengkap dengan analisis akar penyebabnya.<\/p>\n<h3>4. Tahap pelaporan dan presentasi hasil (Reporting and results presentation phase)<\/h3>\n<p>Temuan audit yang signifikan disusun menjadi laporan formal. Laporan yang baik tidak hanya berisi daftar masalah, tetapi juga menyertakan rekomendasi perbaikan yang praktis serta dapat ditindaklanjuti. Setelah itu, hasil audit akan dipresentasikan kepada manajemen serta pemangku kepentingan terkait untuk dibahas bersama.<\/p>\n<h3>5. Tahap tindak lanjut dan implementasi perbaikan (Follow-up and improvement implementation phase)<\/h3>\n<p>Proses audit tidak berhenti setelah laporan disampaikan. Tahap paling penting adalah memastikan seluruh rekomendasi benar-benar implementasikan. Tim audit perlu memantau perkembangan tindakan perbaikan serta melakukan verifikasi agar masalah yang sama tidak kembali muncul pada masa mendatang.<br \/>\n<style>\r\n\t#baca-juga {\r\n\t\tpadding: 16px;\r\n\t\tbackground-color: #f7eaea;\r\n\t\tborder-left: 3px solid #af2828;\r\n\t\tfont-weight: 500;\r\n\t\tmargin-bottom: 26px;\r\n\t}\r\n\t\r\n\t#baca-juga a {\r\n\t\tcolor: #af2828 !important;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t}\r\n\t\r\n\t#baca-juga a:hover {\r\n\t\tcolor: #af282880 !important;\r\n\t}\r\n<\/style>\r\n\r\n<div id=\"baca-juga\">\r\n\t<span>Baca juga: <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/audit-siklus-persediaan\/\">Audit siklus persediaan untuk meningkatkan akurasi stok dan efisiensi operasional.<\/a><\/span>\r\n<\/div>\n<h2>Checklist Area Kunci yang Wajib Diperiksa Saat Audit<\/h2>\n<p>Untuk memastikan tidak ada area kritis yang terlewat, penggunaan <em data-start=\"123\" data-end=\"134\">checklist<\/em> yang komprehensif sangat penting. <em data-start=\"169\" data-end=\"180\">Checklist<\/em> ini berfungsi sebagai panduan bagi auditor untuk memeriksa aspek-aspek paling vital dalam siklus pengadaan. Oleh karena itu, berikut lima area kunci yang menurut saya harus selalu menjadi prioritas dalam setiap <em data-start=\"392\" data-end=\"411\">audit procurement<\/em>.<\/p>\n<h3>1. Dokumentasi kontrak dan SOW (Statement of Work)<\/h3>\n<p>Kontrak adalah tulang punggung dari hubungan dengan vendor. Periksa kelengkapan, kejelasan, dan keabsahan hukum dari semua kontrak yang aktif. Pastikan Statement of Work (SOW) mendefinisikan ruang lingkup, hasil, dan metrik kinerja secara spesifik untuk menghindari ambiguitas dan potensi sengketa di kemudian hari.<\/p>\n<h3>2. Proses seleksi dan evaluasi vendor<\/h3>\n<p>Bagaimana vendor dipilih? Audit harus memastikan proses ini berjalan secara objektif, transparan, dan terdokumentasi dengan baik. Periksa kriteria evaluasi, proses tender atau RFQ (Request for Quotation), serta adanya penilaian risiko sebelum vendor disetujui sebagai mitra bisnis.<\/p>\n<h3>3. Kepatuhan terhadap anggaran dan kebijakan<\/h3>\n<p>Setiap pembelian harus selaras dengan anggaran yang telah disetujui dan kebijakan pengadaan perusahaan. Lakukan pengujian sampel pada purchase order untuk memverifikasi kesesuaiannya dengan batas anggaran departemen. Pastikan juga kebijakan seperti pembatasan pembelian dari satu sumber (single-sourcing) dipatuhi.<\/p>\n<h3>4. Alur persetujuan (approval workflow)<\/h3>\n<p>Alur persetujuan yang jelas dan ditaati sangat penting untuk kontrol internal. Verifikasi apakah setiap permintaan pembelian dan purchase order telah melalui jenjang persetujuan yang benar sesuai dengan matriks otorisasi. Kelemahan pada area ini sering kali menjadi pintu masuk bagi pengeluaran yang tidak sah atau pemborosan.<\/p>\n<h3>5. Manajemen inventaris dan penerimaan barang<\/h3>\n<p>Proses pengadaan tidak berhenti saat pesanan dibuat. Audit harus mencakup proses penerimaan barang (goods receipt) untuk memastikan kuantitas dan kualitas barang sesuai dengan pesanan. Periksa juga bagaimana barang yang diterima dicatat dalam sistem inventaris untuk memastikan akurasi stok dan mencegah kehilangan.<\/p>\n<h2>Tantangan Umum dalam Audit Procurement dan Cara Mengatasinya<\/h2>\n<p>Meskipun manfaatnya besar, pelaksanaan audit procurement tidak selalu berjalan mulus. Berdasarkan pengalaman, ada beberapa tantangan klasik yang sering dihadapi oleh tim audit. Mengenali tantangan ini sejak awal dan menyiapkan strategi untuk mengatasinya adalah kunci untuk memastikan proses audit berjalan lancar dan efektif.<\/p>\n<h3>1. Kurangnya data yang terpusat dan akurat<\/h3>\n<p>Ini adalah tantangan paling umum, terutama di perusahaan yang masih mengandalkan proses manual atau sistem yang terfragmentasi. Data yang tersebar di berbagai spreadsheet atau departemen membuat auditor kesulitan mendapatkan gambaran utuh. Solusinya adalah mendorong implementasi sistem terpusat, seperti <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-purchasing-terbaik\/\">aplikasi purchasing<\/a> yang terintegrasi, untuk menyatukan semua data pengadaan dalam satu platform.<\/p>\n<h3>2. Resistensi dari internal tim atau departemen<\/h3>\n<p>Beberapa staf mungkin melihat audit sebagai proses mencari-cari kesalahan, sehingga mereka bersikap defensif atau kurang kooperatif. Untuk mengatasinya, komunikasi yang efektif sejak awal sangat penting. Tekankan bahwa tujuan audit adalah untuk perbaikan proses bersama, bukan untuk menyalahkan individu, dan libatkan mereka dalam diskusi untuk mencari solusi.<\/p>\n<h3>3. Proses manual yang memakan waktu<\/h3>\n<p>Jika proses pengadaan masih sangat manual, auditor harus menghabiskan banyak waktu untuk menelusuri dokumen fisik dan mencocokkan data secara manual. Hal ini tidak hanya lambat tetapi juga rentan terhadap kesalahan. Mendorong otomatisasi proses melalui teknologi adalah solusi jangka panjang yang paling efektif untuk mengatasi tantangan ini.<\/p>\n<h3>4. Kesulitan melacak metrik kinerja secara objektif<\/h3>\n<p>Tanpa sistem yang tepat, mengukur KPI seperti waktu siklus pengadaan atau tingkat penghematan biaya bisa menjadi sangat subjektif dan sulit dibuktikan. Implementasi dasbor analitik atau sistem pelaporan otomatis dapat menyediakan data kinerja yang objektif dan real-time. Ini tidak hanya membantu proses audit tetapi juga manajemen kinerja sehari-hari.<\/p>\n<h2>Peran Teknologi dalam Mengoptimalkan Proses Audit Procurement<\/h2>\n<p>Di era digital saat ini, mengandalkan proses manual untuk audit pengadaan adalah resep untuk inefisiensi dan risiko. Teknologi, khususnya software yang dirancang untuk manajemen pengadaan, memainkan peran transformatif dalam membuat proses audit lebih mudah, lebih cepat, dan jauh lebih akurat. Laporan dari <a href=\"https:\/\/www2.deloitte.com\/global\/en\/pages\/operations\/articles\/cpo-survey.html\" target=\"_blank\" rel=\"noopener\">Deloitte CPO Survey 2023<\/a> menunjukkan bahwa digitalisasi adalah prioritas utama bagi para pemimpin pengadaan untuk meningkatkan kinerja dan visibilitas.<\/p>\n<h3>1. Sentralisasi data dan visibilitas real-time<\/h3>\n<p>Software modern menyatukan semua data terkait pengadaan, mulai dari permintaan, pesanan pembelian, kontrak, hingga faktur, dalam satu database terpusat. Ini memberikan auditor akses instan ke &#8216;satu sumber kebenaran&#8217; (single source of truth). Visibilitas real-time memungkinkan pemantauan berkelanjutan, bukan hanya pemeriksaan periodik.<\/p>\n<h3>2. Otomatisasi proses dan alur kerja persetujuan<\/h3>\n<p>Sistem dapat mengotomatiskan alur kerja persetujuan berdasarkan aturan yang telah ditetapkan, memastikan tidak ada langkah yang terlewat. Setiap tindakan dicatat secara digital, menciptakan jejak audit (audit trail) yang lengkap dan tidak dapat diubah. Ini sangat memudahkan auditor dalam memverifikasi kepatuhan terhadap alur otorisasi.<\/p>\n<h3>3. Analisis data canggih untuk identifikasi anomali<\/h3>\n<p>Dengan semua data yang terstruktur, perangkat lunak dapat menjalankan analisis canggih untuk mendeteksi pola atau anomali yang mencurigakan. Misalnya, sistem dapat secara otomatis menandai pesanan duplikat, kenaikan harga yang tidak wajar dari vendor tertentu, atau pembelian yang melebihi batas anggaran. Ini memungkinkan auditor untuk fokus pada area berisiko tinggi.<\/p>\n<h3>4. Peningkatan akurasi dengan Software Procurement<\/h3>\n<p>Penggunaan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/sistem-procurement-adalah\/\">sistem procurement yang terintegrasi<\/a> dengan modul pengadaan dapat secara dramatis meningkatkan akurasi audit. Sistem ini memastikan bahwa setiap pembelian material selaras dengan Rencana Anggaran Biaya (RAB) proyek dan melacak penggunaannya secara real-time, memberikan kontrol penuh atas biaya proyek.<\/p>\n<h2>Contoh Penerapan Audit Procurement pada Perusahaan<\/h2>\n<p>Dalam skala bisnis besar, proses pengadaan sering kali menjadi salah satu aktivitas paling kompleks karena melibatkan banyak vendor, kategori pembelian, dan unit bisnis. Tanpa sistem yang rapi, pengadaan berisiko memakan waktu lama dan menyulitkan proses evaluasi maupun audit.<\/p>\n<p>Unilever, sebagai perusahaan FMCG global, menerapkan <a href=\"https:\/\/www.hashmicro.com\/id\/sistem-pembelian?ref=audit-procurement\">digital procurement platform<\/a> untuk menstandarkan proses sourcing, pengelolaan vendor, serta pencatatan transaksi pengadaan. Seluruh aktivitas pembelian terdokumentasi dalam satu sistem, sehingga histori kontrak, persetujuan, dan transaksi dapat ditelusuri dengan mudah saat audit dilakukan.<\/p>\n<p>Pendekatan ini membantu Unilever meningkatkan efisiensi proses bisnis, mengurangi beban administratif manual, serta menjadikan audit procurement lebih cepat dan berbasis data. Audit tidak lagi bersifat reaktif, melainkan berfungsi sebagai alat evaluasi berkelanjutan untuk menjaga konsistensi dan kepatuhan proses pengadaan.<\/p>\n<h2>Kesimpulan<\/h2>\n<p>Audit procurement kini menjadi komponen strategis dalam membantu perusahaan meningkatkan efisiensi operasional, mengendalikan biaya, dan menjaga kepatuhan. Dengan pendekatan berbasis data, audit memungkinkan organisasi mengambil keputusan yang lebih tepat serta memperkuat tata kelola proses pengadaan secara menyeluruh.<\/p>\n<p>Pemanfaatan sistem procurement yang terintegrasi membantu menyederhanakan proses audit melalui alur kerja yang lebih terstruktur, akurasi data yang lebih baik, dan pengurangan risiko kesalahan manual. Transparansi proses dan pengelolaan vendor pun menjadi lebih terjaga, sehingga audit tidak lagi bersifat reaktif, melainkan berkelanjutan.<\/p>\n<p>Bagi perusahaan yang ingin mengoptimalkan efektivitas audit procurement sesuai kebutuhan bisnisnya, <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">konsultasi gratis bersama kami<\/a> dapat menjadi langkah awal untuk memahami pendekatan yang paling tepat dan relevan<\/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<h2><strong>Pertanyaan Seputar Audit Procurement<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Seberapa sering audit procurement harus dilakukan?<\/strong><\/summary>\n<p>Frekuensi ideal tergantung pada ukuran, kompleksitas, dan tingkat risiko perusahaan. Namun, praktik terbaik merekomendasikan untuk melakukannya setidaknya setahun sekali untuk area berisiko tinggi dan setiap 2-3 tahun sekali untuk tinjauan komprehensif.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Siapa yang seharusnya bertanggung jawab melakukan audit procurement?<\/strong><\/summary>\n<p>Audit procurement biasanya dilakukan oleh tim audit internal yang independen dari departemen pengadaan. Untuk objektivitas maksimal atau keahlian khusus, perusahaan juga dapat menyewa auditor eksternal dari firma konsultan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara mengukur keberhasilan dari sebuah audit procurement?<\/strong><\/summary>\n<p>Keberhasilan diukur dari beberapa faktor, termasuk jumlah penghematan biaya yang berhasil diidentifikasi dan direalisasikan, peningkatan skor kepatuhan, penurunan waktu siklus pengadaan, serta implementasi rekomendasi perbaikan yang tepat waktu.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa perbedaan utama antara audit internal dan eksternal dalam procurement?<\/strong><\/summary>\n<p>Audit internal dilakukan oleh tim di dalam perusahaan dengan fokus pada perbaikan proses dan efisiensi. Audit eksternal dilakukan oleh pihak ketiga independen, seringkali dengan fokus pada kepatuhan finansial dan regulasi untuk kepentingan pemegang saham atau regulator.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Memasuki 2026, efisiensi operasional menjadi kebutuhan utama bagi perusahaan seiring dinamika pasar yang terus berubah. Salah satu area yang sering memicu pemborosan, tetapi belum selalu mendapat perhatian penuh, adalah proses pengadaan atau procurement. Tanpa pengawasan yang memadai, pengeluaran bisa menjadi tidak terkontrol, vendor kurang kompetitif, serta risiko kepatuhan ikut meningkat. Audit procurement berperan penting untuk [&hellip;]<\/p>\n","protected":false},"author":161,"featured_media":177284,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1470],"tags":[],"class_list":{"0":"post-177089","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-procurement"},"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>Audit Procurement untuk Pengadaan yang Lebih Efisien &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Pelajari proses audit procurement dari A-Z. Temukan tujuan, manfaat, dan checklist lengkap untuk meningkatkan efisiensi, kepatuhan, dan penghematan biaya bisnis Anda.\" \/>\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\/audit-procurement\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Audit Procurement untuk Pengadaan yang Lebih Efisien\" \/>\n<meta property=\"og:description\" content=\"Pelajari proses audit procurement dari A-Z. Temukan tujuan, manfaat, dan checklist lengkap untuk meningkatkan efisiensi, kepatuhan, dan penghematan biaya bisnis Anda.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/\" \/>\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=\"2025-11-17T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-09T07:24:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.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=\"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=\"14 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\/audit-procurement\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/\"},\"author\":{\"name\":\"Jonathan Kurniawan\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5\"},\"headline\":\"Audit Procurement untuk Pengadaan yang Lebih Efisien\",\"datePublished\":\"2025-11-17T17:00:00+00:00\",\"dateModified\":\"2026-03-09T07:24:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/\"},\"wordCount\":2362,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/\",\"name\":\"Audit Procurement untuk Pengadaan yang Lebih Efisien &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp\",\"datePublished\":\"2025-11-17T17:00:00+00:00\",\"dateModified\":\"2026-03-09T07:24:12+00:00\",\"description\":\"Pelajari proses audit procurement dari A-Z. Temukan tujuan, manfaat, dan checklist lengkap untuk meningkatkan efisiensi, kepatuhan, dan penghematan biaya bisnis Anda.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp\",\"width\":1200,\"height\":675,\"caption\":\"audit procurement HashMicro\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Audit Procurement untuk Pengadaan yang Lebih Efisien\"}]},{\"@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":"Audit Procurement untuk Pengadaan yang Lebih Efisien &#187; HashMicro Indonesia","description":"Pelajari proses audit procurement dari A-Z. Temukan tujuan, manfaat, dan checklist lengkap untuk meningkatkan efisiensi, kepatuhan, dan penghematan biaya bisnis Anda.","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\/audit-procurement\/","og_locale":"id_ID","og_type":"article","og_title":"Audit Procurement untuk Pengadaan yang Lebih Efisien","og_description":"Pelajari proses audit procurement dari A-Z. Temukan tujuan, manfaat, dan checklist lengkap untuk meningkatkan efisiensi, kepatuhan, dan penghematan biaya bisnis Anda.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-11-17T17:00:00+00:00","article_modified_time":"2026-03-09T07:24:12+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp","type":"image\/webp"}],"author":"Jonathan Kurniawan","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Jonathan Kurniawan","Estimasi waktu membaca":"14 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/"},"author":{"name":"Jonathan Kurniawan","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5"},"headline":"Audit Procurement untuk Pengadaan yang Lebih Efisien","datePublished":"2025-11-17T17:00:00+00:00","dateModified":"2026-03-09T07:24:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/"},"wordCount":2362,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp","articleSection":["Procurement"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/","name":"Audit Procurement untuk Pengadaan yang Lebih Efisien &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp","datePublished":"2025-11-17T17:00:00+00:00","dateModified":"2026-03-09T07:24:12+00:00","description":"Pelajari proses audit procurement dari A-Z. Temukan tujuan, manfaat, dan checklist lengkap untuk meningkatkan efisiensi, kepatuhan, dan penghematan biaya bisnis Anda.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/09\/audit-procurement.webp","width":1200,"height":675,"caption":"audit procurement HashMicro"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/audit-procurement\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Audit Procurement untuk Pengadaan yang Lebih Efisien"}]},{"@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":"audit procurement","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/177089","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=177089"}],"version-history":[{"count":10,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/177089\/revisions"}],"predecessor-version":[{"id":190633,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/177089\/revisions\/190633"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/177284"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=177089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=177089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=177089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}