{"id":188489,"date":"2026-02-09T12:19:07","date_gmt":"2026-02-09T05:19:07","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=188489"},"modified":"2026-02-09T12:19:07","modified_gmt":"2026-02-09T05:19:07","slug":"goods-receipt-note","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/","title":{"rendered":"Memahami Goods Receipt Note dari Proses ke Dokumen"},"content":{"rendered":"<p>Pernahkah Anda memastikan barang yang diterima sudah benar sebelum dicatat ke sistem? Di sinilah goods receipt note GRN berperan sebagai dokumen awal untuk memverifikasi penerimaan barang secara rapi dan terkontrol.<\/p>\n<p>GRN digunakan untuk mencocokkan barang yang datang dengan pesanan pembelian dan dokumen pengiriman. Proses ini membantu memastikan jumlah, kondisi, dan jenis barang sesuai dengan yang disepakati.<\/p>\n<p>GRN menjadi penghubung antara aktivitas operasional dan pencatatan persediaan. Dengan alur yang jelas, data stok dapat tercatat lebih konsisten dan mudah ditelusuri.<\/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\"><a href=\"#grn\">Goods Receipt Note (GRN)<\/a> adalah dokumen internal gudang yang dibuat setelah barang dari pemasok tiba dan selesai diverifikasi.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Keberadaan <a href=\"#mengapa\">GRN penting untuk<\/a> validasi proses three-way matching, akurasi manajemen inventaris, dan evaluasi kinerja supplier.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\">Proses <a href=\"#alur\">penerimaan barang meliputi beberapa tahapan<\/a> yaitu persiapan pra-kedatangan, pemeriksaan dokumen, pembongkaran, quality control, dan penerbitan GRN.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2 id=\"definisi-dan-konsep-dasar-goods-receipt-note\"><span id=\"grn\">Apa Itu Goods Receipt Note dan Cara Kerjanya?<\/span><\/h2>\n<p>Goods Receipt Note (GRN) adalah dokumen internal yang dibuat oleh departemen gudang atau penerimaan barang setelah kiriman dari pemasok tiba dan diverifikasi.<\/p>\n<p>Dokumen ini berfungsi sebagai bukti tertulis bahwa barang telah diterima secara fisik oleh pembeli. GRN diterbitkan oleh pembeli sebagai bukti penerimaan dan pengakuan perpindahan tanggung jawab atau kepemilikan aset.<\/p>\n<p>Ketika sebuah perusahaan menerbitkan GRN, secara implisit perusahaan tersebut menyatakan bahwa barang yang diterima telah memenuhi standar kuantitas dan kualitas yang disepakati, kecuali dicatat sebaliknya.<\/p>\n<p>Dalam konteks akuntansi, penerbitan GRN sering kali menjadi pemicu untuk mengakui kewajiban utang dagang (accounts payable) atau setidaknya mencatat penerimaan persediaan dalam neraca sementara sebelum faktur diterima.<\/p>\n<h2 id=\"peran-strategis-grn-dalam-rantai-pasok-dan-akuntansi\"><span id=\"mengapa\">Mengapa GRN Penting untuk Supply Chain dan Akuntansi?<\/span><\/h2>\n<p>Keberadaan Goods Receipt Note memegang peranan sentral dalam menjaga integritas operasional dan finansial perusahaan. Berikut adalah analisis mendalam mengenai peran strategis GRN dalam ekosistem bisnis modern.<\/p>\n<h3>1. Validasi dalam proses three-way matching<\/h3>\n<p>Salah satu fungsi terpenting dari GRN adalah sebagai komponen kunci dalam prosedur <em>three-way matching<\/em>. Ini adalah metode kontrol internal yang digunakan oleh departemen utang dagang (Accounts Payable) untuk memvalidasi tagihan sebelum pembayaran dilakukan. Proses ini mencocokkan tiga dokumen utama:<\/p>\n<ul>\n<li><strong>Purchase Order (PO):<\/strong> Apa yang dipesan dan berapa harganya.<\/li>\n<li><strong>Goods Receipt Note (GRN):<\/strong> Apa yang sebenarnya diterima dan kondisinya.<\/li>\n<li><strong>Invoice Vendor:<\/strong> Apa yang ditagihkan oleh pemasok.<\/li>\n<\/ul>\n<p>Jika kuantitas atau kualitas pada GRN tidak sesuai dengan PO atau Invoice, sistem akan memblokir pembayaran hingga diskrepansi terselesaikan. Hal ini efektif untuk mencegah pembayaran atas barang yang tidak pernah diterima, barang rusak, atau kelebihan tagihan harga.<\/p>\n<h3>2. Akurasi manajemen inventaris<\/h3>\n<p>GRN adalah titik awal masuknya data persediaan ke dalam sistem manajemen gudang. Akurasi data pada tahap ini sangat menentukan validitas laporan stok secara keseluruhan.<\/p>\n<p>Kesalahan pencatatan pada GRN akan berdampak domino, mulai dari kesalahan dalam perencanaan produksi, ketidakmampuan memenuhi pesanan pelanggan, hingga kesalahan dalam penilaian aset perusahaan di akhir periode akuntansi.<\/p>\n<p>Dengan GRN yang terstandarisasi, manajer gudang dapat memantau pergerakan barang masuk secara <em>real-time<\/em> dan memastikan level stok selalu optimal.<\/p>\n<h3>3. Evaluasi kinerja pemasok<\/h3>\n<p>Data historis GRN dapat digunakan sebagai alat analisis untuk mengevaluasi kinerja vendor. Perusahaan dapat melacak seberapa sering pemasok mengirimkan barang tepat waktu, seberapa sering terjadi kekurangan jumlah (shortage), atau seberapa tinggi tingkat kerusakan barang saat diterima.<\/p>\n<p>Informasi ini sangat berharga bagi tim procurement saat melakukan negosiasi ulang kontrak atau memutuskan untuk memperpanjang kerjasama dengan pemasok tertentu.<\/p>\n<h2 id=\"komponen-data-kritis-dalam-dokumen-penerimaan-barang\">Data Wajib di GRN agar Penerimaan Barang Valid<\/h2>\n<p>Agar berfungsi efektif sebagai alat kontrol dan audit, sebuah dokumen Goods Receipt Note harus memuat informasi yang lengkap dan spesifik. Struktur GRN yang baik biasanya dibagi menjadi tiga bagian utama: Header, Body, dan Footer.<\/p>\n<h3>1. Informasi header<\/h3>\n<p>Bagian atas dokumen harus memuat identitas transaksi yang jelas:<\/p>\n<ul>\n<li><strong>Nomor GRN Unik:<\/strong> Nomor referensi internal yang dihasilkan secara berurutan untuk memudahkan pelacakan dan pengarsipan.<\/li>\n<li><strong>Tanggal dan Waktu Penerimaan:<\/strong> Mencatat kapan tepatnya barang tiba di fasilitas, yang krusial untuk mengukur <em>lead time<\/em> pemasok.<\/li>\n<li><strong>Nama dan Kode Pemasok:<\/strong> Identitas vendor pengirim barang.<\/li>\n<li><strong>Nomor Referensi Purchase Order:<\/strong> Menghubungkan penerimaan barang dengan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/surat-pesanan-barang\">dokumen otorisasi pembelian<\/a> yang telah diterbitkan sebelumnya, memastikan bahwa barang yang diterima memang valid dan dipesan secara resmi.<\/li>\n<li><strong>Nomor Surat Jalan (Delivery Note):<\/strong> Referensi dokumen pengiriman dari vendor untuk tujuan rekonsiliasi silang.<\/li>\n<\/ul>\n<h3>2. Informasi body (rincian barang)<\/h3>\n<p>Bagian inti ini berisi detail teknis barang yang diterima:<\/p>\n<ul>\n<li><strong>Kode Barang (SKU):<\/strong> Identifikasi unik untuk setiap item guna menghindari kesalahan input stok.<\/li>\n<li><strong>Deskripsi Barang:<\/strong> Penjelasan singkat mengenai nama atau spesifikasi barang.<\/li>\n<li><strong>Kuantitas Dipesan vs. Diterima:<\/strong> Kolom perbandingan untuk melihat apakah pengiriman bersifat parsial (partial shipment) atau penuh.<\/li>\n<li><strong>Satuan Ukuran (UoM):<\/strong> Unit pengukuran seperti pcs, kg, box, atau pallet.<\/li>\n<li><strong>Kondisi Barang:<\/strong> Catatan mengenai status fisik barang (baik, rusak kemasan, bocor, dsb).<\/li>\n<li><strong>Nomor Batch\/Lot dan Tanggal Kedaluwarsa:<\/strong> Sangat krusial untuk industri makanan, farmasi, dan kimia guna keperluan pelacakan (traceability).<\/li>\n<\/ul>\n<h3>3. Informasi footer<\/h3>\n<p>Bagian penutup untuk legalitas dan otorisasi:<\/p>\n<ul>\n<li><strong>Tanda Tangan Penerima:<\/strong> Nama dan tanda tangan staf gudang yang melakukan pemeriksaan fisik.<\/li>\n<li><strong>Tanda Tangan Supervisor:<\/strong> Persetujuan dari kepala gudang atau manajer terkait.<\/li>\n<li><strong>Catatan Tambahan:<\/strong> Ruang untuk menuliskan komentar khusus mengenai anomali pengiriman atau instruksi penyimpanan khusus.<\/li>\n<\/ul>\n<h2 id=\"prosedur-standar-penerimaan-barang-step-by-step\"><span id=\"alur\">Alur Penerimaan Barang dengan Bukti Penerimaan Barang dari Awal hingga Selesai<\/span><\/h2>\n<p>Mengikuti <a href=\"https:\/\/ca.indeed.com\/career-advice\/career-development\/what-is-an-sop\">prosedur standar operasional (SOP) yang ketat<\/a> adalah kunci untuk meminimalkan kesalahan manusia dan kerugian barang. Berikut adalah tahapan ideal dalam proses penerimaan barang.<\/p>\n<h3>1. Persiapan pra-kedatangan<\/h3>\n<p>Sebelum truk pemasok tiba, tim gudang idealnya sudah memiliki jadwal penerimaan. Mereka harus menyiapkan area pembongkaran (unloading bay) dan peralatan <em>material handling<\/em> seperti forklift atau pallet jack.<\/p>\n<p>Staf juga harus memiliki salinan PO atau akses ke sistem untuk melihat daftar barang yang diekspektasikan datang hari itu.<\/p>\n<h3>2. Pemeriksaan dokumen pengantar<\/h3>\n<p>Saat kendaraan tiba, langkah pertama adalah memverifikasi dokumen pengantar dari sopir, biasanya berupa Surat Jalan (Delivery Order). Petugas keamanan atau staf penerimaan awal harus mencocokkan nama vendor dan nomor PO pada surat jalan dengan data internal perusahaan.<\/p>\n<p>Jika tidak ada PO yang valid, penerimaan sebaiknya ditolak di gerbang utama untuk mencegah masuknya barang yang tidak dipesan.<\/p>\n<h3>3. Pembongkaran dan perhitungan fisik<\/h3>\n<p>Barang kemudian dibongkar dari truk. Pada tahap ini, perhitungan fisik dilakukan. Penting untuk tidak hanya mengandalkan angka yang tertera pada kemasan luar. Untuk item bernilai tinggi atau rawan selisih, perhitungan harus dilakukan secara mendetail.<\/p>\n<p>Metode <em>blind receiving<\/em> (penerimaan buta) terkadang diterapkan, di mana staf gudang tidak diberi tahu jumlah yang seharusnya diterima, sehingga mereka &#8220;dipaksa&#8221; untuk menghitung secara riil, bukan sekadar mencentang angka.<\/p>\n<h3>4. Inspeksi kualitas (quality control)<\/h3>\n<p>Setelah jumlah diverifikasi, tahap selanjutnya adalah pemeriksaan kualitas. <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/quality-control\/\">Tim Quality Control (QC)<\/a> akan mengambil sampel atau memeriksa seluruh barang tergantung pada kebijakan perusahaan.<\/p>\n<p>Mereka memeriksa apakah spesifikasi teknis sesuai, apakah ada kerusakan fisik, dan apakah kemasan masih utuh. Barang yang tidak lolos QC akan dipisahkan ke area karantina untuk dikembalikan (retur) atau dimusnahkan.<\/p>\n<h3>5. Penerbitan goods receipt note<\/h3>\n<p>Setelah verifikasi kuantitas dan kualitas selesai, barulah GRN diterbitkan. Data yang dimasukkan ke dalam GRN harus mencerminkan kondisi riil hasil pemeriksaan, bukan menyalin dari Surat Jalan vendor. Jika ada selisih (misalnya surat jalan menyatakan 100 unit, tapi fisik hanya 98 unit), GRN harus mencatat angka 98. Dokumen ini kemudian ditandatangani oleh pihak gudang dan pengantar barang sebagai bukti serah terima.<\/p>\n<div style=\"border:1px solid #ddd; border-radius:8px; overflow:hidden; margin:30px 0; box-shadow:0 4px 12px rgba(0,0,0,0.12);\"><div style=\"background-color:#990000; color:#fff; padding:14px 20px; font-size:18px; font-weight:700; letter-spacing:0.5px;\">Expert's Review<\/div><div style=\"background-color:#fff; padding:22px 20px; font-size:16px; line-height:1.7; position:relative;\"><div style=\"font-size:44px; color:#990000; font-weight:800; line-height:0; position:absolute; top:18px; left:18px;\">\u201c<\/div><p style=\"margin:0 0 14px 40px; font-style:italic; color:#333;\">\u201cGRN yang kuat selalu berbasis kondisi riil, bukan menyalin angka dari dokumen vendor. Kebiasaan ini biasanya langsung menurunkan mismatch invoice dan mempercepat approval pembayaran.\u201d<\/p><p style=\"margin:0 0 0 40px; font-weight:700; color:#444;\">\u2014 Anandia Denisha, MBA, Regional Manager<\/p><\/div><\/div>\n<h2 id=\"tantangan-umum\">Tantangan Umum dalam Pengelolaan Bukti Penerimaan Barang<\/h2>\n<p>Meskipun prosedurnya tampak lugas, implementasi di lapangan sering kali menghadapi berbagai kendala. Memahami tantangan ini adalah langkah awal untuk merumuskan solusi yang efektif.<\/p>\n<h3>1. Keterlambatan aliran informasi<\/h3>\n<p>Dalam sistem berbasis kertas manual, salinan fisik GRN sering kali terlambat sampai ke meja departemen keuangan. Dokumen bisa tertahan di meja supervisor gudang, terselip, atau hilang dalam perjalanan antar departemen.<\/p>\n<p>Akibatnya, proses pembayaran ke vendor tertunda, yang dapat merusak hubungan bisnis, atau sebaliknya, data stok di sistem akuntansi menjadi tidak <em>update<\/em> sehingga tim penjualan menjual barang yang sebenarnya belum tercatat di sistem.<\/p>\n<h3>2. Kesalahan manusia (human error)<\/h3>\n<p>Kelelahan, kurangnya konsentrasi, atau tulisan tangan yang tidak terbaca adalah musuh utama akurasi data. Kesalahan dalam menuliskan kode SKU atau salah menghitung desimal pada kuantitas barang dapat menyebabkan selisih stok (stock discrepancy) yang signifikan.<\/p>\n<p>Kesalahan ini sering kali baru terdeteksi saat dilakukan <em>stock opname<\/em> di akhir bulan atau tahun, di mana penelusuran akar masalah sudah menjadi sangat sulit.<\/p>\n<h3>3. Penerimaan barang parsial (partial delivery)<\/h3>\n<p>Seringkali vendor tidak dapat mengirimkan pesanan secara penuh dalam satu kali pengiriman. Hal ini terutama umum terjadi pada <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/blanket-order\">kontrak pengadaan berulang<\/a> di mana pengiriman dilakukan bertahap selama periode tertentu.<\/p>\n<p>Mengelola GRN untuk pengiriman parsial memerlukan ketelitian ekstra untuk memastikan sisa pesanan (backorder) terlacak dengan benar dan tidak terjadi pencatatan ganda atas pesanan yang sama.<\/p>\n<h2 id=\"strategi-discrepancy\">Cara Menangani Selisih Barang dengan Proses GRN<\/h2>\n<p>Ketidaksesuaian barang fisik dan dokumen memang bisa terjadi dalam operasional. Yang penting adalah cara perusahaan menanganinya agar tetap efisien. Umumnya diskrepansi terbagi tiga yaitu shortage, overage, dan damage.<\/p>\n<p>Jika terjadi shortage, GRN harus mencatat jumlah aktual yang diterima. Staf gudang membuat laporan ketidaksesuaian dan menginformasikan tim pengadaan. Selanjutnya, vendor diminta kirim susulan atau menerbitkan credit note untuk penyesuaian tagihan.<\/p>\n<p>Jika terjadi overage, perusahaan bisa menerima dengan revisi PO bila barang memang dibutuhkan. Alternatifnya, tolak dan kembalikan ke vendor. Menerima tanpa revisi dokumen berisiko memicu selisih saat pembayaran karena nilai invoice melebihi PO.<\/p>\n<p>Jika barang rusak, proses retur perlu dijalankan secepatnya. Barang rusak dipisahkan dari good stock dan dicatat detail di GRN. Dokumentasi foto biasanya diperlukan untuk memperkuat klaim ke vendor.<\/p>\n<h2 id=\"digitalisasi-grn\">GRN Digital dari Form Manual ke Proses Otomatis<\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-188594\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis.webp\" alt=\"grn digital dari form manual ke proses otomatis\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/grn-digital-dari-form-manual-ke-proses-otomatis-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Perusahaan modern beralih ke sistem digital atau <em>e-GRN<\/em> yang terintegrasi dalam sistem Enterprise Resource Planning (ERP). Transformasi ini membawa perubahan fundamental dalam cara penerimaan barang dikelola.<\/p>\n<h3>1. Integrasi data real-time<\/h3>\n<p>Dengan sistem digital, begitu staf gudang memindai <em>barcode<\/em> atau QR code barang yang datang menggunakan perangkat genggam (handheld scanner), GRN akan terbentuk secara otomatis di sistem.<\/p>\n<p>Data stok langsung bertambah saat itu juga, dan notifikasi otomatis dikirimkan ke departemen pengadaan dan keuangan. Tidak ada lagi jeda waktu antara penerimaan fisik dan pencatatan sistem.<\/p>\n<h3>2. Otomatisasi three-way matching<\/h3>\n<p>Sistem ERP canggih mampu melakukan pencocokan tiga arah secara otomatis. Sistem akan membandingkan data digital dari PO, e-GRN, dan e-Invoice.<\/p>\n<p>Jika semua data cocok dalam batas toleransi yang ditentukan, sistem dapat menjadwalkan pembayaran secara otomatis tanpa intervensi manusia, mempercepat siklus <em>procure-to-pay<\/em> secara drastis.<\/p>\n<h3>3. Jejak audit digital<\/h3>\n<p>Setiap perubahan, persetujuan, atau penolakan dalam proses penerimaan barang tercatat secara digital beserta stempel waktu (timestamp) dan identitas pengguna.<\/p>\n<p>Hal ini menciptakan jejak audit yang transparan dan memudahkan penelusuran jika terjadi investigasi internal atau audit eksternal.<\/p>\n<h2 id=\"studi-kasus\">Contoh Penerapan GRN di Berbagai Industri<\/h2>\n<p>Penerapan GRN memiliki nuansa yang berbeda tergantung pada jenis industrinya. Memahami konteks industri sangat penting untuk merancang prosedur GRN yang efektif.<\/p>\n<h3>1. Industri manufaktur<\/h3>\n<p>Dalam lingkungan pabrik, GRN untuk bahan baku sangat krusial karena berkaitan langsung dengan kualitas produk akhir. Proses penerimaan di sini melibatkan pengujian laboratorium yang ketat.<\/p>\n<p>GRN tidak bisa diterbitkan hanya berdasarkan perhitungan fisik, tetapi harus ada sertifikat analisis (COA) yang menyertainya. Kegagalan dalam <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/mengenal-prosedur-pembelian-bahan-baku-pada-perusahaan-manufaktur\">tahapan pengadaan material produksi<\/a> ini dapat menyebabkan kemacetan di lini produksi atau cacat produk massal.<\/p>\n<h3>2. Industri ritel dan e-commerce<\/h3>\n<p>Bagi peritel, kecepatan adalah segalanya. Barang yang diterima harus segera tersedia di rak toko atau siap dijual di situs web. GRN di sektor ini sering kali menggunakan teknologi RFID untuk memindai ratusan item dalam hitungan detik.<\/p>\n<p>Akurasi GRN di sini berdampak langsung pada kepuasan pelanggan. Jika GRN mencatat stok ada padahal fisik tidak ada, pelanggan akan kecewa karena pesanan mereka dibatalkan (out of stock).<\/p>\n<h3>3. Industri konstruksi<\/h3>\n<p>Penerimaan barang di lokasi proyek konstruksi memiliki tantangan unik karena lokasi yang terbuka dan sering kali tidak memiliki gudang tertutup yang standar.<\/p>\n<p>GRN di sini berfungsi untuk memverifikasi material curah seperti semen, pasir, atau baja. Verifikasi sering kali melibatkan pengukuran volume atau berat di jembatan timbang.<\/p>\n<h2 id=\"dampak-finansial\">Pengaruh GRN pada Arus Kas dan Kontrol Biaya<\/h2>\n<p>Walau bersifat operasional, GRN berdampak langsung pada laporan keuangan. Di neraca, GRN menjadi bukti penambahan persediaan sebagai aset lancar. Jika terlambat dicatat, nilai aset bisa terlihat lebih rendah pada periode tersebut.<\/p>\n<p>Di <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-laba-rugi-perusahaan-manufaktur\/\">laporan laba rugi perusahaan<\/a>, GRN yang tidak akurat dapat mengacaukan perhitungan HPP. Barang yang sudah diterima dan terjual tetapi belum tercatat bisa membuat HPP meleset. Akibatnya, margin kotor menjadi tidak menggambarkan kondisi sebenarnya.<\/p>\n<p>Kontrol GRN yang lemah juga memicu arus kas keluar yang tidak perlu. Overpayment atau pembayaran ganda sering terjadi karena verifikasi penerimaan barang tidak ketat. Kontrol GRN yang baik membantu menjaga kas dan membuat biaya lebih terkendali.<\/p>\n<h2 id=\"tren-masa-depan\">Tren Masa Depan dalam Manajemen Penerimaan Barang<\/h2>\n<p>Ke depan, penerimaan barang akan makin otomatis dan cerdas. Computer Vision dan AI dapat mendeteksi cacat saat bongkar muat lalu memberi notifikasi langsung pada draf GRN. Ini membuat keputusan terima atau tolak lebih cepat dan konsisten.<\/p>\n<p>Blockchain mulai dipakai untuk menyamakan data antara pembeli dan vendor. Saat pengiriman dan GRN tercatat di ledger terdistribusi, data lebih sulit diubah sepihak. Dampaknya, potensi sengketa tagihan bisa berkurang.<\/p>\n<p>IoT memungkinkan sensor pada palet atau kontainer merekam suhu, kelembaban, dan guncangan selama pengiriman. GRN tidak hanya mencatat barang diterima, tetapi juga kondisi barang selama perjalanan. Jika melewati ambang aman, sistem bisa otomatis menolak sebelum masuk stok.<\/p>\n<h2 id=\"langkah-taktis-implementasi-sistem-grn-yang-efektif\">Langkah Taktis Implementasi Sistem GRN yang Efektif<\/h2>\n<p>Menerapkan prosedur GRN yang kuat memerlukan kombinasi antara disiplin operasional dan dukungan teknologi yang tepat. Berikut adalah panduan langkah demi langkah beserta parameter keberhasilannya.<\/p>\n<h3 id=\"fase-persiapan-dan-standardisasi-sop\">1. Fase persiapan dan standardisasi SOP<\/h3>\n<p>Langkah pertama adalah menyusun Standard Operating Procedure (SOP) yang jelas mengenai batasan toleransi. Apakah perusahaan menerima kelebihan kiriman (over-delivery)?<\/p>\n<p>Berapa persen toleransi kerusakan yang diizinkan sebelum seluruh kiriman ditolak? Kebijakan ini harus dikonfigurasi ke dalam sistem ERP agar staf gudang memiliki panduan otomatis saat melakukan input data.<\/p>\n<h3 id=\"metrik-keberhasilan-dan-kpi-penerimaan-barang\">2. Metrik keberhasilan dan KPI penerimaan barang<\/h3>\n<p>Untuk mengukur efektivitas proses penerimaan barang, manajemen perlu memantau Key Performance Indicators (KPI) berikut:<\/p>\n<ul>\n<li><strong>Dock-to-Stock Time:<\/strong> Mengukur durasi waktu sejak truk tiba di dermaga hingga barang tercatat dalam sistem dan siap digunakan atau dijual. Target ideal adalah di bawah 24 jam, atau bahkan hitungan jam untuk barang fast-moving.<\/li>\n<li><strong>GRN Accuracy Rate:<\/strong> Persentase dokumen GRN yang bebas dari kesalahan input (kuantitas, harga, kondisi). Tingkat akurasi di bawah 98% menandakan adanya masalah serius dalam pelatihan staf atau alat kerja.<\/li>\n<li><strong>Supplier Error Rate:<\/strong> Frekuensi ketidaksesuaian antara PO dan fisik barang yang dikirim pemasok. Data dari GRN ini menjadi dasar evaluasi kinerja vendor tahunan.<\/li>\n<\/ul>\n<h2 id=\"jebakan-umum-common-pitfalls-dan-mitigasi-strategis\">Potensi Kesalahan dan Kontrol yang Tepat dalam Proses Penerimaan Barang<\/h2>\n<p>Bahkan dengan sistem terbaik, kesalahan manusia dan celah prosedur sering terjadi. Mengidentifikasi jebakan ini sejak dini dapat menyelamatkan perusahaan dari kerugian besar.<\/p>\n<h3 id=\"penundaan-input-data-data-entry-lag\">1. Penundaan input data (data entry lag)<\/h3>\n<p>Kesalahan yang sering terjadi adalah barang sudah diterima dan ditaruh di rak, tetapi GRN baru diinput belakangan sehingga sistem terlihat kosong padahal stok ada dan tim bisa melewatkan peluang order.<\/p>\n<p>Oleh karena itu, solusinya adalah buat GRN real time di receiving dock dengan mobile handheld scanner agar stok langsung ter-update saat barang turun dari truk.<\/p>\n<h3 id=\"mengabaikan-discrepancy-management\">2. Mengabaikan discrepancy management<\/h3>\n<p>Masalah lain adalah staf menyesuaikan angka di sistem agar sama dengan surat jalan meski jumlah fisik berbeda, yang akhirnya memicu selisih stok besar saat tutup buku dan sulit dilacak akar penyebabnya.<\/p>\n<p>Untuk mengatasi masalah ini, bisnis dapat menerapkan blind receiving agar staf wajib input hasil hitung fisik, lalu sistem otomatis menandai perbedaan untuk ditinjau supervisor.<\/p>\n<h2 id=\"kesimpulan\">Kesimpulan<\/h2>\n<p>Goods Receipt Note adalah aspek penting dalam manajemen rantai pasok dan akuntansi perusahaan. Dari proses verifikasi fisik di dermaga bongkar muat hingga rekonsiliasi tagihan, GRN memastikan bahwa biaya yang dikeluarkan perusahaan sepadan dengan nilai barang yang diterima.<\/p>\n<p>Di tengah dinamika bisnis yang semakin cepat, ketergantungan pada proses manual menjadi risiko yang tidak perlu. Transformasi menuju sistem penerimaan barang yang terdigitalisasi dan terintegrasi menjadi sebuah kebutuhan.<\/p>\n<p>Perusahaan yang mampu mengelola proses penerimaan barangnya dengan presisi, transparansi, dan efisiensi akan memiliki keunggulan kompetitif berupa data persediaan yang akurat, arus kas yang sehat, dan operasional yang lincah.<\/p>\n\n<h2><strong>Pertanyaan Seputar Goods Receipt Note<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa perbedaan antara Goods Receipt Note (GRN) dan Delivery Note?<\/strong><\/summary>\n<p>Delivery Note (Surat Jalan) dibuat oleh pemasok sebagai bukti pengiriman barang, sedangkan GRN dibuat oleh pembeli (internal perusahaan) sebagai bukti verifikasi bahwa barang telah diterima dan diperiksa kondisinya.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Mengapa GRN penting bagi departemen keuangan?<\/strong><\/summary>\n<p>GRN sangat penting bagi keuangan untuk melakukan three-way matching, yaitu mencocokkan PO, Invoice, dan GRN guna memastikan pembayaran hanya dilakukan untuk barang yang benar-benar diterima sesuai pesanan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa yang harus dilakukan jika jumlah barang di GRN tidak sesuai dengan PO?<\/strong><\/summary>\n<p>Jika terjadi selisih (discrepancy), staf gudang harus mencatat jumlah aktual yang diterima di GRN (bukan jumlah PO). Selanjutnya, tim procurement harus meminta nota kredit (jika kurang\/rusak) atau merevisi PO (jika kelebihan diterima) sebelum pembayaran diproses.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Pernahkah Anda memastikan barang yang diterima sudah benar sebelum dicatat ke sistem? Di sinilah goods receipt note GRN berperan sebagai dokumen awal untuk memverifikasi penerimaan barang secara rapi dan terkontrol. GRN digunakan untuk mencocokkan barang yang datang dengan pesanan pembelian dan dokumen pengiriman. Proses ini membantu memastikan jumlah, kondisi, dan jenis barang sesuai dengan yang [&hellip;]<\/p>\n","protected":false},"author":161,"featured_media":188590,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1470],"tags":[],"class_list":{"0":"post-188489","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>Memahami Goods Receipt Note dari Proses ke Dokumen<\/title>\n<meta name=\"description\" content=\"Goods receipt note adalah dokumen internal yang mencatat hasil verifikasi barang diterima dari pemasok sebelum stok dan biaya dicatat.\" \/>\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\/goods-receipt-note\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Memahami Goods Receipt Note dari Proses ke Dokumen\" \/>\n<meta property=\"og:description\" content=\"Goods receipt note adalah dokumen internal yang mencatat hasil verifikasi barang diterima dari pemasok sebelum stok dan biaya dicatat.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2026-02-09T05:19:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/goods-receipt-note-hashmicro.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Jonathan Kurniawan\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jonathan Kurniawan\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 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\\\/goods-receipt-note\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/\"},\"author\":{\"name\":\"Jonathan Kurniawan\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/029ac06d135cf8424dfa4f3cb3fef6c5\"},\"headline\":\"Memahami Goods Receipt Note dari Proses ke Dokumen\",\"datePublished\":\"2026-02-09T05:19:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/\"},\"wordCount\":2658,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/goods-receipt-note-hashmicro.webp\",\"articleSection\":[\"Procurement\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/\",\"name\":\"Memahami Goods Receipt Note dari Proses ke Dokumen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/goods-receipt-note-hashmicro.webp\",\"datePublished\":\"2026-02-09T05:19:07+00:00\",\"description\":\"Goods receipt note adalah dokumen internal yang mencatat hasil verifikasi barang diterima dari pemasok sebelum stok dan biaya dicatat.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/goods-receipt-note-hashmicro.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/goods-receipt-note-hashmicro.webp\",\"width\":1200,\"height\":675,\"caption\":\"goods receipt note hashmicro\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/goods-receipt-note\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Memahami Goods Receipt Note dari Proses ke Dokumen\"}]},{\"@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":"Memahami Goods Receipt Note dari Proses ke Dokumen","description":"Goods receipt note adalah dokumen internal yang mencatat hasil verifikasi barang diterima dari pemasok sebelum stok dan biaya dicatat.","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\/goods-receipt-note\/","og_locale":"id_ID","og_type":"article","og_title":"Memahami Goods Receipt Note dari Proses ke Dokumen","og_description":"Goods receipt note adalah dokumen internal yang mencatat hasil verifikasi barang diterima dari pemasok sebelum stok dan biaya dicatat.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-02-09T05:19:07+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/goods-receipt-note-hashmicro.webp","type":"image\/webp"}],"author":"Jonathan Kurniawan","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Jonathan Kurniawan","Estimasi waktu membaca":"16 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/"},"author":{"name":"Jonathan Kurniawan","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/029ac06d135cf8424dfa4f3cb3fef6c5"},"headline":"Memahami Goods Receipt Note dari Proses ke Dokumen","datePublished":"2026-02-09T05:19:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/"},"wordCount":2658,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/goods-receipt-note-hashmicro.webp","articleSection":["Procurement"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/","name":"Memahami Goods Receipt Note dari Proses ke Dokumen","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/goods-receipt-note-hashmicro.webp","datePublished":"2026-02-09T05:19:07+00:00","description":"Goods receipt note adalah dokumen internal yang mencatat hasil verifikasi barang diterima dari pemasok sebelum stok dan biaya dicatat.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/goods-receipt-note-hashmicro.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/goods-receipt-note-hashmicro.webp","width":1200,"height":675,"caption":"goods receipt note hashmicro"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/goods-receipt-note\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Memahami Goods Receipt Note dari Proses ke Dokumen"}]},{"@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":"goods receipt note","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188489","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=188489"}],"version-history":[{"count":2,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188489\/revisions"}],"predecessor-version":[{"id":188596,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188489\/revisions\/188596"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/188590"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=188489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=188489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=188489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}