{"id":175970,"date":"2025-11-10T15:14:09","date_gmt":"2025-11-10T08:14:09","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=175970"},"modified":"2026-03-26T13:19:20","modified_gmt":"2026-03-26T06:19:20","slug":"stock-movement","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/","title":{"rendered":"Stock Movement: Analisis, Metrik, &#038; Strategi Optimalkan Persediaan"},"content":{"rendered":"\r\n<p>Stock movement sering kali baru mendapat perhatian ketika muncul ketidaksesuaian stock barang. Masalah seperti selisih stok, kehilangan barang, hingga laporan gudang yang tidak akurat. Situasi ini cukup umum terjadi terutama ketika proses pencatatan arus barang masuk dan keluar belum dilakukan secara konsisten dan terstruktur.<\/p>\r\n<p>Para pebisnis tidak menyadari bahwa di tengah operasional yang tampak berjalan lancar sebenarnya mereka memiliki visibilitas yang terbatas terhadap pergerakan stok. Jika stock movement tanpa menggunakan sistem yang jelas dan terdokumentasi maka potensi kesalahan akan semakin tinggi dan keputusan yang diambil pun berisiko kurang akurat.<\/p>\r\n<p>Oleh karena itu, pengelolaan sistem stock movement yang efektif menjadi aspek penting untuk memastikan kontrol operasional tetap optimal dan berkelanjutan.<\/p>\r\n\r\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%\">\r\n<tbody>\r\n<tr>\r\n<td style=\"padding: 15px; border: none;\">\r\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\r\n<ul>\r\n<li><a href=\"#adalah\">Stock movement<\/a> memastikan visibilitas penuh terhadap setiap pergerakan barang dalam rantai pasok bisnis Anda.<\/li>\r\n<li>Analisis stock movement yang akurat <a href=\"#manfaat\">membantu<\/a> mengurangi biaya, mencegah overstock, dan meningkatkan efisiensi operasional.<\/li>\r\n<li>Penggunaan barcode atau RFID adalah salah satu strategi efektif dalam mengelola stock movement.<\/li>\r\n<\/ul>\r\n<\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<p><span data-sheets-root=\"1\">\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span> <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\r\n\r\n<h2 class=\"wp-block-heading\"><strong><span id=\"adalah\">Apa Itu Stock Movement?<\/span><\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Stock movement adalah proses pencatatan dan pemantauan setiap pergerakan barang. Pergerakan ini mencakup aktivitas seperti penerimaan barang dari supplier, penjualan ke pelanggan, hingga transfer antar gudang atau divisi.<\/p>\r\n<p>Dalam praktiknya, stock movement menjadi dasar penting untuk mengetahui kondisi stok secara real-time. Dengan memahami alur pergerakan barang secara menyeluruh proses bisnis dapat memastikan jumlah stok selalu akurat serta menjaga kelancaran operasional.<\/p>\r\n<p>Lebih dari sekadar pencatatan, stock movement juga berperan dalam membantu perusahaan mengambil keputusan yang lebih tepat seperti mengurangi risiko kelebihan atau kekurangan stok.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\"><strong>7 Jenis Stock Movement<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Untuk memahami stock movement secara lebih menyeluruh, penting untuk mengetahui bahwa pergerakan barang tidak hanya satu jenis. Setiap aktivitas memiliki karakteristik dan tujuan yang berbeda dalam operasional bisnis. Berikut ini adalah 7 jenis stock movement yang paling umum dan perlu Anda pahami.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">1. Penerimaan barang (Goods receipt)<\/h3>\r\n\r\n\r\n\r\n<p>Penerimaan barang adalah proses pencatatan inventaris yang masuk ke gudang, umumnya berasal dari pembelian dari pemasok atau hasil produksi internal. Transaksi ini secara langsung akan menambah jumlah stok yang tersedia (<em>on-hand stock<\/em>) dan menjadi titik awal dari siklus hidup produk di dalam perusahaan Anda.<\/p>\r\n<p>Dokumentasi yang akurat pada tahap ini, seperti pencocokan dengan <em>purchase order<\/em> (PO), sangat penting untuk memastikan kuantitas dan kualitas barang yang diterima sesuai, serta menjadi dasar untuk pembayaran kepada vendor dan perhitungan nilai aset perusahaan.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2. Pengeluaran barang (Goods issue)<\/h3>\r\n\r\n\r\n\r\n<p>Pengeluaran barang merupakan pencatatan inventaris yang keluar dari gudang untuk berbagai tujuan, seperti pengiriman pesanan ke pelanggan, penggunaan material untuk proses produksi, atau transfer ke departemen lain.<\/p>\r\n<p>Transaksi ini akan mengurangi jumlah stok yang tersedia dan sering kali menjadi pemicu untuk proses penagihan kepada pelanggan atau perhitungan biaya produksi (<em>Cost of Goods Sold<\/em> &#8211; COGS). Manajemen <em>goods issue<\/em> yang efisien memastikan pesanan pelanggan terpenuhi tepat waktu dan data stok tetap akurat untuk perencanaan selanjutnya.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3. Transfer antar gudang (Warehouse transfer)<\/h3>\r\n\r\n\r\n\r\n<p>Transfer antar gudang, atau <em>transfer posting<\/em>, adalah pergerakan internal inventaris dari satu lokasi penyimpanan ke lokasi lainnya, misalnya dari gudang pusat ke toko ritel atau antar cabang. Meskipun tidak mengubah total kuantitas stok perusahaan secara keseluruhan, pencatatan transaksi ini sangat vital untuk menjaga akurasi data stok di setiap lokasi.<\/p>\r\n<p>Visibilitas yang jelas terhadap pergerakan ini membantu mencegah <em>stockout<\/em> di satu lokasi sementara terjadi <em>overstock<\/em> di lokasi lain, sehingga mengoptimalkan distribusi dan ketersediaan produk.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">4. Pengembalian barang (Return)<\/h3>\r\n\r\n\r\n\r\n<p>Pengembalian barang terjadi ketika pelanggan mengembalikan produk yang telah dibeli (<em>sales return<\/em>) atau ketika perusahaan mengembalikan barang ke pemasok (<em>purchase return<\/em>). Proses ini melibatkan inspeksi kualitas untuk menentukan apakah barang dapat dijual kembali, diperbaiki, atau harus dihapusbukukan.<\/p>\r\n<p>Manajemen pengembalian yang baik tidak hanya penting untuk menjaga kepuasan pelanggan dan hubungan dengan pemasok, tetapi juga krusial untuk memastikan nilai dan kuantitas inventaris tercatat dengan benar di sistem setelah barang kembali masuk ke gudang.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">5. Penyesuaian stok (Stock adjustment)<\/h3>\r\n\r\n\r\n\r\n<p>Penyesuaian stok adalah koreksi yang dilakukan terhadap catatan inventaris agar sesuai dengan jumlah fisik yang sebenarnya ada di gudang. Perbedaan ini bisa disebabkan oleh berbagai faktor seperti kerusakan, kehilangan, pencurian, atau kesalahan pencatatan saat stock opname atau cycle counting.<\/p>\r\n<p>Melakukan penyesuaian stok secara berkala sangat penting untuk menjaga integritas data inventaris, yang menjadi dasar bagi semua keputusan terkait pembelian, produksi, penjualan, dan analisis metrik seperti <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/inventory-to-sales-ratio\/\">inventory to sales ratio<\/a>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">6. Barang dalam proses produksi (Work-in-progress)<\/h3>\r\n\r\n\r\n\r\n<p>Jenis pergerakan ini spesifik untuk perusahaan manufaktur, di mana bahan baku dikeluarkan dari gudang untuk diolah menjadi barang jadi. Selama proses produksi, status material tersebut berubah dari bahan mentah menjadi barang dalam proses (<em>Work-in-Progress<\/em> &#8211; WIP), dan akhirnya menjadi produk jadi yang siap dijual.<\/p>\r\n<p>Melacak pergerakan ini secara akurat memungkinkan perusahaan menghitung biaya produksi secara presisi, memantau efisiensi lini produksi, dan memiliki visibilitas terhadap nilai aset yang terikat dalam proses manufaktur.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">7. Stok konsinyasi (Consignment stock)<\/h3>\r\n\r\n\r\n\r\n<p>Stok konsinyasi merujuk pada barang milik perusahaan (pemasok) yang ditempatkan di lokasi pihak ketiga (misalnya, ritel atau distributor), namun kepemilikannya baru berpindah setelah barang tersebut terjual kepada konsumen akhir.<\/p>\r\n<p>Pergerakan stok ini memerlukan pelacakan khusus karena meskipun barang tidak berada di gudang sendiri, ia tetap menjadi bagian dari aset perusahaan hingga terjual. Sistem yang mampu memonitor pergerakan dan penjualan stok konsinyasi secara <em>real-time<\/em> sangat penting untuk rekonsiliasi keuangan dan perencanaan pengisian ulang stok.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\"><strong><span id=\"manfaat\">Mengapa Analisis Stock Movement Penting?<\/span><\/strong><\/h2>\r\n\r\n\r\n\r\n<p>Analisis stock movement membantu bisnis memahami bagaimana barang bergerak dalam operasional sehari-hari. Dari sini, perusahaan bisa melihat pola keluar-masuk stok, produk mana yang cepat terjual, hingga barang yang cenderung lama tersimpan di gudang.<\/p>\r\n<p>Dengan pemahaman ini, bisnis dapat menghindari dua masalah umum sekaligus yaitu kelebihan stok yang menumpuk dan kekurangan stok yang menghambat penjualan. Keduanya sama-sama berdampak langsung pada arus kas dan efisiensi operasional.<\/p>\r\n<p>Selain itu, analisis stock movement juga memudahkan dalam mendeteksi potensi masalah lebih awal seperti selisih stok atau pergerakan barang yang tidak wajar. Dengan begitu, perusahaan bisa segera mengambil tindakan sebelum masalah berkembang menjadi kerugian yang lebih besar.<\/p>\r\n<p>Pada akhirnya, pengelolaan dan analisis yang baik akan membantu bisnis membuat keputusan yang lebih tepat mulai dari perencanaan pembelian, pengaturan distribusi, hingga strategi penjualan sehingga operasional menjadi lebih terkendali dan pertumbuhan bisnis bisa berjalan lebih stabil.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\"><strong>4 Metrik Mengukur Efektivitas Stock Movement<\/strong><\/h2>\r\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-191366\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM.webp\" alt=\"stock movement\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-300x200.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-1024x683.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-768x512.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-630x420.webp 630w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-150x100.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-696x464.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/ChatGPT-Image-Mar-26-2026-10_59_18-AM-1068x712.webp 1068w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\r\n\r\n\r\n\r\n<p>Untuk memastikan stock movement berjalan dengan efektif, tidak cukup hanya mengandalkan pencatatan saja. Bisnis juga perlu mengukurnya menggunakan indikator yang tepat agar dapat mengetahui apakah pengelolaan stok sudah optimal atau masih perlu perbaikan.<\/p>\r\n<p>Berikut ini adalah 4 metrik yang umum digunakan untuk mengukur efektivitas stock movement.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">1. Rasio perputaran persediaan (Inventory turnover ratio)<\/h3>\r\n\r\n\r\n\r\n<p>Rasio ini mengukur seberapa sering perusahaan menjual dan mengganti persediaannya selama periode tertentu, biasanya satu tahun. Angka rasio yang tinggi menunjukkan bahwa produk terjual dengan cepat dan manajemen inventaris berjalan efisien, sementara rasio yang rendah dapat mengindikasikan penjualan yang lesu atau kelebihan stok (<em>overstock<\/em>).<\/p>\r\n<p>Menurut <a href=\"https:\/\/www.investopedia.com\/terms\/i\/inventoryturnover.asp\" target=\"_blank\" rel=\"nofollow noopener\">Investopedia<\/a>, rumus dasarnya adalah Harga Pokok Penjualan (HPP) dibagi dengan Rata-rata Nilai Persediaan, di mana hasilnya menunjukkan berapa kali inventaris &#8220;berputar&#8221; dalam setahun.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">2. Days sales of inventory (DSI)<\/h3>\r\n\r\n\r\n\r\n<p>DSI atau Hari Penjualan Persediaan adalah metrik yang menghitung rata-rata jumlah hari yang dibutuhkan perusahaan untuk mengubah inventarisnya menjadi penjualan. Metrik ini memberikan gambaran tentang likuiditas stok, semakin rendah nilai DSI maka semakin cepat perusahaan dapat mengubah stok menjadi kas.<\/p>\r\n<p>DSI yang tinggi bisa menjadi sinyal adanya stok yang menumpuk atau tidak laku, yang berpotensi meningkatkan biaya penyimpanan dan risiko usang.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">3. Akurasi data stok (Stock data accuracy)<\/h3>\r\n\r\n\r\n\r\n<p>Metrik ini mengukur persentase kesesuaian antara data kuantitas stok yang tercatat di sistem dengan jumlah fisik yang sebenarnya ada di gudang. Akurasi data yang rendah dapat menyebabkan berbagai masalah operasional, mulai dari kegagalan memenuhi pesanan pelanggan (<em>stockout<\/em>) hingga pemborosan akibat pembelian yang tidak perlu.<\/p>\r\n<p>Metrik ini biasanya diukur melalui <em>cycle counting<\/em> atau <em>stock opname<\/em> berkala dan menjadi indikator utama kesehatan fundamental dari sistem manajemen inventaris Anda.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">4. Tingkat stok mati (Dead stock rate)<\/h3>\r\n\r\n\r\n\r\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/dampak-dead-stock-bagi-bisnis-dan-cara-mengatasinya\/\">Dead stock<\/a> adalah produk yang tidak mengalami pergerakan (penjualan atau penggunaan) dalam periode waktu yang lama, misalnya lebih dari enam bulan atau satu tahun. Metrik ini menghitung persentase nilai stok mati terhadap total nilai inventaris Anda.<\/p>\r\n<p>Tingkat stok mati yang tinggi merupakan masalah serius karena tidak hanya mengikat modal kerja secara tidak produktif, tetapi juga meningkatkan biaya penyimpanan dan berisiko menjadi kerugian total jika produk tersebut usang atau kedaluwarsa.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Strategi Efektif Mengelola Stock Movement dengan Bantuan Teknologi\u00a0<\/h2>\r\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-191376\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1.webp\" alt=\"stock movement\" width=\"1892\" height=\"822\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1.webp 1892w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-300x130.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-1024x445.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-768x334.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-1536x667.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-967x420.webp 967w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-150x65.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-696x302.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement-1-1068x464.webp 1068w\" sizes=\"auto, (max-width: 1892px) 100vw, 1892px\" \/><\/p>\r\n\r\n\r\n\r\n<p>Berikut penerapan strategi efektif dalam mengelola stock movement menggunakan sistem teknologi:<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">A. Terapkan metode FIFO, LIFO, atau FEFO secara konsisten<\/h3>\r\n\r\n\r\n\r\n<p>Metode valuasi dan pergerakan stok seperti <em>First-In, First-Out<\/em> (<a href=\"https:\/\/www.hashmicro.com\/id\/blog\/fifo-first-in-first-out\/\">FIFO<\/a>), <em>Last-In, First-Out<\/em> (LIFO), atau <em>First-Expired, First-Out<\/em> (FEFO) sangat penting untuk memastikan rotasi produk yang sehat. Menerapkan metode ini secara manual sangat sulit dan tidak akurat.<\/p>\r\n<p>Sebuah software stok barang modern dapat secara otomatis mengarahkan staf gudang untuk mengambil barang dari lokasi atau <em>batch<\/em> yang tepat sesuai aturan yang telah ditetapkan, sehingga mengurangi risiko produk kedaluwarsa dan memastikan valuasi persediaan yang akurat.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">B. Lakukan audit stok secara berkala (cycle counting)<\/h3>\r\n\r\n\r\n\r\n<p>Daripada melakukan <em>stock opname<\/em> besar yang mengganggu operasional setahun sekali, metode <em>cycle counting<\/em> memungkinkan audit sebagian kecil inventaris secara rutin dan terjadwal. Pendekatan ini tidak terlalu mengganggu dan membantu menjaga akurasi data stok secara berkelanjutan sepanjang tahun.<\/p>\r\n<p>Sistem manajemen gudang (WMS) dapat membantu menjadwalkan item mana yang perlu dihitung berdasarkan nilai, volume transaksi, atau faktor lainnya, serta mempermudah proses rekonsiliasi antara hasil hitungan fisik dan data sistem.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">C. Manfaatkan otomatisasi dengan barcode dan RFID<\/h3>\r\n\r\n\r\n\r\n<p>Teknologi identifikasi otomatis seperti pemindaian <em>barcode<\/em> atau <em>Radio-Frequency Identification<\/em> (RFID) secara drastis mengurangi kesalahan entri data manual dan mempercepat setiap proses pergerakan stok. Menurut standar global dari <a href=\"https:\/\/www.gs1.org\/standards\/epc-rfid\" target=\"_blank\" rel=\"noopener\">GS1<\/a>, penggunaan RFID memungkinkan pelacakan item secara massal tanpa kontak visual.<\/p>\r\n<p>Setiap aktivitas, mulai dari penerimaan, pemindahan, hingga pengiriman, dapat dicatat secara instan hanya dengan satu kali pemindaian, meningkatkan efisiensi dan menyediakan data pergerakan yang sangat akurat serta <em>real-time<\/em>.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">D. Integrasikan data dengan sistem ERP terpusat<\/h3>\r\n\r\n\r\n\r\n<p>Strategi paling transformatif adalah mengintegrasikan manajemen <em>stock movement<\/em> Anda ke dalam sistem <em>Enterprise Resource Planning<\/em> (ERP) yang terpusat. Dengan integrasi ini, data dari gudang secara otomatis terhubung dengan modul lain seperti penjualan, pembelian, akuntansi, dan produksi.<\/p>\r\n<p>Ketika tim sales membuat pesanan, sistem dapat langsung memeriksa ketersediaan stok tersebut, jika stok menipis sistem dapat secara otomatis membuat permintaan pembelian dan setiap pergerakan stok akan langsung tercatat dalam laporan keuangan tanpa perlu entri ganda. Penggunaan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-stok-barang-terbaik\/\">software stok barang<\/a> yang terintegrasi menciptakan satu sumber kebenaran data untuk seluruh perusahaan.<\/p>\r\n\r\n\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Kesimpulan<\/h2>\r\n\r\n\r\n\r\n<p>Stock movement bukan sekadar proses keluar-masuk barang, tetapi merupakan elemen penting yang menentukan kelancaran operasional bisnis secara keseluruhan.<\/p>\r\n<p>Dimulai dari pemahaman dasar tentang alur pergerakan stok, dilanjutkan dengan pengukuran melalui berbagai metrik yang relevan, hingga penerapan strategi yang tepat, semuanya saling terhubung untuk menciptakan pengelolaan persediaan yang lebih efisien.<\/p>\r\n<p>Dengan pendekatan yang terstruktur dan didukung teknologi, bisnis dapat meminimalkan risiko seperti overstock maupun dead stock, sekaligus memastikan ketersediaan barang tetap optimal sesuai kebutuhan pasar.<\/p>\r\n<a href=\"https:\/\/www.hashmicro.com\/id\/inventaris?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/inventory-definitive.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/inventory-definitive.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/01\/inventory-definitive-m.webp\" alt=\"Inventory_Definisi\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\r\n\r\n<h2><strong>Pertanyaan Seputar Stock Movement<\/strong><\/h2>\r\n<ul class=\"bottom_faq\">\r\n<li><details>\r\n<summary><strong>Apa perbedaan antara stock movement dan stock opname?<\/strong><\/summary>\r\nStock movement adalah pencatatan harian setiap pergerakan barang (masuk, keluar, transfer). Sementara itu, stock opname adalah penghitungan fisik seluruh stok pada satu waktu untuk memverifikasi akurasi data dari stock movement.<\/details><\/li>\r\n<li><details>\r\n<summary><strong>Seberapa sering saya harus menganalisis laporan stock movement?<\/strong><\/summary>\r\nFrekuensinya tergantung volume transaksi. Untuk produk fast-moving, analisis mingguan sangat disarankan. Namun, tinjauan laporan bulanan adalah praktik standar yang baik untuk mengidentifikasi tren dan potensi masalah.<\/details><\/li>\r\n<li><details>\r\n<summary><strong>Apa tantangan paling umum dalam mengelola stock movement?<\/strong><\/summary>\r\nTantangan terbesar adalah akurasi data akibat human error dalam pencatatan manual. Tantangan lain termasuk kurangnya visibilitas antar lokasi, kesulitan melacak barang tanpa sistem barcode, dan keterlambatan pembaruan data.<\/details><\/li>\r\n<li><details>\r\n<summary><strong>Bagaimana stock movement memengaruhi laporan keuangan perusahaan?<\/strong><\/summary>\r\nStock movement sangat memengaruhi laporan keuangan. Penjualan (barang keluar) dicatat sebagai HPP di laporan laba rugi, sementara nilai total inventaris menjadi aset lancar di neraca. Manajemen yang efisien dapat meningkatkan profitabilitas dan memperbaiki rasio keuangan.<\/details><\/li>\r\n<li><details>\r\n<summary><strong>Apakah bisnis kecil juga perlu menganalisis stock movement secara detail?<\/strong><\/summary>\r\nTentu saja. Analisis ini membantu bisnis kecil mencegah modal terikat pada stok mati, memastikan produk favorit pelanggan selalu tersedia, dan memberikan dasar untuk negosiasi yang lebih baik dengan pemasok. Prinsip efisiensinya tetap sama.<\/details><\/li>\r\n<\/ul>\r\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Stock movement sering kali baru mendapat perhatian ketika muncul ketidaksesuaian stock barang. Masalah seperti selisih stok, kehilangan barang, hingga laporan gudang yang tidak akurat. Situasi ini cukup umum terjadi terutama ketika proses pencatatan arus barang masuk dan keluar belum dilakukan secara konsisten dan terstruktur. Para pebisnis tidak menyadari bahwa di tengah operasional yang tampak berjalan [&hellip;]<\/p>\n","protected":false},"author":160,"featured_media":175999,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88],"tags":[],"class_list":{"0":"post-175970","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 Movement: Analisis, Metrik, &amp; Strategi Optimalkan Persediaan &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Pelajari apa itu stock movement, jenis, metrik KPI, dan strategi optimasinya dengan teknologi. Tingkatkan efisiensi inventaris dan profitabilitas bisnis Anda di 2025.\" \/>\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-movement\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Stock Movement: Analisis, Metrik, &amp; Strategi Optimalkan Persediaan\" \/>\n<meta property=\"og:description\" content=\"Pelajari apa itu stock movement, jenis, metrik KPI, dan strategi optimasinya dengan teknologi. Tingkatkan efisiensi inventaris dan profitabilitas bisnis Anda di 2025.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-10T08:14:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-26T06:19:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\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-movement\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/\"},\"author\":{\"name\":\"Jessica Wijaya\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/4d83ca1a7056c0a44f813f8721086980\"},\"headline\":\"Stock Movement: Analisis, Metrik, &#038; Strategi Optimalkan Persediaan\",\"datePublished\":\"2025-11-10T08:14:09+00:00\",\"dateModified\":\"2026-03-26T06:19:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/\"},\"wordCount\":1933,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp\",\"articleSection\":[\"Inventory\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/\",\"name\":\"Stock Movement: Analisis, Metrik, & Strategi Optimalkan Persediaan &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp\",\"datePublished\":\"2025-11-10T08:14:09+00:00\",\"dateModified\":\"2026-03-26T06:19:20+00:00\",\"description\":\"Pelajari apa itu stock movement, jenis, metrik KPI, dan strategi optimasinya dengan teknologi. Tingkatkan efisiensi inventaris dan profitabilitas bisnis Anda di 2025.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp\",\"width\":1920,\"height\":1080},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Stock Movement: Analisis, Metrik, &#038; Strategi Optimalkan 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 Movement: Analisis, Metrik, & Strategi Optimalkan Persediaan &#187; HashMicro Indonesia","description":"Pelajari apa itu stock movement, jenis, metrik KPI, dan strategi optimasinya dengan teknologi. Tingkatkan efisiensi inventaris dan profitabilitas bisnis Anda di 2025.","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-movement\/","og_locale":"id_ID","og_type":"article","og_title":"Stock Movement: Analisis, Metrik, & Strategi Optimalkan Persediaan","og_description":"Pelajari apa itu stock movement, jenis, metrik KPI, dan strategi optimasinya dengan teknologi. Tingkatkan efisiensi inventaris dan profitabilitas bisnis Anda di 2025.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-11-10T08:14:09+00:00","article_modified_time":"2026-03-26T06:19:20+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.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-movement\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/"},"author":{"name":"Jessica Wijaya","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/4d83ca1a7056c0a44f813f8721086980"},"headline":"Stock Movement: Analisis, Metrik, &#038; Strategi Optimalkan Persediaan","datePublished":"2025-11-10T08:14:09+00:00","dateModified":"2026-03-26T06:19:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/"},"wordCount":1933,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp","articleSection":["Inventory"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/","name":"Stock Movement: Analisis, Metrik, & Strategi Optimalkan Persediaan &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp","datePublished":"2025-11-10T08:14:09+00:00","dateModified":"2026-03-26T06:19:20+00:00","description":"Pelajari apa itu stock movement, jenis, metrik KPI, dan strategi optimasinya dengan teknologi. Tingkatkan efisiensi inventaris dan profitabilitas bisnis Anda di 2025.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/stock-movement.webp","width":1920,"height":1080},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/stock-movement\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Stock Movement: Analisis, Metrik, &#038; Strategi Optimalkan 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 movement","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/175970","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=175970"}],"version-history":[{"count":7,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/175970\/revisions"}],"predecessor-version":[{"id":191378,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/175970\/revisions\/191378"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/175999"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=175970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=175970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=175970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}