{"id":152271,"date":"2024-12-31T08:26:58","date_gmt":"2024-12-31T01:26:58","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=152271"},"modified":"2026-02-09T12:23:42","modified_gmt":"2026-02-09T05:23:42","slug":"sop-purchasing","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/","title":{"rendered":"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya"},"content":{"rendered":"<p>Kalau Anda sering terlibat di procurement, SOP purchasing biasanya jadi dokumen yang paling sering dibuka saat proses pembelian berjalan. SOP ini membantu tim mengikuti urutan kerja yang jelas, mulai dari permintaan barang sampai pembayaran, supaya prosesnya konsisten dan mudah dicek kembali.<\/p>\n<p>Di lapangan, SOP sering ada tapi penggunaannya belum seragam. Ada yang masih bingung soal alur dokumen, batas approval, atau format yang paling enak dipakai, sehingga proses antar tim jadi berbeda-beda.<\/p>\n<p>Pembahasan berikut merangkum fungsi SOP purchasing, format yang umum dipakai, dan contoh struktur yang bisa Anda sesuaikan dengan kebutuhan perusahaan. Tujuannya agar proses pembelian lebih rapi, koordinasi lebih cepat, dan pencatatan dokumen lebih tertib.<\/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\">SOP <i>purchasing<\/i><\/a> berperan sebagai pedoman kerja pembelian yang membantu proses bisnis tetap rapi, konsisten, dan minim salah langkah.<\/li>\n<li aria-level=\"1\">Termasuk dalam dokumen administratif, SOP <i>procurement<\/i> memiliki fungsi krusial dengan 6 komponen inti dan <a href=\"#langkah\">8 langkah penyusunan<\/a>.<\/li>\n<li aria-level=\"1\">Bisnis modern menyadari kebutuhan pasar tidak lagi memungkinkan bagi mereka untuk mengelola dokumen pembelian secara manual, melainkan menggunakan <strong><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/software-e-procurement-terbaik\/\">sistem purchasing terintegrasi.<\/a><\/strong><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script> <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2><b>Contoh Penerapan <\/b><b>SOP Purchasing<\/b><\/h2>\n<p>SOP purchasing menjadi pedoman standar yang mengatur alur pembelian, mulai dari permintaan hingga pembayaran, agar proses tetap transparan dan sesuai anggaran. Namun, tantangan terbesar biasanya bukan di menyusun dokumennya, melainkan memastikan setiap orang menjalankannya secara konsisten.<\/p>\n<p>Contoh penerapan SOP purchasing bisa dilihat dari pengalaman Morin yang menemukan bahwa SOP manual di atas kertas sering sulit dipatuhi di lapangan. Karena itu, mereka memasukkan SOP ke sistem digital, lalu memakai fitur seperti Automatic Vendor Rating dan Budget Tracking sebagai \u201cpenjaga gawang\u201d otomatis di setiap tahapan transaksi.<\/p>\n<p>Insight-nya jelas: SOP purchasing yang benar-benar berjalan bukan hanya kumpulan aturan tertulis, tetapi alur kerja yang membuat setiap pembelian otomatis mengikuti standar tanpa pengawasan manual berlebihan.<\/p>\n<h2><b>Contoh SOP Purchasing<\/b><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-scaled.webp\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-152273 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-scaled.webp\" alt=\"contoh sop purchasing\" width=\"1437\" height=\"2048\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-scaled.webp 1437w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-211x300.webp 211w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-719x1024.webp 719w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-768x1094.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-1078x1536.webp 1078w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-295x420.webp 295w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-150x214.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-300x427.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-696x992.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/contoh-sop-purchasing-1068x1522.webp 1068w\" sizes=\"auto, (max-width: 1437px) 100vw, 1437px\" \/><\/a><\/p>\n<p>Contoh SOP purchasing di atas bisa Anda gunakan sebagai template dasar untuk menyusun prosedur pembelian yang konsisten, terutama untuk pengadaan stok barang. Struktur dokumen ini membantu tim melihat alur kerja dari awal sampai akhir, sekaligus memastikan setiap langkah punya dokumen pendukung yang jelas.<\/p>\n<p>Agar template ini benar-benar terpakai, perhatikan tiga hal saat mengisinya:<\/p>\n<ol>\n<li>Sesuaikan peran dan tanggung jawab tiap pihak (user, purchasing, finance, gudang) agar tidak ada langkah yang menggantung.<\/li>\n<li>Tetapkan batas approval berdasarkan nilai transaksi dan kategori barang, supaya keputusan tidak menumpuk di satu orang.<\/li>\n<li>Pastikan kolom dokumen wajib (misalnya PR, RFQ\/quotation, PO, GR, invoice) terisi lengkap agar proses mudah ditelusuri saat evaluasi atau audit.<\/li>\n<\/ol>\n<p>Jika Anda ingin SOP lebih mudah dijalankan sehari-hari, langkah berikutnya adalah memastikan alur dan dokumennya tidak tersebar di banyak tempat. Banyak perusahaan memilih memusatkan proses purchasing dalam satu sistem agar status pengajuan, approval, dan arsip dokumen bisa dipantau tanpa follow-up manual berulang.<\/p>\n<h2><strong>Tujuan dan Manfaat SOP Purchasing<\/strong><\/h2>\n<p>Tujuan SOP purchasing menyamakan standar pengadaan agar keputusan pembelian tidak bergantung pada kebiasaan tiap orang. Ketika semua pihak mengikuti aturan yang sama, perusahaan lebih mudah menjaga biaya, kualitas vendor, dan kerapian dokumen tanpa sering \u201cmemadamkan masalah\u201d di tengah proses.<\/p>\n<p>Manfaatnya biasanya terasa di empat area berikut:<\/p>\n<ul>\n<li><strong>Pembelian lebih terarah, bukan sekadar \u201curgent\u201d:<\/strong> SOP membantu perusahaan membedakan mana kebutuhan yang benar-benar prioritas, mana yang bisa dijadwalkan. Dampaknya, pembelian jadi lebih terencana dan tidak mengganggu operasional karena mendadak.<\/li>\n<li><strong>Anggaran lebih mudah dijaga dan dievaluasi:<\/strong> Dengan prosedur yang jelas, purchasing punya alasan yang kuat untuk menolak pembelian di luar rencana atau memerlukan justifikasi tambahan. Ini memudahkan manajemen melihat pola belanja, kebocoran, dan peluang penghematan dari data yang konsisten.<\/li>\n<li><strong>Koordinasi lintas divisi lebih rapi:<\/strong> SOP mengurangi \u201cbolak-balik revisi\u201d karena kebutuhan dan spesifikasi sudah ditulis dengan format yang sama. Alhasil, komunikasi procurement dengan user, finance, dan gudang jadi lebih cepat, dan risiko miskomunikasi berkurang.<\/li>\n<li><strong>Relasi vendor lebih profesional:<\/strong> Vendor lebih mudah memenuhi ekspektasi karena permintaan penawaran, spesifikasi, dan syarat pengiriman tersampaikan jelas. Perusahaan juga lebih punya posisi saat mengevaluasi performa vendor karena indikatornya konsisten.<\/li>\n<\/ul>\n<p>Secara keseluruhan, SOP purchasing membantu perusahaan membuat pengadaan lebih terkendali dan mudah dipertanggungjawabkan, sekaligus menjaga ritme kerja tetap stabil saat volume pembelian meningkat.<\/p>\n<h2><strong>Fungsi SOP Purchasing dalam Pengadaan Barang dan Jasa<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-184636\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-scaled.webp\" alt=\"\" width=\"2560\" height=\"1396\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-scaled.webp 2560w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-300x164.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-1024x559.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-768x419.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-1536x838.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-2048x1117.webp 2048w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-770x420.webp 770w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-150x82.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-696x380.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-1068x583.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/sop-purchasing-1920x1047.webp 1920w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>SOP purchasing adalah pedoman pembelian dalam bisnis yang memiliki lima fungsi penting, di antara lain:<\/p>\n<ol>\n<li aria-level=\"1\"><b>Pedoman proses pembelian:<\/b> Mengatur setiap tahapan pembelian dari permintaan hingga pembayaran secara konsisten.<\/li>\n<li aria-level=\"1\"><b>Meningkatkan efisiensi:<\/b> Menghindari pengulangan tugas dan mempercepat proses pengadaan.<\/li>\n<li aria-level=\"1\"><b>Menjamin kepatuhan:<\/b> SOP pembelian barang memastikan semua langkah sesuai dengan kebijakan perusahaan dan hukum yang berlaku.<\/li>\n<li aria-level=\"1\"><b>Meminimalkan risiko kesalahan:<\/b> Mengurangi potensi kesalahan dalam pemilihan vendor atau negosiasi kontrak.<\/li>\n<li aria-level=\"1\"><b>Mempermudah audit:<\/b> Memberikan dokumentasi lengkap dan transparan untuk evaluasi dan pengawasan.<\/li>\n<\/ol>\n<h2><b>Format SOP Purchasing\u00a0<\/b><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing.webp\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-152274 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing.webp\" alt=\"format sop purchasing\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/format-sop-purchasing-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a>SOP <i>(Standard Operating Procedure<\/i>) purchasing adalah dokumen yang menjabarkan prosedur pembelian barang atau jasa secara sistematis. Untuk itu, selayaknya dokumen bisnis lain, SOP purchasing memiliki format yang jelas, meliputi:<\/p>\n<h3><b>1. Tujuan SOP<\/b><\/h3>\n<p>Bagian ini menjelaskan alasan SOP pembelian barang Anda buat beserta apa yang ingin Anda capai. Tujuan harus spesifik, jelas, dan langsung terkait dengan manfaat yang diharapkan untuk perusahaan. Misalnya, tujuan SOP ini adalah untuk standarisasi proses pembelian dan memastikan transparansi.<\/p>\n<h3><b>2. Ruang lingkup<\/b><\/h3>\n<p>Bagian ruang lingkup mencakup keseluruhan proses pembelian, mulai dari identifikasi kebutuhan, evaluasi vendor, hingga <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/\">proses penerimaan barang<\/a>. Anda dapat menuliskannya seperti: SOP purchasing ini berlaku untuk semua pembelian barang rutin, barang proyek, dan pembelian darurat.<\/p>\n<h3><b>3. Tanggung jawab pihak terkait<\/b><\/h3>\n<p>Bagian SOP pembelian barang ini menjelaskan pihak-pihak yang terlibat dalam proses purchasing dan tugas masing-masing. Misalnya, tim purchasing bertugas mencari dan menilai vendor, sedangkan manajer bertanggung jawab memberikan persetujuan pembelian.<\/p>\n<h3><b>4. Detail prosedur <\/b><b><i>purchasing<\/i><\/b><\/h3>\n<p>Bagian ini menjelaskan langkah-langkah rinci dalam proses purchasing. Langkah-langkah tersebut dapat mencakup:<\/p>\n<ul>\n<li aria-level=\"1\">Mengidentifikasi kebutuhan pembelian stok barang.<\/li>\n<li aria-level=\"1\">Membuat dokumen RFP (<i>Request for Proposal<\/i>) untuk pemasok.<\/li>\n<li aria-level=\"1\">Evaluasi penawaran stok barang terkait dengan harga, kualitas, dan kuantitas.<\/li>\n<li aria-level=\"1\">Membuat dokumen PO (<i>Purchase Order<\/i>) untuk <i>fix order<\/i> ke pemasok.<\/li>\n<li aria-level=\"1\">Penerimaan barang dan cek kondisi produk agar sesuai dengan standar kualitas yang berlaku.<\/li>\n<li aria-level=\"1\">Proses pembayaran <i>purchasing<\/i>.<\/li>\n<li aria-level=\"1\">Dokumentasi proses pembelian barang dan mengarsipkannya sesuai regulasi perusahaan.<\/li>\n<\/ul>\n<h3><b>5. Dokumentasi dan catatan<\/b><\/h3>\n<p>Dokumentasi menjelaskan berkas dan catatan yang harus Anda siapkan dalam setiap proses purchasing, seperti PO, faktur, dan bukti penerimaan barang. Umumnya, bagian ini perusahaan kelola melalui<a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-purchasing-terbaik\/\"><b> program purchasing terbaik bagi bisnis<\/b><\/a> untuk menjamin ketersediaan bahan untuk audit, evaluasi kinerja, dan bukti hukum.<\/p>\n<h3><b>6. Pengesahan dan tanggal efektif<\/b><\/h3>\n<p>Pengesahaan menjadi titik otoritas yang menentukan kapan SOP purchasing mulai berlaku. Isiannya dapat berupa: SOP ini disahkan oleh Direktur Keuangan dan berlaku efektif mulai tanggal 1 Januari 2025. Ini bertujuan agar dokumen memiliki legalitas dan waktu implementasi yang <span id=\"langkah\">jelas.<\/span><\/p>\n<h2><b>8 Langkah Membuat SOP Pembelian Barang<\/b><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang.webp\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-152275 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang.webp\" alt=\"langkah membuat sop pembelian barang\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/langkah-membuat-sop-pembelian-barang-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a>Berikut adalah 8 langkah membuat SOP purchasing yang dapat Anda lakukan:<\/p>\n<ol>\n<li aria-level=\"1\"><b>Identifikasi kebutuhan: <\/b>Cari tahu alasan Anda membuat SOP purchasing, seperti untuk standarisasi proses atau meningkatkan efisiensi kerja.<\/li>\n<li aria-level=\"1\"><b>Analisis proses pembelian: <\/b>Lihat bagaimana alur pembelian yang ada berjalan. Identifikasi apa yang perlu Anda perbaiki dan tingkatkan.<\/li>\n<li aria-level=\"1\"><b>Tentukan struktur dan format SOP: <\/b>Buat kerangka yang mencakup elemen-elemen penting, seperti tujuan, ruang lingkup, tanggung jawab, dan prosedur.<\/li>\n<li aria-level=\"1\"><b>Rumuskan detail proses pembelian: <\/b>Jelaskan detail proses pembelian, mulai dari permintaan barang hingga penerimaan, beserta pihak yang bertanggung jawab.<\/li>\n<li aria-level=\"1\"><b>Identifikasi dokumen penting:<\/b>Tetapkan dokumen wajib (PR, PO, Berita Acara). Pastikan formatnya mematuhi standar audit (<a href=\"https:\/\/peraturan.bpk.go.id\/Details\/45929\" target=\"_blank\" rel=\"noopener\">UU No. 8\/1997<\/a>) dan ketentuan pajak (UU PPN) agar aman secara hukum.<\/li>\n<li aria-level=\"1\"><b>Libatkan pihak terkait: <\/b>Diskusikan <i>draft <\/i>SOP pembelian barang dengan tim terkait, seperti tim purchasing dan manajemen, agar sesuai kebutuhan operasional.<\/li>\n<li aria-level=\"1\"><strong>Pengesahan &amp; validitas digital:<\/strong> Minta persetujuan direksi. Jika Anda berencana menggunakan sistem digital, pastikan alur persetujuan (approval) tersebut sah dan dapat dipertanggungjawabkan sesuai UU ITE.<\/li>\n<li aria-level=\"1\"><b>Sosialisasi dan implementasi: <\/b>Kenalkan SOP <i>purchasing<\/i> kepada tim melalui pelatihan, lalu awasi penerapannya agar semua pihak mematuhi regulasi yang ada.<\/li>\n<\/ol>\n<p>Mengetahui delapan langkah pembuatan dokumen pembelian ini, beberapa pebisnis di Indonesia menyadari betapa perusahaan mereka membutuhkan cara yang lebih efektif dan efisien. Bukan tanpa alasan, keputusan ini mereka ambil guna mengoptimalkan proses pemasaran dan penjualan lainnya.<\/p>\n<p>Salah satu pendekatan yang banyak digunakan adalah<strong><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pentingnya-sistem-purchasing-untuk-industri-engineering\/\"> purchasing tools<\/a><\/strong> untuk membantu standarisasi alur, mempercepat approval, dan merapikan dokumentasi dari pengajuan hingga pembayaran. Soal biaya implementasi, skemanya biasanya bergantung pada kebutuhan modul, jumlah pengguna, dan kompleksitas proses di perusahaan.<\/p>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p>SOP purchasing menjadi panduan utama agar proses pembelian berjalan efisien, terstruktur, dan selaras dengan kebijakan internal maupun regulasi yang berlaku. Karena itu, banyak perusahaan mulai meninggalkan pengelolaan SOP yang serba manual dan beralih ke proses yang lebih tertata serta mudah dipantau.<\/p>\n<p>Salah satu cara yang sering dipilih adalah menggunakan sistem purchasing untuk mengotomatiskan alur pembelian, sehingga dokumen lebih rapi dan transaksi lebih mudah ditelusuri. Bila Anda ingin menyesuaikan alur ini dengan kebutuhan perusahaan, Anda bisa mengajukan <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\"><strong>konsultasi gratis<\/strong><\/a> untuk membahas skema yang paling pas.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/sistem-pembelian?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/procurement-definitive.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/procurement-definitive.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/procurement-definitive-m.webp\" alt=\"Procurement_Definisi\" 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 SOP Purchasing<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa saja yang harus dilakukan purchasing?<\/strong><\/summary>\n<p>Purchasing harus memvalidasi kebutuhan perusahaan, mencari dan mengevaluasi pemasok, meminta dan menilai penawaran, bernegosiasi, menerbitkan PO\/kontrak, memantau pengiriman dan penerimaan, lalu menyelesaikan 3-way match sampai pembayaran. Mereka juga menilai performa pemasok untuk perbaikan berikutnya.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa saja ciri-ciri SOP yang baik?<\/strong><\/summary>\n<p>SOP yang baik memiliki ciri-ciri, seperti jelas, terstruktur, relevan, mudah dipahami, dan mencantumkan tanggung jawab pihak terkait.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa yang terjadi jika tidak melakukan SOP?<\/strong><\/summary>\n<p>Tanpa SOP, proses kerja menjadi tidak terarah, risiko kesalahan meningkat, dan efisiensi serta kepatuhan perusahaan terganggu.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Siapa yang membuat SOP di perusahaan?<\/strong><\/summary>\n<p>Orang yang bertanggung jawab membuat SOP perusahaan adalah manajer departemen, dengan koordinasi bersama manajemen dan tim quality assurance.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Apa saja yang harus dilakukan purchasing?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Purchasing harus memvalidasi kebutuhan perusahaan, mencari dan mengevaluasi pemasok, meminta dan menilai penawaran, bernegosiasi, menerbitkan PO atau kontrak, memantau pengiriman dan penerimaan barang, lalu menyelesaikan 3-way match hingga pembayaran. Purchasing juga mengevaluasi performa pemasok untuk perbaikan proses berikutnya.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Apa saja ciri-ciri SOP yang baik?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"SOP yang baik harus jelas, terstruktur, relevan, mudah dipahami, dan mencantumkan tanggung jawab setiap pihak yang terlibat dalam proses.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Apa yang terjadi jika tidak melakukan SOP?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Tanpa SOP, proses kerja menjadi tidak terarah, risiko kesalahan meningkat, dan efisiensi serta kepatuhan perusahaan dapat terganggu.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Siapa yang membuat SOP di perusahaan?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Penyusunan SOP biasanya dilakukan oleh manajer departemen yang bersangkutan, dengan koordinasi bersama manajemen dan tim quality assurance untuk memastikan kesesuaian standar.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kalau Anda sering terlibat di procurement, SOP purchasing biasanya jadi dokumen yang paling sering dibuka saat proses pembelian berjalan. SOP ini membantu tim mengikuti urutan kerja yang jelas, mulai dari permintaan barang sampai pembayaran, supaya prosesnya konsisten dan mudah dicek kembali. Di lapangan, SOP sering ada tapi penggunaannya belum seragam. Ada yang masih bingung soal [&hellip;]<\/p>\n","protected":false},"author":229,"featured_media":152276,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1470],"tags":[],"class_list":{"0":"post-152271","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>SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya<\/title>\n<meta name=\"description\" content=\"SOP purchasing adalah dokumen pembelian atau procurement dalam perusahaan. Dokumen SOP ini penting agar purchasing Anda berjalan konsisten.\" \/>\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\/sop-purchasing\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya\" \/>\n<meta property=\"og:description\" content=\"SOP purchasing adalah dokumen pembelian atau procurement dalam perusahaan. Dokumen SOP ini penting agar purchasing Anda berjalan konsisten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-31T01:26:58+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-09T05:23:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.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=\"Nabila Zulfa Damayanti\" \/>\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=\"Nabila Zulfa Damayanti\" \/>\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\/sop-purchasing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/\"},\"author\":{\"name\":\"Nabila Zulfa Damayanti\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/ac5fa26c553667f171195df8ddcf143c\"},\"headline\":\"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya\",\"datePublished\":\"2024-12-31T01:26:58+00:00\",\"dateModified\":\"2026-02-09T05:23:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/\"},\"wordCount\":1494,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/\",\"name\":\"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp\",\"datePublished\":\"2024-12-31T01:26:58+00:00\",\"dateModified\":\"2026-02-09T05:23:42+00:00\",\"description\":\"SOP purchasing adalah dokumen pembelian atau procurement dalam perusahaan. Dokumen SOP ini penting agar purchasing Anda berjalan konsisten.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp\",\"width\":1200,\"height\":675,\"caption\":\"sop purchasing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya\"}]},{\"@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\/ac5fa26c553667f171195df8ddcf143c\",\"name\":\"Nabila Zulfa Damayanti\",\"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\/2024\/04\/cropped-Nala-96x96.jpg\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/04\/cropped-Nala-96x96.jpg\",\"caption\":\"Nabila Zulfa Damayanti\"},\"description\":\"Nabila sudah menjadi spesialis yang berpengalaman selama lebih dari 2 tahun dalam bidang penulisan topik ERP. Dalam prosesnya, topik penulisan yang diangkat meliputi implementasi sistem ERP, integrasi proses bisnis, serta pemanfaatan ERP untuk meningkatkan efisiensi dan visibilitas operasional perusahaan.\",\"gender\":\"perempuan\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/nabila-zulfa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya","description":"SOP purchasing adalah dokumen pembelian atau procurement dalam perusahaan. Dokumen SOP ini penting agar purchasing Anda berjalan konsisten.","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\/sop-purchasing\/","og_locale":"id_ID","og_type":"article","og_title":"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya","og_description":"SOP purchasing adalah dokumen pembelian atau procurement dalam perusahaan. Dokumen SOP ini penting agar purchasing Anda berjalan konsisten.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2024-12-31T01:26:58+00:00","article_modified_time":"2026-02-09T05:23:42+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp","type":"image\/webp"}],"author":"Nabila Zulfa Damayanti","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Nabila Zulfa Damayanti","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/"},"author":{"name":"Nabila Zulfa Damayanti","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/ac5fa26c553667f171195df8ddcf143c"},"headline":"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya","datePublished":"2024-12-31T01:26:58+00:00","dateModified":"2026-02-09T05:23:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/"},"wordCount":1494,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp","articleSection":["Procurement"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/","name":"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp","datePublished":"2024-12-31T01:26:58+00:00","dateModified":"2026-02-09T05:23:42+00:00","description":"SOP purchasing adalah dokumen pembelian atau procurement dalam perusahaan. Dokumen SOP ini penting agar purchasing Anda berjalan konsisten.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/01\/sop-purchasing.webp","width":1200,"height":675,"caption":"sop purchasing"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/sop-purchasing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"SOP Purchasing, Cara Menyusun, dan Contoh Lengkapnya"}]},{"@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\/ac5fa26c553667f171195df8ddcf143c","name":"Nabila Zulfa Damayanti","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\/2024\/04\/cropped-Nala-96x96.jpg","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/04\/cropped-Nala-96x96.jpg","caption":"Nabila Zulfa Damayanti"},"description":"Nabila sudah menjadi spesialis yang berpengalaman selama lebih dari 2 tahun dalam bidang penulisan topik ERP. Dalam prosesnya, topik penulisan yang diangkat meliputi implementasi sistem ERP, integrasi proses bisnis, serta pemanfaatan ERP untuk meningkatkan efisiensi dan visibilitas operasional perusahaan.","gender":"perempuan","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/nabila-zulfa\/"}]}},"focus_keyword":"SOP Purchasing","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/152271","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\/229"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=152271"}],"version-history":[{"count":18,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/152271\/revisions"}],"predecessor-version":[{"id":188597,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/152271\/revisions\/188597"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/152276"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=152271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=152271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=152271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}