{"id":165606,"date":"2025-07-28T13:34:40","date_gmt":"2025-07-28T06:34:40","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=165606"},"modified":"2025-12-17T09:29:12","modified_gmt":"2025-12-17T02:29:12","slug":"vendor-portal","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/","title":{"rendered":"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">Apakah Anda sering kewalahan mengelola dokumen vendor, memproses pesanan pembelian, atau mengejar status pengiriman yang tidak jelas? Atau apakah proses approval vendor di perusahaan Anda memakan waktu dan rentan kesalahan? Jika iya, maka solusi yang Anda butuhkan adalah <\/span><b>vendor portal software<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vendor portal software adalah sistem digital yang memungkinkan perusahaan dan vendor berinteraksi secara terpusat mulai dari pendaftaran, pengajuan dokumen, hingga pelacakan pembayaran. Sistem ini membantu meningkatkan transparansi, efisiensi, dan akurasi dalam pengelolaan hubungan vendor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sekarang saatnya Anda meninggalkan proses manual yang memakan waktu dan beralih ke sistem yang lebih terstruktur. Simak artikel ini hingga akhir untuk memahami secara menyeluruh apa itu vendor portal, manfaatnya, dan cara memilih solusi yang tepat!\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\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<\/span><\/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 style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Vendor Portal Software adalah sistem berbasis digital yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.<\/span><\/li>\n<li aria-level=\"1\"><span style=\"font-weight: 400;\">Meskipun fungsi utama vendor portal pada dasarnya serupa, tetapi tiap industri memiliki kebutuhan spesifik yang membentuk karakteristik sistem vendor portal mereka.\u00a0<\/span><\/li>\n<li aria-level=\"1\">Vendor portal software dari HashMicro adalah salah satu sistem yang dapat membantu pengelolaan vendor menjadi lebih efisien dan sudah terdukung oleh AI bernama Hashy.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>Apa itu Vendor Portal Software?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Vendor Portal Software adalah sistem berbasis digital yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat. Melalui portal ini, vendor dapat mengakses informasi pesanan, mengunggah dokumen, dan berkomunikasi langsung dengan pihak perusahaan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vendor portal menggantikan proses manual yang selama ini mengandalkan email, dokumen fisik, dan komunikasi terpisah yang sering memicu keterlambatan, miskomunikasi, atau duplikasi data. Dengan otomatisasi dan transparansi yang ditawarkan, perusahaan dapat menghemat waktu, meningkatkan efisiensi operasional, dan membangun hubungan kerja sama yang lebih profesional dengan para vendor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Selain mengotomatiskan proses dan meningkatkan efisiensi, vendor portal software juga memberikan fleksibilitas kerja yang lebih tinggi. Karena sistem ini berbasis cloud, pengguna dapat mengaksesnya kapan saja dan di mana saja tanpa harus datang ke kantor atau terhubung dengan jaringan internal perusahaan.\u00a0<\/span><\/p>\n<h2><b>Vendor Portal Software dan Vendor Management System, Apa Perbedaannya?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Dalam memahami apa itu vendor portal software, Anda juga perlu memahami perbedaannya dengan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/vendor-management-system\/\">vendor management system<\/a> (VMS). Kedua sistem ini sering disalahartikan sebagai platform yang sama karena sama-sama berkaitan dengan hubungan perusahaan dan vendor.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Padahal, keduanya memiliki fokus dan fungsi yang berbeda dalam proses pengelolaan vendor. Untuk lebih jelasnya, simak tabel berikut:<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Aspek\u00a0<\/strong><\/td>\n<td><strong>Vendor Portal Software\u00a0<\/strong><\/td>\n<td><strong>Vendor Management System\u00a0<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>Fokus utama<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Interaksi dan kolaborasi langsung antara vendor dan perusahaan<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Pengelolaan keseluruhan siklus hidup vendor<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>Pengguna utama<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Vendor dan tim pengadaan<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Tim procurement atau manajemen vendor\u00a0<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>Fungsi utama<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Upload dokumen, cek PO, pelacakan pembayaran, komunikasi<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Penilaian vendor, kontrak, kinerja, dan pengelolaan risiko<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>Aksesibilitas<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Biasanya berbasis cloud dan dapat diakses langsung oleh vendor<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Umumnya hanya diakses oleh internal perusahaan<\/span><\/td>\n<\/tr>\n<tr>\n<td><strong>Tujuan utama<\/strong><\/td>\n<td><span style=\"font-weight: 400;\">Mempermudah kolaborasi, efisiensi, dan transparansi<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Memastikan pengendalian dan evaluasi kinerja vendor secara menyeluruh<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>Manfaat dari Penggunaan Vendor Portal Software<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Vendor portal software memberikan banyak manfaat nyata bagi perusahaan yang ingin meningkatkan efisiensi dan transparansi dalam pengelolaan hubungan dengan vendor. Tidak seperti sistem manual yang rentan keterlambatan dan miskomunikasi, sistem ini menghadirkan proses kerja yang jauh lebih terstruktur dan modern.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Berikut adalah delapan manfaat utama vendor ERP:<\/span><\/p>\n<h3><strong>1.Proses onboarding vendor lebih cepat dan terstandar<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Melalui penggunaan vendor portal, perusahaan dapat menyediakan formulir dan persyaratan onboarding secara digital, sehingga vendor bisa langsung mendaftar dan melengkapi dokumen tanpa harus menghubungi tim pengadaan secara manual.<\/span><\/p>\n<h3><strong>2. Transparansi dokumen dan proses pengadaan<\/strong><\/h3>\n<p>Karena seluruh data yang tersentralisasi melalui satu platform utuh yang berfungsi layaknya <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/customer-portal\/\">portal layanan pelanggan untuk pemantauan transaksi<\/a>, vendor dapat memantau status PO, invoice, hingga pembayaran secara langsung serta mengurangi potensi miskomunikasi dan bolak-balik menanyakan status dokumen.<\/p>\n<h3><strong>3. Peningkatan efisiensi komunikasi<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Alih-alih melalui email terpisah atau chat informal, semua komunikasi vendor tersentralisasi dalam satu sistem, sehingga lebih mudah dilacak dan terdokumentasi.<\/span><\/p>\n<h3><strong>4. Mobilitas dan akses real-time<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Sistem berbasis cloud memungkinkan pengguna, baik tim internal maupun vendor untuk mengakses data kapan saja tanpa harus berada di kantor. Hal ini tentu berbeda dengan proses manual yang bergantung pada akses fisik dan waktu kerja tertentu.<\/span><\/p>\n<h3><strong>5. Pengurangan duplikasi dan human error<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Karena data vendor, dokumen, dan aktivitas tercatat otomatis, risiko input ganda, salah data, atau kehilangan dokumen dapat ditekan secara signifikan.<\/span><\/p>\n<h3><strong>6. Peningkatan kecepatan approval<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Dengan alur approval digital, dokumen seperti media plan, invoice, dan pengajuan lainnya dapat diproses lebih cepat tanpa harus ditandatangani fisik atau menunggu dokumen berpindah tangan.<\/span><\/p>\n<h3><strong>7. Peningkatan kepuasan vendor<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Vendor merasa dihargai karena diberikan akses langsung terhadap sistem yang transparan dan responsif, sehingga hubungan kerja sama bisa terjaga lebih profesional dan jangka panjang.<\/span><\/p>\n<h3><strong>8. Pemantauan kinerja vendor lebih akurat<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Beberapa vendor portal dilengkapi fitur untuk melacak SLA, pengiriman, atau respons vendor terhadap proses bisnis. Hal ini dapat memberikan data historis yang bermanfaat untuk evaluasi kerja sama.<\/span><\/p>\n<h2><b>Fitur Penting dalam Vendor Portal Software<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Untuk memastikan proses pengelolaan vendor berjalan optimal, vendor portal software harus memiliki sejumlah fitur utama yang mendukung kolaborasi, efisiensi, dan transparansi. Fitur-fitur ini tidak hanya mempermudah kerja tim procurement, tetapi juga meningkatkan pengalaman vendor dalam bekerja sama dengan perusahaan.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Berikut beberapa fitur penting yang perlu diperhatikan:<\/span><\/p>\n<h3><b>1. Vendor Registration &amp; Onboarding<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Fitur ini memungkinkan vendor mendaftar, mengunggah dokumen legal, dan melengkapi data perusahaan secara mandiri melalui sistem. Dengan proses onboarding yang digital, perusahaan dapat menghemat waktu tanpa perlu pertukaran dokumen fisik.<\/span><\/p>\n<h3><b>2. Dokumen &amp; Kontrak Digital<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Vendor portal harus menyediakan tempat aman untuk menyimpan dan mengelola dokumen penting seperti kontrak, PO, dan faktur. Hal ini mengurangi risiko kehilangan data dan memudahkan pencarian kembali dokumen saat dibutuhkan.<\/span><\/p>\n<h3><b>3. Order &amp; Invoice Management<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Melalui fitur ini, vendor portal dapat melihat status pemesanan, mengunggah invoice, dan memantau proses pembayaran. Sistem ini membuat alur transaksi menjadi lebih transparan dan efisien.<\/span><\/p>\n<h3><b>4. Approval Workflow Automation<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Fitur ini mendigitalisasi proses persetujuan dokumen, sehingga tim tidak perlu lagi mencetak, menandatangani manual, atau mengirim fisik antar divisi. Semua proses dapat berlangsung lebih cepat dan terdokumentasi rapi.<\/span><\/p>\n<h3><b>5. Real-Time Tracking &amp; Notification<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sistem akan memberikan notifikasi otomatis kepada vendor dan tim internal terkait status dokumen, perubahan permintaan, atau deadline tertentu. Hal ini mengurangi risiko keterlambatan karena miskomunikasi.<\/span><\/p>\n<h3><b>6. Communication Center<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Beberapa vendor ERP menyediakan fitur chat atau pesan internal untuk mempercepat komunikasi antara vendor dan tim pengadaan tanpa harus menggunakan platform terpisah seperti email atau WhatsApp.<\/span><\/p>\n<h3><b>7. Performance Monitoring<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Fitur ini memungkinkan perusahaan menilai kinerja vendor berdasarkan waktu pengiriman, kelengkapan dokumen, atau kepatuhan terhadap SLA. Evaluasi ini membantu dalam pengambilan keputusan kerja sama jangka panjang.<\/span><\/p>\n<h3><b>8. Role-Based Access Control<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Sistem yang baik menyediakan hak akses berbeda untuk tiap pengguna (misal: vendor, procurement officer, supervisor) guna menjaga keamanan data dan mencegah akses yang tidak perlu.<\/span><\/p>\n<h2><b>Jenis Vendor Portal Berdasarkan Industri\u00a0<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Meskipun fungsi utama vendor portal pada dasarnya serupa, tetapi tiap industri memiliki kebutuhan spesifik yang membentuk karakteristik sistem vendor portal mereka. Oleh karena itu, penting bagi perusahaan memahami jenis-jenis vendor portal yang umum digunakan di berbagai sektor berikut ini:<\/span><\/p>\n<h3><strong>1. Manufaktur<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Vendor portal untuk industri manufaktur umumnya dirancang untuk menangani pengadaan bahan baku, pelacakan pengiriman, dan koordinasi logistik secara real-time. Fitur seperti forecast permintaan, jadwal produksi, dan manajemen kontrak jangka panjang sangat krusial di sini.<\/span><\/p>\n<h3><strong>2. Retail &amp; Distribusi<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Di industri ini, vendor portal fokus pada pengelolaan stok, pemesanan otomatis, serta integrasi sistem POS dan logistik. Sistem harus mampu menangani ribuan SKU, vendor lokal hingga global, serta proses retur barang.<\/span><\/p>\n<h3><strong>3. Konstruksi<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Untuk sektor konstruksi, vendor portal mempermudah manajemen pengadaan material proyek, penyewaan alat berat, dan pelaporan progres vendor berdasarkan lokasi proyek. Fitur approval multilevel dan dokumentasi lapangan sering kali menjadi kebutuhan utama.<\/span><\/p>\n<h3><strong>4. F&amp;B (Food and Beverage)<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Vendor portal di F&amp;B digunakan untuk memastikan pasokan bahan baku tetap konsisten, berkualitas, dan sesuai standar keamanan. Proses seperti audit vendor, pelacakan sertifikasi halal atau BPOM, dan sistem alert untuk expired date sangat diperlukan.<\/span><\/p>\n<h3><strong>5. Kesehatan &amp; Farmasi<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Vendor portal dalam industri ini difokuskan pada kepatuhan regulasi (GMP, ISO), dokumentasi suplai, dan distribusi yang sensitif waktu. Sistem juga harus mendukung pelacakan batch produk dan audit vendor secara periodik.<\/span><\/p>\n<h3><strong>6. Teknologi &amp; Telekomunikasi<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Sektor ini membutuhkan vendor portal untuk pengadaan perangkat keras, lisensi software, dan jasa konsultasi teknis. Vendor portal harus fleksibel dalam menangani kontrak berbasis SLA dan pemantauan progres implementasi sistem.<\/span><\/p>\n<h2><b>Cara Memilih Vendor Portal Software Terbaik<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Memilih vendor portal software bukan sekadar soal fitur lengkap, tapi juga harus sesuai dengan kebutuhan, skala, dan alur kerja perusahaan. Berikut adalah beberapa tips penting yang perlu Anda perhatikan saat memilih sistem vendor portal:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pilih Software yang Sesuai dengan Proses Pengadaan Perusahaan Anda: <\/b><span style=\"font-weight: 400;\">Jangan asal pilih software hanya karena populer. Setiap perusahaan memiliki alur approval, struktur tim, dan jenis vendor yang berbeda. Jika sistem tidak sesuai dengan proses kerja internal, justru akan menambah beban kerja dan memperlambat operasional.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pastikan Sistem Mendukung Otomatisasi Workflow: <\/b><span style=\"font-weight: 400;\">Vendor portal yang baik harus bisa mengotomatisasi alur persetujuan dokumen seperti PO, invoice, hingga reimbursement. Tanpa workflow otomatis, tim Anda tetap harus mengurus approval manual, yang berpotensi menyebabkan bottleneck dan keterlambatan pembayaran.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Utamakan Software yang Berbasis Cloud dan Mobile-Friendly: <\/b><span style=\"font-weight: 400;\">Sistem cloud memungkinkan akses real-time dari mana saja. Jika software hanya bisa diakses dari jaringan lokal, fleksibilitas tim lapangan maupun vendor akan terbatas, terutama saat ada perubahan data atau permintaan mendesak.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Periksa Kemampuan Integrasi dengan Sistem Lain: <\/b><span style=\"font-weight: 400;\">Pastikan vendor portal dapat terhubung dengan sistem ERP, akuntansi, atau procurement lain yang Anda gunakan. Jika tidak terintegrasi, Anda harus input data dua kali, yang membuka peluang kesalahan dan duplikasi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Cari Fitur Laporan dan Monitoring yang Lengkap: <\/b><span style=\"font-weight: 400;\">Software terbaik bukan hanya soal input, tapi juga kemampuan memberi insight. Tanpa fitur pelaporan dan analisis kinerja vendor, perusahaan akan kesulitan melakukan evaluasi dan pengambilan keputusan yang berbasis data.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pertimbangkan Kemudahan Penggunaan (User-Friendly): <\/b><span style=\"font-weight: 400;\">Sistem secanggih apa pun tidak akan efektif jika tim internal atau vendor kesulitan menggunakannya. Interface yang rumit hanya akan memperlambat adopsi sistem dan menimbulkan frustasi pengguna.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Cek Keamanan Data dan Hak Akses: <\/b><span style=\"font-weight: 400;\">Karena vendor portal menyimpan banyak dokumen penting dan informasi sensitif, pastikan software memiliki fitur keamanan seperti role-based access dan enkripsi data. Jika sistem rentan, maka risiko kebocoran data vendor dan transaksi menjadi lebih tinggi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Evaluasi Dukungan Teknis dan Layanan Pasca Pembelian: <\/b><span style=\"font-weight: 400;\">Jangan abaikan layanan support. Vendor software yang responsif akan sangat membantu saat terjadi kendala teknis. Jika support lambat atau tidak tersedia, operasional Anda bisa terganggu cukup lama hanya karena masalah kecil.<\/span><\/li>\n<\/ul>\n<h2><b>HashMicro: Solusi Terpadu untuk Otomatisasi Pengelolaan Vendor<\/b><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056.png\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-165608 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056.png\" alt=\"Vendor \" width=\"905\" height=\"693\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056.png 905w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056-300x230.png 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056-768x588.png 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056-548x420.png 548w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056-80x60.png 80w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056-150x115.png 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Screenshot-2025-07-28-104056-696x533.png 696w\" sizes=\"auto, (max-width: 905px) 100vw, 905px\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/?medium=web-form-header\"><span style=\"font-weight: 400;\">Sistem vendor dari <\/span><b>HashMicro<\/b><\/a><span style=\"font-weight: 400;\"> adalah bagian dari rangkaian solusi ERP terintegrasi yang dirancang khusus untuk mengelola hubungan perusahaan dengan mitra vendor secara digital. Sistem ini memungkinkan proses procurement berjalan lebih efisien, terstruktur, dan transparan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Vendor portal HashMicro berperan sebagai jembatan utama antara tim pengadaan dan mitra vendor. Dengan antarmuka yang user-friendly dan sistem berbasis cloud, vendor dapat mengakses platform untuk melihat status pemesanan, mengunggah invoice, dan berkomunikasi langsung dengan tim internal tanpa bergantung pada email atau dokumen fisik.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Sistem vendor HashMicro juga didukung oleh Hashy, asisten AI yang cerdas dan adaptif. Hashy AI membantu perusahaan melakukan analisis kinerja vendor, mendeteksi anomali dalam proses procurement, serta memberikan rekomendasi berbasis data historis untuk pengambilan keputusan yang lebih akurat.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Berikut adalah fitur-fitur yang ditawarkan oleh sistem HashMicro:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Optimasi Pengadaan dengan Hashy AI: <\/b><span style=\"font-weight: 400;\">Fitur ini mengandalkan kecerdasan buatan untuk memilih vendor terbaik berdasarkan performa dan harga secara otomatis dan presisi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Rating Vendor Otomatis: <\/b><span style=\"font-weight: 400;\">Fitur ini mempermudah penilaian vendor secara objektif dan efisien tanpa perlu evaluasi manual yang memakan waktu.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Periodic Vendor Rating Review: <\/b><span style=\"font-weight: 400;\">Fitur ini memastikan kinerja vendor tetap terkontrol secara berkala dan memberi ruang untuk peningkatan kualitas layanan mereka.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Manajemen Program Vendor Promotion: <\/b><span style=\"font-weight: 400;\">Fitur ini membantu perusahaan mendorong kolaborasi strategis dengan vendor melalui penawaran khusus yang saling menguntungkan.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>E-Procurement untuk Tender dan RFQ: <\/b><span style=\"font-weight: 400;\">Fitur <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/rfq-request-for-quotation\/\">RFQ<\/a> ini mempercepat dan mempermudah proses seleksi vendor melalui tender yang lebih transparan dan kompetitif.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>In-Depth Purchase Analysis: <\/b><span style=\"font-weight: 400;\">Fitur ini memungkinkan perusahaan mengevaluasi efektivitas kerja sama vendor berdasarkan pola pembelian dan potensi efisiensi biaya.<\/span><\/li>\n<\/ul>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Vendor portal software adalah solusi penting bagi perusahaan yang ingin membangun sistem pengadaan yang efisien, transparan, dan terstruktur. Dengan fitur seperti manajemen dokumen, tracking real-time, hingga rating otomatis, perusahaan dapat mempercepat proses kerja sama dengan vendor sekaligus meningkatkan kontrol terhadap kualitas dan biaya.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Jika Anda ingin beralih dari sistem manual yang rumit ke platform digital yang terintegrasi, <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/sistem-pembelian\"><span style=\"font-weight: 400;\">HashMicro<\/span><\/a><span style=\"font-weight: 400;\"> adalah pilihan terbaik. Sistem vendor HashMicro dilengkapi dengan Hashy AI untuk membantu analisis dan otomatisasi, serta mendukung pengelolaan vendor secara cerdas dan akurat.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Coba <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/?medium=web-form-header\"><span style=\"font-weight: 400;\">demo gratis<\/span><\/a><span style=\"font-weight: 400;\"> sekarang dan temukan bagaimana HashMicro bisa membantu transformasi sistem pengadaan vendor Anda secara menyeluruh!<\/span><\/p>\n<h2><strong>Pertanyaan Seputar Vendor Portal<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><span style=\"background-color: #e8e8e8;\"><strong>Apa itu portal vendor?<\/strong><\/span><\/summary>\n<p>Portal vendor adalah platform digital yang digunakan perusahaan untuk berinteraksi, bertransaksi, dan mengelola hubungan kerja sama dengan para vendor secara terpusat dan efisien.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><span style=\"background-color: #e8e8e8;\"><strong>Apa itu software sistem manajemen vendor?<\/strong><\/span><\/summary>\n<p>Software sistem manajemen vendor adalah aplikasi yang digunakan untuk mengelola seluruh siklus hidup vendor, mulai dari seleksi, kontrak, pemantauan kinerja, hingga evaluasi dan pengelolaan risiko.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><span style=\"background-color: #e8e8e8;\"><strong>Apa itu SAP untuk vendor?<\/strong><\/span><\/summary>\n<p>SAP untuk vendor adalah modul dalam sistem SAP yang digunakan untuk mengelola hubungan dan proses bisnis dengan vendor, seperti pemesanan, pembayaran, dan evaluasi kinerja secara otomatis dan terintegrasi.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Apakah Anda sering kewalahan mengelola dokumen vendor, memproses pesanan pembelian, atau mengejar status pengiriman yang tidak jelas? Atau apakah proses approval vendor di perusahaan Anda memakan waktu dan rentan kesalahan? Jika iya, maka solusi yang Anda butuhkan adalah vendor portal software. Vendor portal software adalah sistem digital yang memungkinkan perusahaan dan vendor berinteraksi secara terpusat [&hellip;]<\/p>\n","protected":false},"author":161,"featured_media":165607,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1470],"tags":[],"class_list":{"0":"post-165606","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 v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih<\/title>\n<meta name=\"description\" content=\"Vendor Portal Software adalah sistem yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.\" \/>\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\/vendor-portal\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih\" \/>\n<meta property=\"og:description\" content=\"Vendor Portal Software adalah sistem yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/\" \/>\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-07-28T06:34:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-17T02:29:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jonathan Kurniawan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kurniawan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 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\\\/vendor-portal\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/\"},\"author\":{\"name\":\"Jonathan Kurniawan\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/029ac06d135cf8424dfa4f3cb3fef6c5\"},\"headline\":\"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih\",\"datePublished\":\"2025-07-28T06:34:40+00:00\",\"dateModified\":\"2025-12-17T02:29:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/\"},\"wordCount\":2106,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/\",\"name\":\"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png\",\"datePublished\":\"2025-07-28T06:34:40+00:00\",\"dateModified\":\"2025-12-17T02:29:12+00:00\",\"description\":\"Vendor Portal Software adalah sistem yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png\",\"width\":2048,\"height\":1024,\"caption\":\"vendor portal\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/vendor-portal\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih\"}]},{\"@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\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Jonathan-Kurniawan-3-96x96.webp\",\"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":"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih","description":"Vendor Portal Software adalah sistem yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.","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\/vendor-portal\/","og_locale":"id_ID","og_type":"article","og_title":"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih","og_description":"Vendor Portal Software adalah sistem yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-07-28T06:34:40+00:00","article_modified_time":"2025-12-17T02:29:12+00:00","og_image":[{"width":2048,"height":1024,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png","type":"image\/png"}],"author":"Jonathan Kurniawan","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Jonathan Kurniawan","Estimasi waktu membaca":"12 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/"},"author":{"name":"Jonathan Kurniawan","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5"},"headline":"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih","datePublished":"2025-07-28T06:34:40+00:00","dateModified":"2025-12-17T02:29:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/"},"wordCount":2106,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png","articleSection":["Procurement"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/","name":"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png","datePublished":"2025-07-28T06:34:40+00:00","dateModified":"2025-12-17T02:29:12+00:00","description":"Vendor Portal Software adalah sistem yang dirancang untuk memfasilitasi interaksi antara perusahaan dan vendor dalam satu platform terpusat.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/07\/Vendor-Portal-Software-Definisi-Manfaat-dan-Cara-Memilih-scaled.png","width":2048,"height":1024,"caption":"vendor portal"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/vendor-portal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Vendor Portal Software: Definisi, Manfaat, dan Cara Memilih"}]},{"@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\/wp-content\/uploads\/2025\/10\/Jonathan-Kurniawan-3-96x96.webp","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":"vendor portal","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/165606","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=165606"}],"version-history":[{"count":2,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/165606\/revisions"}],"predecessor-version":[{"id":180968,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/165606\/revisions\/180968"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/165607"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=165606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=165606"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=165606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}