{"id":188258,"date":"2026-02-09T11:47:54","date_gmt":"2026-02-09T04:47:54","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=188258"},"modified":"2026-02-09T11:48:36","modified_gmt":"2026-02-09T04:48:36","slug":"stock-ledger-adalah","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/","title":{"rendered":"Stock Ledger dan Perannya dalam Pencatatan Persediaan"},"content":{"rendered":"<p><!-- WARNING: COMPETITOR DATA WAS MOCK (Google Search Failed) --><br \/>\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<p>Dalam ekosistem bisnis yang bergerak cepat, ketepatan data adalah fondasi utama keberlangsungan operasional, terutama bagi perusahaan yang sangat bergantung pada pergerakan barang fisik. Seringkali, manajer operasional dan tim keuangan menemukan ketidaksesuaian antara jumlah fisik barang di gudang dengan angka yang tercatat dalam laporan keuangan. Disparitas ini bukan sekadar masalah administratif, melainkan indikator adanya celah dalam sistem pencatatan yang dapat berujung pada kerugian finansial yang signifikan.<\/p>\n<p>Di sinilah peran vital dari <em>stock ledger<\/em> atau buku besar persediaan menjadi sangat krusial. Bukan sekadar daftar barang, instrumen ini berfungsi sebagai jembatan penghubung antara aktivitas logistik riil dengan akuntansi keuangan. Pemahaman mendalam mengenai stock ledger adalah langkah awal bagi perusahaan untuk mentransformasi manajemen inventaris dari sekadar aktivitas pencatatan menjadi strategi bisnis yang mampu meningkatkan efisiensi biaya dan profitabilitas.<\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#definisi-dan-konsep-dasar-stock-ledger\">Definisi Stock Ledger<\/a>: Sebuah sistem pencatatan terperinci yang melacak riwayat transaksi, nilai finansial, dan kuantitas persediaan secara kronologis.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Penerapan <a href=\"#komponen-kritis-dalam-struktur-stock-ledger\">Metode Valuasi<\/a> yang tepat seperti FIFO, LIFO, atau Weighted Average sangat menentukan akurasi laporan laba rugi perusahaan.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#metode-valuasi-persediaan-dalam-stock-ledger\">Strategi Audit<\/a> berkala diperlukan untuk memastikan kesesuaian antara data di buku besar dengan kondisi fisik di gudang guna mencegah penyusutan stok.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Pemanfaatan <a href=\"#manfaat-strategis-implementasi-stock-ledger-yang-akurat\">Integrasi Teknologi<\/a> melalui sistem ERP memungkinkan pembaruan data secara real-time dan meminimalkan kesalahan manusia.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n<!-- \t\t\t<div class=\"button-wrapper\">\r\n\t\t\t\t<a href=\"https:\/\/www.equiperp.com\/tour-produk-gratis\/?medium=key-takeaways\" class=\"submit-button\">Klik untuk Demo Gratis!<\/a>\r\n\t\t\t<\/div> -->\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<h2 id=\"definisi-dan-konsep-dasar-stock-ledger\"><strong>Apa Itu Stock Ledger?<\/strong><\/h2>\n<p data-start=\"97\" data-end=\"412\">Stock ledger adalah <strong data-start=\"117\" data-end=\"138\">catatan akuntansi<\/strong> yang mencatat setiap perubahan persediaan dan nilai rupiah yang melekat pada stok tersebut. Catatan ini dipakai untuk melacak <strong data-start=\"301\" data-end=\"344\">stok masuk, stok keluar, dan saldo stok<\/strong> di akhir periode, lengkap dengan nilai per unit dan total nilainya.<\/p>\n<p data-start=\"414\" data-end=\"467\">Informasi yang biasanya ada di stock ledger meliputi:<\/p>\n<ul>\n<li data-start=\"470\" data-end=\"495\"><strong data-start=\"470\" data-end=\"495\">Saldo awal persediaan<\/strong><\/li>\n<li data-start=\"498\" data-end=\"537\"><strong data-start=\"498\" data-end=\"514\">Barang masuk<\/strong> (pembelian\/penerimaan)<\/li>\n<li data-start=\"540\" data-end=\"579\"><strong data-start=\"540\" data-end=\"557\">Barang keluar<\/strong> (pemakaian\/penjualan)<\/li>\n<li data-start=\"582\" data-end=\"628\"><strong data-start=\"582\" data-end=\"591\">Retur<\/strong> (pembelian atau penjualan, jika ada)<\/li>\n<li data-start=\"631\" data-end=\"666\"><strong data-start=\"631\" data-end=\"646\">Saldo akhir<\/strong> (kuantitas + nilai)<\/li>\n<\/ul>\n<p data-start=\"668\" data-end=\"1109\" data-is-last-node=\"\" data-is-only-node=\"\">Dalam sistem akuntansi, stock ledger berperan sebagai <strong data-start=\"722\" data-end=\"750\">buku pembantu persediaan<\/strong> yang merinci transaksi untuk mendukung akun \u201cPersediaan\u201d di <strong data-start=\"811\" data-end=\"847\">buku besar umum (general ledger)<\/strong>.<\/p>\n<p data-start=\"668\" data-end=\"1109\" data-is-last-node=\"\" data-is-only-node=\"\">Saat ada transaksi terkait stok (misalnya penerimaan dari pemasok atau pengiriman ke pelanggan), stock ledger diperbarui <strong data-start=\"970\" data-end=\"994\">langsung (real-time)<\/strong> pada sistem perpetual, atau <strong data-start=\"1023\" data-end=\"1034\">berkala<\/strong> pada sistem periodik.<\/p>\n<h2><strong>Perbedaan Stock Ledger dan Bin Card<\/strong><\/h2>\n<p>Stock ledger dan bin card sama-sama dipakai untuk memantau persediaan, tapi fokusnya beda.<\/p>\n<h3><strong>Bin Card (Kartu Stok Gudang)<\/strong><\/h3>\n<ul>\n<li>Lokasi: biasanya ditempel\/ditaruh dekat rak atau area penyimpanan barang di gudang<\/li>\n<li>Fokus data: jumlah fisik (stok masuk, keluar, saldo)<\/li>\n<li>Tujuan: membantu tim gudang tahu stok tersedia saat picking, putaway, dan pengecekan cepat<\/li>\n<li>Catatan nilai: umumnya tidak mencantumkan harga atau nilai uang<\/li>\n<\/ul>\n<h3><strong>Stock Ledger (Buku Besar Persediaan)<\/strong><\/h3>\n<ul>\n<li>Lokasi: dikelola oleh bagian keuangan\/akuntansi atau sistem ERP terpusat<\/li>\n<li>Fokus data: jumlah + nilai persediaan (harga per unit dan total)<\/li>\n<li>Tujuan: jadi dasar untuk menghitung HPP dan menilai persediaan sebagai aset pada laporan keuangan<\/li>\n<li>Dipakai untuk: rekonsiliasi stok, audit, serta pelaporan keuangan<\/li>\n<\/ul>\n<h2 id=\"komponen-kritis-dalam-struktur-stock-ledger\"><strong>Komponen Kritis dalam Struktur Stock Ledger<\/strong><\/h2>\n<p>Agar stock ledger dapat memberikan data yang valid dan dapat ditindaklanjuti, terdapat beberapa elemen data yang wajib tercatat dengan rapi. Kelengkapan komponen ini akan menentukan seberapa mudah perusahaan melakukan penelusuran (traceability) jika terjadi selisih stok.<\/p>\n<h3><strong>1. Kode Barang (SKU) dan Deskripsi<\/strong><\/h3>\n<p>Setiap barang perlu kode unik (SKU) + nama\/deskripsi yang jelas. Ini mencegah salah input barang yang mirip, misalnya beda ukuran, grade, atau varian.<\/p>\n<h3><strong>2. Tanggal dan Nomor Referensi Transaksi<\/strong><\/h3>\n<p>Setiap transaksi perlu tanggal dan nomor dokumen sumber, misalnya:<\/p>\n<ul>\n<li>PO (Purchase Order)<\/li>\n<li>DO\/Surat Jalan<\/li>\n<li>GRN (Goods Received Note) kalau dipakai<\/li>\n<li>Invoice\/Faktur<\/li>\n<\/ul>\n<h3><strong>3. Kuantitas Masuk, Keluar, dan Saldo<\/strong><\/h3>\n<p>Kolom ini menunjukkan pergerakan stok:<\/p>\n<ul>\n<li>masuk \u2192 saldo naik<\/li>\n<li>keluar \u2192 saldo turun<\/li>\n<\/ul>\n<h3><strong>4. Harga Satuan dan Nilai Total<\/strong><\/h3>\n<p>Bagian ini yang membedakan stock ledger dari catatan gudang biasa:<\/p>\n<ul>\n<li>harga per unit dicatat sesuai metode valuasi (misalnya FIFO atau average)<\/li>\n<li>nilai total dihitung untuk mengetahui nilai persediaan secara finansial<\/li>\n<\/ul>\n<p>Karena harga beli bisa berubah, konsistensi metode valuasi jadi kunci supaya HPP dan nilai persediaan tetap valid.<\/p>\n<p>Pencatatan yang disiplin pada komponen-komponen di atas akan memudahkan tim audit internal dalam melakukan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/audit-siklus-persediaan\">prosedur audit persediaan<\/a> secara berkala.<\/p>\n<h2 id=\"metode-valuasi-persediaan-dalam-stock-ledger\"><strong>Metode Valuasi Persediaan dalam Stock Ledger<\/strong><\/h2>\n<p>Metode valuasi menentukan harga pokok yang dipakai saat stok keluar, sekaligus menentukan nilai persediaan akhir yang muncul di neraca. Karena harga beli bisa berubah tiap periode, perusahaan perlu memakai metode yang konsisten.<\/p>\n<h3><strong>1) FIFO (First-In, First-Out)<\/strong><\/h3>\n<p>FIFO menganggap barang yang pertama masuk sebagai barang yang pertama keluar. Artinya, HPP diambil dari batch pembelian yang lebih lama.<\/p>\n<ul>\n<li><strong>Cocok untuk:<\/strong> barang kedaluwarsa atau cepat rusak (misalnya makanan, obat, kosmetik).<\/li>\n<li><strong>Dampak umum:<\/strong> persediaan akhir cenderung bernilai \u201clebih baru\u201d (mendekati harga terbaru).<\/li>\n<li><strong>Catatan penting:<\/strong> saat harga naik, HPP cenderung lebih rendah \u2192 laba terlihat lebih tinggi.<\/li>\n<\/ul>\n<h3><strong>2) LIFO (Last-In, First-Out)<\/strong><\/h3>\n<p>LIFO menganggap barang yang terakhir masuk sebagai barang yang pertama keluar. Jadi HPP memakai biaya dari pembelian terbaru.<\/p>\n<ul>\n<li><strong>Cocok untuk:<\/strong> konteks tertentu yang memperbolehkan LIFO dan fokus pada pencocokan biaya terbaru ke penjualan.<\/li>\n<li><strong>Dampak umum:<\/strong> saat harga naik, HPP cenderung lebih tinggi \u2192 laba terlihat lebih rendah.<\/li>\n<li><strong>Catatan penting:<\/strong> metode ini banyak dibatasi\/ tidak diperbolehkan di standar akuntansi yang mengadopsi IFRS, jadi perlu cek kebijakan yang berlaku di perusahaan.<\/li>\n<\/ul>\n<h3><strong>3) Weighted Average (Biaya Rata-Rata Tertimbang)<\/strong><\/h3>\n<p>Metode ini memakai rata-rata biaya per unit dari seluruh stok yang tersedia (biasanya dihitung ulang setiap ada pembelian baru). HPP dan nilai persediaan akhir memakai angka rata-rata ini.<\/p>\n<ul>\n<li><strong>Cocok untuk:<\/strong> barang yang tercampur dan sulit dibedakan per batch (misalnya bahan baku massal, komoditas, sparepart standar).<\/li>\n<li><strong>Dampak umum:<\/strong> angka HPP dan persediaan lebih \u201cstabil\u201d karena tidak loncat-loncat mengikuti batch.<\/li>\n<li><strong>Catatan penting:<\/strong> lebih sederhana untuk administrasi dibanding FIFO\/LIFO per batch.<\/li>\n<\/ul>\n<p>Perubahan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/inventory-valuation\">metode penilaian inventaris<\/a> di tengah jalan biasanya tidak disarankan karena dapat mendistorsi perbandingan kinerja keuangan antar periode.<\/p>\n<h2 id=\"manfaat-strategis-implementasi-stock-ledger-yang-akurat\"><strong>Manfaat Implementasi Stock Ledger yang Akurat<\/strong><\/h2>\n<p>Mengapa perusahaan harus berinvestasi waktu dan sumber daya untuk memelihara stock ledger yang rapi?<\/p>\n<table style=\"width: 100%; border-collapse: separate; border-spacing: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.6; border: 1px solid #e6e6e6; border-radius: 12px; overflow: hidden; box-shadow: 0 6px 18px rgba(0,0,0,0.06);\">\n<thead>\n<tr>\n<th style=\"width: 28%; background: #990000; color: #ffffff; text-align: left; padding: 12px 14px; font-size: 15px; border-bottom: 1px solid #7a0000;\">Manfaat<\/th>\n<th style=\"background: #990000; color: #ffffff; text-align: left; padding: 12px 14px; font-size: 15px; border-bottom: 1px solid #7a0000;\">Dampak ke Bisnis<\/th>\n<th style=\"width: 30%; background: #990000; color: #ffffff; text-align: left; padding: 12px 14px; font-size: 15px; border-bottom: 1px solid #7a0000;\">Contoh<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd; border-bottom: 1px solid #eeeeee;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Optimasi arus kas<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Memperjelas stok cepat vs lambat, jadi pembelian lebih tepat dan dana tidak terkunci di barang menumpuk.<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Menahan reorder SKU slow-moving dan alihkan budget ke item yang lebih laku.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd; border-bottom: 1px solid #eeeeee;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Cegah selisih &amp; kehilangan<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Mempercepat deteksi selisih saat stock opname karena ada jejak transaksi per SKU dan tanggal.<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Selisih berulang di SKU tertentu bisa ditelusuri ke dokumen dan periode terkait.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd; border-bottom: 1px solid #eeeeee;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Pengadaan lebih presisi<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Data historis membantu menetapkan reorder point dan mencegah stockout atau overstock.<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Stok aman saat demand musiman naik tanpa numpuk setelah musim selesai.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Pajak &amp; laporan keuangan rapi<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top;\">Nilai persediaan dan HPP lebih akurat, jadi laba dan pajak tidak salah hitung.<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top;\">Audit lebih cepat karena transaksi punya referensi dokumen yang jelas.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"tantangan-pengelolaan\"><strong>Tantangan Umum dalam Pengelolaan Stock Ledger<\/strong><\/h2>\n<p>Konsep stock ledger memang sederhana, tapi praktiknya sering rentan di tiga titik: <strong data-start=\"273\" data-end=\"331\">input data, timing pencatatan, dan transaksi non-rutin<\/strong>. Bagian ini merangkum tantangan utama sekaligus dampaknya ke bisnis.<\/p>\n<table style=\"width: 100%; border-collapse: separate; border-spacing: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.6; border: 1px solid #e6e6e6; border-radius: 12px; overflow: hidden; box-shadow: 0 6px 18px rgba(0,0,0,0.06);\">\n<thead>\n<tr>\n<th style=\"width: 26%; background: #990000; color: #ffffff; text-align: left; padding: 12px 14px; font-size: 15px; border-bottom: 1px solid #7a0000;\">Tantangan<\/th>\n<th style=\"background: #990000; color: #ffffff; text-align: left; padding: 12px 14px; font-size: 15px; border-bottom: 1px solid #7a0000;\">Penyebab Paling Umum<\/th>\n<th style=\"width: 30%; background: #990000; color: #ffffff; text-align: left; padding: 12px 14px; font-size: 15px; border-bottom: 1px solid #7a0000;\">Dampak Langsung<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd; border-bottom: 1px solid #eeeeee;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Human error<\/div>\n<div style=\"color: #555; font-size: 13px;\">(input manual)<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Typo, salah SKU, salah satuan (box vs pcs), transaksi tidak tercatat, duplikasi input.<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Saldo \u201clari\u201d sepanjang periode, selisih saat stock opname, HPP ikut bias karena kuantitas dan nilai ikut berubah.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd; border-bottom: 1px solid #eeeeee;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Time lag<\/div>\n<div style=\"color: #555; font-size: 13px;\">(beda waktu catat)<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Barang sudah keluar\/masuk, dokumen baru diinput belakangan (surat jalan, GRN, invoice tertahan).<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top; border-bottom: 1px solid #eeeeee;\">Data stok tidak aktual, keputusan reorder terlambat, risiko stok negatif atau \u201cghost inventory\u201d di sistem.<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 12px 14px; vertical-align: top; background: #fffacd;\">\n<div style=\"font-weight: bold; color: #2b2b2b;\">Retur &amp; penyesuaian<\/div>\n<div style=\"color: #555; font-size: 13px;\">(transaksi non-rutin)<\/div>\n<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top;\">Retur pembelian\/penjualan, barang rusak\/expired, selisih timbang, write-off, penyesuaian stok tanpa SOP jelas.<\/td>\n<td style=\"padding: 12px 14px; vertical-align: top;\">Ledger cepat tidak sinkron, nilai persediaan akhir bisa overstated\/understated, audit trail sulit ditelusuri.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Jika prosedur <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/laporan-stok-barang-definisi-manfaat-contoh-cara-membuat\">penyusunan laporan mutasi stok<\/a> untuk transaksi non-reguler ini tidak baku, stock ledger akan cepat menjadi tidak akurat.<\/p>\n<h2 id=\"implementasi-stock-ledger-di-berbagai-sektor-industri\"><strong>Implementasi Stock Ledger di Berbagai Sektor Industri<\/strong><\/h2>\n<p>Meskipun prinsip dasar akuntansi persediaan bersifat universal, aplikasi praktis dari <em>stock ledger<\/em> sangat bervariasi tergantung pada model bisnis dan karakteristik operasional perusahaan.<\/p>\n<h3><strong>1) Manufaktur: fokus WIP (Work-in-Progress)<\/strong><\/h3>\n<p>Stock ledger di manufaktur perlu melacak perpindahan nilai dari:<br \/>\nRaw Materials \u2192 WIP \u2192 Finished Goods.<\/p>\n<p>Kunci praktiknya:<\/p>\n<ul>\n<li>Integrasi dengan BOM supaya pemakaian bahan otomatis mengurangi raw materials.<\/li>\n<li>Nilai bahan yang dipakai dipindahkan ke akun WIP, lalu ditambah alokasi biaya produksi (tenaga kerja + overhead).<\/li>\n<\/ul>\n<p>Tanpa alur ini, harga pokok produksi jadi kabur dan margin per produk ikut bias.<\/p>\n<h3><strong>2) Ritel &amp; E-Commerce: fokus real-time + omnichannel<\/strong><\/h3>\n<p>Tantangan utama di industri retail adalah volume transaksi tinggi dan stok tersebar di banyak kanal.<\/p>\n<p>Yang wajib ada adalah:<\/p>\n<ul>\n<li>Update real-time dari POS (scan kasir langsung mengurangi stok).<\/li>\n<li>Pencatatan stok terkunci untuk pesanan online (committed\/allocated stock) agar barang tidak terjual ganda.<\/li>\n<\/ul>\n<p>Sistem perlu membedakan stok available, reserved, dan in-transit supaya angka tidak menipu tim sales.<\/p>\n<h3><strong>3) Distribusi &amp; Grosir: fokus batch\/lot + kedaluwarsa<\/strong><\/h3>\n<p>Untuk FMCG, farmasi, makanan, ledger harus mencatat batch\/lot dan expiry date.<\/p>\n<p>Yang jadi penentu:<\/p>\n<ul>\n<li>Dukungan FEFO (First Expired, First Out) supaya stok yang mendekati expiry diprioritaskan keluar.<\/li>\n<li>Peringatan dini untuk stok yang hampir expired agar bisa diproses lewat promo, retur ke principal, atau write-off terkontrol.<\/li>\n<\/ul>\n<p>Pelacakan batch mempercepat proses recall karena produk bermasalah bisa ditarik spesifik.<\/p>\n<h2 id=\"langkah-teknis-implementasi-dan-kpi\"><strong>Langkah Teknis Implementasi dan KPI Utama<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-188592\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-scaled.webp\" alt=\"langkah\" width=\"2560\" height=\"1396\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-scaled.webp 2560w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-300x164.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-1024x559.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-768x419.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-1536x838.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-2048x1117.webp 2048w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-770x420.webp 770w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-150x82.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-696x380.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-1068x583.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/langkah-1920x1047.webp 1920w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>Supaya implementasi stock ledger berhasil, Anda perlu menerapkan langkah-langkah di bawah ini.<\/p>\n<h3><strong>Tahapan Implementasi yang Terstruktur<\/strong><\/h3>\n<ul>\n<li><strong>Fase 1: Pembersihan dan Standarisasi Data Master<\/strong><br \/>\nSebelum sistem baru dijalankan, seluruh data master barang (SKU) harus dibersihkan. Pastikan tidak ada duplikasi kode barang, deskripsi yang ambigu, atau satuan ukuran (UoM) yang tidak konsisten.<\/li>\n<li>Misalnya, pastikan pembelian dalam &#8220;karton&#8221; dikonversi dengan benar menjadi &#8220;satuan pcs&#8221; dalam ledger jika penjualan dilakukan secara eceran.<\/li>\n<li><strong>Fase 2: Pemetaan Alur Kerja (Workflow Mapping)<\/strong><br \/>\nTentukan titik-titik di mana data harus dimasukkan ke dalam sistem. Siapa yang bertanggung jawab mencatat penerimaan barang? Apakah pencatatan dilakukan saat barang tiba di gerbang atau setelah lolos <em>Quality Control<\/em> (QC)?<\/li>\n<li><strong>Fase 3: Stock Opname Awal (Initial Balance Upload)<\/strong><br \/>\nLakukan perhitungan fisik total (<em>grand stock opname<\/em>) untuk menetapkan saldo awal. Angka ini akan menjadi fondasi bagi seluruh transaksi selanjutnya. Kesalahan pada tahap ini akan terus terbawa (<em>carry over<\/em>) hingga periode audit berikutnya.<\/li>\n<li><strong>Fase 4: Integrasi Modul Keuangan<\/strong><br \/>\nPastikan setiap kode transaksi inventaris (misalnya: Penerimaan Barang, Retur, Penyesuaian Stok) telah dipetakan ke akun <em>General Ledger<\/em> (GL) yang tepat (misalnya: Persediaan Bahan Baku, HPP, atau Akun Kerugian Persediaan).<\/li>\n<\/ul>\n<h3><strong>Metrik dan Key Performance Indicators (KPI)<\/strong><\/h3>\n<p>Keberhasilan pengelolaan stock ledger dapat diukur menggunakan serangkaian metrik kuantitatif, yang menandakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/manajemen-gudang-logistik\">tata kelola gudang yang modern<\/a>. Berikut adalah KPI yang wajib dipantau:<\/p>\n<ul>\n<li><strong>Inventory Record Accuracy (IRA):<\/strong> Mengukur persentase kesesuaian antara catatan sistem dengan kondisi fisik.<br \/>\n<em>Rumus: (Jumlah item yang akurat \/ Total item yang dihitung) x 100%<\/em>. Target ideal industri adalah di atas 95%.<\/li>\n<li><strong>Inventory Turnover Ratio (Rasio Perputaran Persediaan):<\/strong> Menunjukkan seberapa cepat persediaan terjual dan diganti dalam satu periode. Rasio yang rendah mengindikasikan <em>overstocking<\/em> atau barang usang yang tertimbun di ledger.<\/li>\n<li><strong>Days Sales of Inventory (DSI):<\/strong> Mengukur rata-rata jumlah hari yang dibutuhkan perusahaan untuk mengubah persediaan menjadi penjualan. DSI yang tinggi dapat membebani arus kas perusahaan.<\/li>\n<li><strong>Rate of Return (Tingkat Retur):<\/strong> Memantau persentase barang yang dikembalikan pelanggan dan masuk kembali ke stock ledger. Lonjakan pada metrik ini bisa mengindikasikan masalah kualitas produk atau kesalahan pengiriman.<\/li>\n<\/ul>\n<h2 id=\"kesimpulan\"><strong>Kesimpulan<\/strong><\/h2>\n<p>Stock ledger membantu bisnis mencatat pergerakan stok sekaligus nilainya, jadi angka persediaan dan HPP tidak asal kira-kira. Catatan yang rapi bikin selisih stok lebih cepat ketahuan, pembelian lebih tepat, dan laporan keuangan lebih aman saat audit atau pengecekan.<\/p>\n<p>Akurasi stock ledger bergantung pada tiga hal: data barang yang konsisten (SKU dan satuan), SOP transaksi yang jelas, dan kedisiplinan input dari gudang sampai akuntansi. Kalau transaksi makin banyak, sistem terintegrasi seperti ERP bisa memangkas input manual dan mempercepat update data, sehingga kontrol stok lebih stabil.<\/p>\n<h2 class=\"faqTitle\">Frequently Asked Question<\/h2>\r\n<style>\r\n\t#main-article p.faqTitle{\r\n\t\ttext-align: center;\r\n\t\tmargin-bottom: 0;\r\n\t\tmargin-top: 50px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n\t\r\n\t.accordion-wrapper{\r\n\t\tbackground-color: white;\r\n\t\tborder: 1px solid #9c171e;\r\n\t\tborder-radius: 6px;\r\n\t\ttransition: 0.4s ease;\r\n\t\tmargin-bottom: 20px;\r\n\t\toverflow: hidden;\r\n\t}\r\n\t\r\n\t.header-faq{\r\n\t\tdisplay: flex;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\talign-items: center;\r\n\t\tpadding: 18px;\r\n\t\ttransition: 0.4s;\r\n\t\tcursor: pointer;\r\n\t\tjustify-content: space-between;\r\n\t}\r\n\t\r\n\t.header-faq p{\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t.question {\r\n\t\tcolor: #3C3C3C;\r\n\t\twidth: 100%;\r\n\t\ttext-align: left;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 20px;\r\n\t \ttransition: 0.4s;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\tpadding: 0;\r\n\/* \t\ttext-transform: uppercase; *\/\r\n\t\tfont-weight: 700;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.header-faq.active {\r\n\t  background-color: #FFF;\r\n\t}\r\n\t\r\n\tbutton.question{\r\n\t\tcolor: unset;\r\n\t\tbackground-color: unset;\r\n\t}\r\n\t\r\n\tbutton.question::after{\r\n\t\tcontent: \"<\";\r\n\t\twidth: 2.2rem;\r\n\t\theight: 2.2rem;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\tborder-radius: 50%;\r\n\t\tcolor: #FFF;\r\n\t\tflex-shrink: 0;\r\n\t\tfloat: right;\r\n\t\ttransition: 0.4s;\r\n\t\topacity: 0.4;\r\n\t\tposition: relative;\r\n\t\ttransform: rotate(-90deg);\r\n\t\tbackground-color: #9c171e;\r\n\t\tfont-family: monospace;\r\n\t}\r\n\r\n\t.answer {\r\n\t  padding: 0 18px;\r\n\t  max-height: 0;\r\n\t  overflow: hidden;\r\n\t  background-color: white;\r\n\t  border-radius: 0 0 6px 6px;\r\n\t  transition: max-height 0.4s ease, opacity 0.4s ease;\r\n\t  opacity: 0;\r\n\t}\r\n\r\n\t.answer p{\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: 400;\r\n\t\tline-height: 28px;\r\n\t\ttext-align: left;\r\n\t\ttext-transform: none;\r\n\t\tcolor: #494949;\r\n\t}\r\n\t\r\n\t.accordion-wrapper.active{\r\n\t\tbox-shadow: 0px 0px 20px 0px #4034AB38;\r\n\t}\r\n\t\r\n\t.header-faq.active .accordion-icon .vLine{\r\n\t\ttransform: translateX(-50%) rotate(0deg);\r\n\t}\r\n\r\n\t.header-faq.active + .answer {\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq.active button.question::after{\r\n\t\ttransform: rotate(90deg);\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq:hover button.question::after{\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.faq-h3-addition {\r\n\t\tmargin: 0 !important;\r\n\t\tpadding-right: 15px;\r\n\t\tmin-width: 0;\r\n\t}\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apa perbedaan utama antara stock ledger dan inventory management?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Inventory management berfokus pada pengelolaan fisik dan aliran barang (logistik), sedangkan stock ledger berfokus pada pencatatan nilai finansial dan akuntansi dari barang tersebut untuk keperluan pelaporan keuangan.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Metode valuasi apa yang paling baik untuk stock ledger?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Tergantung pada jenis bisnis dan regulasi. FIFO umum digunakan untuk barang dengan masa kedaluwarsa, sedangkan Average Cost sering dipilih untuk menyederhanakan perhitungan pada barang yang harganya fluktuatif.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Seberapa sering stock ledger harus diperbarui?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Idealnya, stock ledger diperbarui secara real-time setiap kali ada transaksi (sistem perpetual). Namun, beberapa bisnis kecil mungkin memperbaruinya secara berkala di akhir periode (sistem periodik), meskipun cara ini kurang akurat.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apakah stock ledger bisa dikelola secara manual?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Bisa, namun sangat berisiko human error dan tidak efisien untuk bisnis skala menengah ke atas. Penggunaan software akuntansi atau ERP sangat disarankan untuk akurasi dan efisiensi.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">Apa dampak kesalahan pada stock ledger terhadap laporan keuangan?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Kesalahan pada stock ledger dapat menyebabkan distorsi pada nilai aset di neraca dan kesalahan perhitungan Harga Pokok Penjualan (HPP) di laporan laba rugi, yang akhirnya mempengaruhi perhitungan laba bersih dan pajak.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\n    function toggleAccordion() {\r\n        var acc = document.getElementsByClassName(\"header-faq\");\r\n        for (var i = 0; i < acc.length; i++) {\r\n            acc[i].addEventListener(\"click\", function() {\r\n                for (var j = 0; j < acc.length; j++) {\r\n                    if (acc[j] !== this && acc[j].classList.contains(\"active\")) {\r\n                        acc[j].classList.remove(\"active\");\r\n                        acc[j].closest('.accordion-wrapper').classList.remove('active');\r\n                        var panel = acc[j].nextElementSibling;\r\n                        panel.style.maxHeight = null;\r\n                    }\r\n                }\r\n\r\n                this.classList.toggle(\"active\");\r\n                var accordionWrapper = this.closest('.accordion-wrapper');\r\n                var panel = this.nextElementSibling;\r\n                if (this.classList.contains(\"active\")) {\r\n                    panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n                    accordionWrapper.classList.add('active');\r\n                } else {\r\n                    panel.style.maxHeight = null;\r\n                    accordionWrapper.classList.remove('active');\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', toggleAccordion);\r\n<\/script>\r\n\r\n<!-- <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        document.querySelectorAll('.header-faq .question').forEach(btn => {\r\n            const text = btn.textContent.trim();\r\n            const h3 = document.createElement('h3');\r\n            h3.textContent = text;\r\n            h3.className = \"faq-h3-addition\";\r\n            btn.textContent = '';\r\n            btn.appendChild(h3);\r\n        });\r\n    });\r\n<\/script> -->\n","protected":false},"excerpt":{"rendered":"<p>Dalam ekosistem bisnis yang bergerak cepat, ketepatan data adalah fondasi utama keberlangsungan operasional, terutama bagi perusahaan yang sangat bergantung pada pergerakan barang fisik. Seringkali, manajer operasional dan tim keuangan menemukan ketidaksesuaian antara jumlah fisik barang di gudang dengan angka yang tercatat dalam laporan keuangan. Disparitas ini bukan sekadar masalah administratif, melainkan indikator adanya celah dalam [&hellip;]<\/p>\n","protected":false},"author":160,"featured_media":188589,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88],"tags":[],"class_list":{"0":"post-188258","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Stock Ledger dan Perannya dalam Pencatatan Persediaan<\/title>\n<meta name=\"description\" content=\"Stock ledger adalah catatan persediaan yang memuat jumlah dan nilai stok. Pelajari fungsi, komponen, metode valuasi, dan lainnya.\" \/>\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\/stock-ledger-adalah\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stock Ledger dan Perannya dalam Pencatatan Persediaan\" \/>\n<meta property=\"og:description\" content=\"Stock ledger adalah catatan persediaan yang memuat jumlah dan nilai stok. Pelajari fungsi, komponen, metode valuasi, dan lainnya.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/\" \/>\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-09T04:47:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-09T04:48:36+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.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=\"Jessica Wijaya\" \/>\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=\"Jessica Wijaya\" \/>\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\/stock-ledger-adalah\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/\"},\"author\":{\"name\":\"Jessica Wijaya\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/4d83ca1a7056c0a44f813f8721086980\"},\"headline\":\"Stock Ledger dan Perannya dalam Pencatatan Persediaan\",\"datePublished\":\"2026-02-09T04:47:54+00:00\",\"dateModified\":\"2026-02-09T04:48:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/\"},\"wordCount\":2019,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp\",\"articleSection\":[\"Inventory\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/\",\"name\":\"Stock Ledger dan Perannya dalam Pencatatan Persediaan\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp\",\"datePublished\":\"2026-02-09T04:47:54+00:00\",\"dateModified\":\"2026-02-09T04:48:36+00:00\",\"description\":\"Stock ledger adalah catatan persediaan yang memuat jumlah dan nilai stok. Pelajari fungsi, komponen, metode valuasi, dan lainnya.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp\",\"width\":1200,\"height\":675,\"caption\":\"stock-ledger\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stock Ledger dan Perannya dalam Pencatatan Persediaan\"}]},{\"@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\/4d83ca1a7056c0a44f813f8721086980\",\"name\":\"Jessica Wijaya\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jessica-Wijaya-1-1-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jessica-Wijaya-1-1-96x96.webp\",\"caption\":\"Jessica Wijaya\"},\"description\":\"Selama lebih dari 5 tahun sebagai Senior Content Writer, Jessica telah menulis topik yang mengulas tentang bidang inventory dan warehouse management. Keahliannya mencakup penulisan artikel manajemen stok dan persediaan, perencanaan kebutuhan, multi-warehouse management, dan integrasi sistem digital untuk pengelolaan barang.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"Perempuan\",\"knowsAbout\":[\"Inventory\",\"inventory management\",\"manajemen inventaris\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/jessicawijaya\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Stock Ledger dan Perannya dalam Pencatatan Persediaan","description":"Stock ledger adalah catatan persediaan yang memuat jumlah dan nilai stok. Pelajari fungsi, komponen, metode valuasi, dan lainnya.","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\/stock-ledger-adalah\/","og_locale":"id_ID","og_type":"article","og_title":"Stock Ledger dan Perannya dalam Pencatatan Persediaan","og_description":"Stock ledger adalah catatan persediaan yang memuat jumlah dan nilai stok. Pelajari fungsi, komponen, metode valuasi, dan lainnya.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-02-09T04:47:54+00:00","article_modified_time":"2026-02-09T04:48:36+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp","type":"image\/webp"}],"author":"Jessica Wijaya","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Jessica Wijaya","Estimasi waktu membaca":"12 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/"},"author":{"name":"Jessica Wijaya","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/4d83ca1a7056c0a44f813f8721086980"},"headline":"Stock Ledger dan Perannya dalam Pencatatan Persediaan","datePublished":"2026-02-09T04:47:54+00:00","dateModified":"2026-02-09T04:48:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/"},"wordCount":2019,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp","articleSection":["Inventory"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/","name":"Stock Ledger dan Perannya dalam Pencatatan Persediaan","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp","datePublished":"2026-02-09T04:47:54+00:00","dateModified":"2026-02-09T04:48:36+00:00","description":"Stock ledger adalah catatan persediaan yang memuat jumlah dan nilai stok. Pelajari fungsi, komponen, metode valuasi, dan lainnya.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/02\/stock-ledger.webp","width":1200,"height":675,"caption":"stock-ledger"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-ledger-adalah\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Stock Ledger dan Perannya dalam Pencatatan Persediaan"}]},{"@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\/4d83ca1a7056c0a44f813f8721086980","name":"Jessica Wijaya","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jessica-Wijaya-1-1-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Jessica-Wijaya-1-1-96x96.webp","caption":"Jessica Wijaya"},"description":"Selama lebih dari 5 tahun sebagai Senior Content Writer, Jessica telah menulis topik yang mengulas tentang bidang inventory dan warehouse management. Keahliannya mencakup penulisan artikel manajemen stok dan persediaan, perencanaan kebutuhan, multi-warehouse management, dan integrasi sistem digital untuk pengelolaan barang.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Perempuan","knowsAbout":["Inventory","inventory management","manajemen inventaris"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/jessicawijaya\/"}]}},"focus_keyword":"stock ledger","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188258","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\/160"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=188258"}],"version-history":[{"count":1,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188258\/revisions"}],"predecessor-version":[{"id":188593,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/188258\/revisions\/188593"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/188589"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=188258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=188258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=188258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}