{"id":146843,"date":"2024-09-12T16:40:47","date_gmt":"2024-09-12T09:40:47","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=146843"},"modified":"2026-04-16T11:55:29","modified_gmt":"2026-04-16T04:55:29","slug":"rop-roq-min-max","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/","title":{"rendered":"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya"},"content":{"rendered":"<p data-start=\"125\" data-end=\"379\">Mengelola persediaan bukan lagi sekadar memastikan barang selalu tersedia di gudang. Perusahaan juga harus menjaga keseimbangan antara jumlah stok, kecepatan permintaan, dan waktu pengadaan agar operasional tetap lancar tanpa membebani biaya penyimpanan. Karena itu, Reorder Point (ROP) dan Reorder Quantity (ROQ) menjadi dua konsep penting dalam pengendalian stok.<\/p>\n<p data-start=\"125\" data-end=\"379\">Melalui artikel ini, kami akan membahas pengertian, manfaat, rumus, serta cara menghitung ROP dan ROQ agar perusahaan Anda dapat merencanakan persediaan secara lebih efisien.<\/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=\"#manfaat-rop-dan-roq-bagi-perusahaan\">Beberapa manfaat<\/a> ROP dan ROQ bagi Perusahaan adalah mengurangi risiko kehabisan stok, optimasi biaya penyimpanan, meningkatkan efisiensi operasional.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#elemen-penting-dalam-mengelola-rop-dan-roq\">Elemen penting<\/a> dalam Mengelola ROP dan ROQ diantaranya lead time, variability in demand, safety stock.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>ROP menentukan kapan perusahaan harus memesan ulang stok, sedangkan ROQ menentukan jumlah optimal yang perlu dipesan agar persediaan tetap efisien dan terjaga.<\/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<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<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script>\n<h2><strong>Apa itu Reorder Point dan Reorder Quantity?<\/strong><\/h2>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pengertian-reorder-point\/\">Pengertian ROP (Reorder Point)<\/a> adalah tingkat persediaan minimum yang menandakan waktu pemesanan ulang barang untuk menghindari kehabisan stok. Dengan menghitung ROP berdasarkan rata-rata permintaan dan waktu pengiriman, perusahaan dapat memastikan ketersediaan stok yang optimal.<\/p>\n<p>Sementara itu, ROQ (Reorder Quantity) adalah jumlah optimal barang yang harus dipesan saat stok mencapai ROP untuk menjaga ketersediaan. Perusahaan menghitung ROQ berdasarkan permintaan, biaya pemesanan, dan biaya penyimpanan.<\/p>\n<p>Penggunaan metode ini tidak hanya membantu menghindari kekurangan stok yang dapat menghambat operasional, tetapi juga mencegah penumpukan persediaan yang berlebihan. Hasilnya, perusahaan dapat menjaga efisiensi biaya, meningkatkan produktivitas, serta memastikan ketersediaan produk secara konsisten.<\/p>\n<h2><strong><span id=\"a\">Manfaat ROP dan ROQ bagi Perusahaan<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-164326 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max.webp\" alt=\"rumus rop\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Penerapan ROP dan ROQ yang tepat dapat memberikan dampak signifikan pada kinerja perusahaan, terutama dalam hal pengelolaan persediaan dan operasional. Berikut ini beberapa manfaat yang bisa diperoleh perusahaan:<\/p>\n<h3><strong>1. Mengurangi risiko kehabisan stok<\/strong><\/h3>\n<p>Dengan menerapkan ROP, perusahaan dapat memastikan bahwa pemesanan ulang dilakukan secara tepat waktu, sebelum stok mencapai titik kritis.<\/p>\n<p>Ini sangat penting untuk menjaga kelancaran operasional, terutama bagi perusahaan yang bergantung pada ketersediaan barang secara berkelanjutan.<\/p>\n<p>Dengan mencegah kehabisan stok, perusahaan dapat terus memenuhi permintaan pelanggan tanpa gangguan, menghindari potensi kerugian akibat keterlambatan, serta mempertahankan standar layanan yang tinggi.<\/p>\n<p>Hal ini tidak hanya mendukung efisiensi operasional, tetapi juga memperkuat kepercayaan pelanggan dan reputasi perusahaan.<\/p>\n<h3><strong>2. Optimasi biaya penyimpanan<\/strong><\/h3>\n<p>Penerapan ROQ membantu perusahaan dalam menentukan jumlah pemesanan yang optimal setiap kali stok mencapai titik pemesanan ulang.<\/p>\n<p>Dengan menghitung ROQ secara akurat, perusahaan dapat meminimalkan risiko penumpukan persediaan yang berlebihan, yang dapat menyebabkan peningkatan biaya penyimpanan dan risiko kerusakan.<\/p>\n<p>Pengelolaan persediaan yang lebih efisien melalui ROQ tidak hanya mengurangi beban biaya penyimpanan tetapi juga membantu dalam menjaga aliran kas yang lebih baik. Hal ini memastikan bahwa perusahaan dapat mengalokasikan sumber daya dengan lebih efektif.<\/p>\n<h3><strong>3. Meningkatkan efisiensi operasional<\/strong><\/h3>\n<p>Penerapan metode ROP dan ROQ secara efektif berkontribusi pada peningkatan efisiensi operasional perusahaan. Dengan menetapkan titik pemesanan ulang dan jumlah pemesanan yang optimal, perusahaan dapat mengelola persediaan dengan lebih terstruktur dan sistematis.<\/p>\n<p>Ini mengurangi kebutuhan akan operasional dan memungkinkan manajemen untuk fokus pada kegiatan strategis lainnya. Pengelolaan persediaan yang baik tidak hanya memperlancar alur produksi dan distribusi, tetapi juga meningkatkan kemampuan perusahaan untuk merespons permintaan pasar dengan cepat.<\/p>\n<p>Akibatnya, perusahaan dapat meminimalkan gangguan operasional, mempercepat waktu respon, dan meningkatkan produktivitas secara keseluruhan.<\/p>\n<style>\r\n.cta-in-article-image .desktop-banner{\r\n    display: none;\r\n    text-align: center;\r\n}\r\n.cta-in-article-image .desktop-mobile{\r\n    display: block;\r\n    text-align: center;\r\n    width: 100%;\r\n}\r\n\t.cta-in-article a {\r\n\t\tfont-size: 0px !important;\r\n\t\tcolor: #fff; \r\n\t\tpadding: 0px !important; \r\n\t\tborder-radius: 0px !important; \r\n\t\tdisplay: block !important; \r\n\t\ttext-decoration: none; \r\n\t}\r\n\t\r\n\t.cta-in-article {\r\n\t\tmargin: 0px !important;\r\n\t\tpadding: 0px !important;\r\n\t\tbox-shadow: none !important;\r\n\t}\r\n\t\r\n@media (min-width: 650px) {\r\n    .cta-in-article-image .desktop-banner {\r\n        display: block!important;\r\n    }\r\n}\r\n@media (min-width: 650px) {\r\n   .cta-in-article-image .desktop-mobile {\r\n        display: none!important;\r\n    }\r\n}\r\n<\/style>\r\n<div class=\"cta-in-article-image\">\r\n\t<a href=\"https:\/\/www.hashmicro.com\/id\/offer\/download-skema-harga-software-erp?blog&utm_source=blog&medium=banner-article\" target=\"_blank\" rel=\"noopener\">\r\n\t\t<div id=\"desktop-banner-container\">\r\n\t\t\t<div class=\"desktop-banner\">\r\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.Skema-Harga-web-resized.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"mobile-banner-container\">\r\n\t\t\t<div class=\"desktop-mobile\">\r\n\t\t\t\t<img decoding=\"async\" width=\"372\" height=\"465\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.-Skema-Harga-Mobile-372px.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/a>\r\n<\/div>\n<h2><strong><span id=\"b\">Elemen Penting dalam Mengelola ROP dan ROQ<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-164327 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1.webp\" alt=\"element rop\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-1-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Untuk mengelola ROP dan ROQ dengan efektif, ada beberapa elemen kunci yang harus diperhatikan. Berikut ini adalah elemen-elemen penting yang berperan dalam memastikan perhitungan yang akurat dan pengelolaan persediaan yang optimal:<\/p>\n<h3><strong>1. Lead time (Waktu Tunggu)<\/strong><\/h3>\n<p>Waktu tunggu adalah durasi yang diperlukan sejak pemesanan dilakukan hingga barang tiba di gudang.<\/p>\n<p>Memahami lead time dengan tepat penting untuk menentukan ROP, karena ROP harus memperhitungkan waktu yang dibutuhkan untuk mendapatkan kembali stok sebelum persediaan habis. Waktu tunggu yang lebih lama memerlukan ROP yang lebih tinggi untuk menghindari kekurangan stok.<\/p>\n<h3><strong>2. Variability<\/strong><strong> in demand<\/strong><\/h3>\n<p>Fluktuasi permintaan merujuk pada variasi dalam jumlah unit yang dibutuhkan oleh pelanggan dari waktu ke waktu.<\/p>\n<p>Perusahaan harus memperhitungkan tingkat fluktuasi ini saat menentukan ROP dan ROQ untuk mengatasi kemungkinan perubahan dalam permintaan yang tidak terduga. Menambahkan stok pengaman dapat membantu mengatasi ketidakpastian ini dan memastikan ketersediaan barang yang konsisten.<\/p>\n<h3><strong>3. Safety stock (Stok Pengaman) <\/strong><\/h3>\n<p>Stok pengaman adalah jumlah tambahan persediaan yang disimpan untuk melindungi perusahaan dari fluktuasi permintaan atau penundaan pengiriman. Safety stock bertujuan untuk mencegah kekurangan stok selama periode ketidakpastian.<\/p>\n<p>Meskipun tidak selalu diperhitungkan dalam perhitungan ROQ, safety stock merupakan faktor penting dalam menghitung ROP dan menjaga kelancaran operasional.<\/p>\n<h2><strong>Rumus ROP dan Cara Menghitungnya<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-164328 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3.webp\" alt=\"rumus rop\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-3-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Untuk memahami bagaimana menentukan ROP dan ROQ, kita perlu menguasai beberapa konsep dasar, seperti stok pengaman (safety stock), waktu tunggu (lead time), dan permintaan rata-rata (average demand).<\/p>\n<p>Secara umum untuk menghitung <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pengertian-reorder-point\/\">reorder point formula<\/a> sebagai berikut:<\/p>\n<h4 style=\"text-align: center;\"><strong>ROP = (Permintaan Harian Rata-rata \u00d7 Waktu Tunggu) + Stok Pengaman<\/strong><\/h4>\n<p>Dengan menggunakan rumus sederhana ini, perhitungan ini akan membantu bisnis memastikan ketersediaan stok barang secara optimal.<\/p>\n<h3><strong>1. Menghitung berdasarkan lead time<\/strong><\/h3>\n<p><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/lead-time\/\">Lead time<\/a> atau waktu tunggu adalah durasi yang dibutuhkan mulai dari saat pesanan dilakukan hingga barang diterima. Dalam perhitungan ROP, lead time sangat penting karena menentukan kapan waktu yang tepat untuk melakukan pemesanan ulang agar stok tidak habis sebelum barang baru tiba.<\/p>\n<p>Rumus lead time:<\/p>\n<h4 style=\"text-align: center;\"><strong>Lead Time Demand = Lead Time \u00d7 Average Demand<\/strong><\/h4>\n<h3><strong>2. Menghitung berdasarkan safety stock<\/strong><\/h3>\n<p>Safety stock atau stok pengaman adalah jumlah cadangan barang yang disimpan untuk mengantisipasi ketidakpastian dalam permintaan atau keterlambatan pasokan. Menghitung safety stock sangat penting untuk memastikan bahwa bisnis tidak mengalami kekurangan barang saat terjadi peningkatan permintaan atau gangguan pada proses pengadaan.<\/p>\n<p>Rumus safety stock:<\/p>\n<h4 style=\"text-align: center;\"><strong>Safety Stock = (Maximum Daily Demand \u00d7 Maximum Lead Time) \u2013 (Average Daily Demand \u00d7 Average Lead Time)<\/strong><\/h4>\n<h3><strong>3. Menghitung berdasarkan average demand<\/strong><\/h3>\n<p>Menghitung sistem ROP dan ROQ berdasarkan average demand memerlukan perhitungan yang melibatkan permintaan rata-rata barang selama periode tertentu. Dengan mengetahui angka permintaan rata-rata, perusahaan dapat membuat keputusan yang lebih baik tentang kapan dan berapa banyak harus memesan ulang persediaan.<\/p>\n<p>Rumus untuk ROP adalah:<\/p>\n<h4 style=\"text-align: center;\"><strong>ROP = Permintaan Harian Rata-rata \u00d7 Waktu Tunggu<\/strong><\/h4>\n<p>Dengan memahami ketiga pendekatan perhitungan di atas, perusahaan dapat memilih metode yang paling sesuai dengan karakteristik bisnis dan pola permintaan mereka. Penerapan rumus yang tepat akan membantu mengoptimalkan pengelolaan persediaan sekaligus meminimalkan risiko kehabisan stok maupun penumpukan barang yang tidak diperlukan.<\/p>\n<h2><strong>Contoh Perhitungan ROP untuk Optimalisasi Persediaan Perusahaan<\/strong><\/h2>\n<h3><strong>1. Perhitungan lead time<\/strong><\/h3>\n<p>PT. Sukses Manufaktur, yang memproduksi komponen elektronik. Perusahaan ini memiliki permintaan harian rata-rata sebanyak 50 unit, dan lead time mereka adalah 15 hari. Berikut perhitungan yang digunakan.<\/p>\n<h4 style=\"text-align: center;\"><strong>Permintaan Selama Lead Time = Permintaan Harian x Lead Time Permintaan <\/strong><br \/>\n<strong>Permintaan Selama Lead Time = 50 unit x 15 hari <\/strong><br \/>\n<strong>Permintaan Selama Lead Time = 750 unit<\/strong><\/h4>\n<p style=\"text-align: left;\">Dengan hasil ini, PT. Sukses Manufaktur memutuskan untuk memesan ulang ketika stok mencapai 750 unit, memastikan ketersediaan yang cukup selama waktu tunggu dan menghindari kekurangan persediaan.<\/p>\n<h3><strong>2. Perhitungan safety stock<\/strong><\/h3>\n<p>PT. Sukses Manufaktur memiliki permintaan harian rata-rata sebesar 100 unit dan waktu tunggu (lead time) adalah 10 hari. Selain itu, mereka memutuskan untuk menyimpan safety stock sebanyak 250 unit untuk mengatasi fluktuasi permintaan atau keterlambatan pengiriman.<\/p>\n<p>Untuk menentukan ROP dengan memperhitungkan safety stock, perusahaan menggunakan rumus berikut:<\/p>\n<h4 style=\"text-align: center;\"><strong>Safety Stock = (Permintaan Harian Maksimal x Lead Time Maksimal) \u2212(Permintaan Harian Rata-rata x Waktu Tunggu)<\/strong><br \/>\n<strong>Safety Stock = Safety Stock = (150 x 15) &#8211; (100 x 10) <\/strong><br \/>\n<strong>Safety Stock = 1250 unit<\/strong><\/h4>\n<p>PT. Sukses Manufaktur dapat memastikan persediaan tetap mencukupi selama periode ketidakpastian, sehingga menghindari kekurangan stok dan memastikan operasi bisnis berjalan lancar.<\/p>\n<h3><strong>3. Perhitungan average demand<\/strong><\/h3>\n<p>PT. Maju Jaya memiliki permintaan harian rata-rata sebanyak 120 unit dan waktu tunggu (lead time) selama 8 hari. Untuk menghitung ROP:<\/p>\n<h4 style=\"text-align: center;\"><strong>ROP = Permintaan Harian Rata-Rata x Waktu Tunggu <\/strong><br \/>\n<strong>ROP = 120 unit x 8 hari = 960 unit<\/strong><\/h4>\n<p>Sehingga, PT. Maju Jaya harus memesan ulang ketika stok mencapai 960 unit. Dengan perhitungan ini, mereka memastikan stok selalu mencukupi selama waktu tunggu sebelum pasokan baru tiba.<\/p>\n<h2><strong>Model Reorder Point<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-164325 size-full\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2.webp\" alt=\"Model Reorder Point\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2.webp 1200w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-300x169.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-768x432.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-747x420.webp 747w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-150x84.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-696x392.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/rop-roq-min-max-2-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>Setiap bisnis menerapkan model ROP sesuai kebijakan inventaris masing-masing. Perusahaan menggunakan strategi tertentu untuk menentukan kapan harus memesan ulang dan berapa banyak stok yang perlu mereka tambahkan. Melalui kebijakan ini, perusahaan dapat menjaga persediaan agar selalu siap saat operasional membutuhkannya.<\/p>\n<p>Model ROP membantu perusahaan menentukan waktu pemesanan ulang yang tepat serta jumlah stok yang paling optimal. Dalam prosesnya, perusahaan perlu mempertimbangkan berbagai faktor yang memengaruhi kebutuhan persediaan.<\/p>\n<p>Perusahaan dapat menentukan waktu pemesanan berdasarkan jadwal tetap atau berdasarkan level stok yang mencapai batas tertentu, sesuai rumus dalam sistem ROP.<\/p>\n<p>Beberapa faktor yang memengaruhi permintaan produk tertentu antara lain:<\/p>\n<ul>\n<li>Pertimbangan apakah penggunaan atau konsumsi barang dalam bisnis Anda cenderung konstan atau berubah-ubah.<\/li>\n<li>Pemahaman tentang pola permintaan, apakah bersifat acak atau lebih dapat diprediksi.<\/li>\n<li>Stabilitas permintaan, apakah berlangsung terus sepanjang siklus atau terkonsentrasi dalam periode tertentu.<\/li>\n<\/ul>\n<p>Setiap jenis permintaan memiliki waktu tunggu tersendiri, yang juga berdampak pada keputusan pemesanan. Waktu tunggu dapat berbeda-beda, bisa pendek atau panjang, dan bisa dipengaruhi oleh musim, kondisi pasar, dan kemampuan pemasok dalam memenuhi pesanan.<\/p>\n<p>Selain itu, perusahaan mungkin perlu memesan berbagai item dari pemasok berbeda. Misalnya, produsen pakaian perlu memesan kain, kancing, resleting, dan aksesori lainnya yang mungkin memiliki waktu tunggu berbeda.<\/p>\n<h2 data-start=\"320\" data-end=\"379\"><strong>Cara Software Inventory Membantu Perhitungan ROP dan ROQ<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-192440 aligncenter\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-300x188.webp\" alt=\"contoh inventory dashboard\" width=\"593\" height=\"372\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-300x188.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-1024x640.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-768x480.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-1536x960.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-2048x1280.webp 2048w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-672x420.webp 672w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-150x94.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-696x435.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-1068x668.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/db-rop-roq-1920x1200.webp 1920w\" sizes=\"auto, (max-width: 593px) 100vw, 593px\" \/><\/p>\n<p data-start=\"381\" data-end=\"693\">Menghitung ROP dan ROQ secara manual bisa menjadi proses yang rumit, terutama ketika jumlah stok, variasi produk, dan permintaan terus berubah. Karena itu, banyak perusahaan menggunakan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/aplikasi-stok-barang-terbaik\/\">software inventory<\/a> untuk membuat proses perencanaan persediaan lebih cepat, akurat, dan terkontrol.<\/p>\n<p data-start=\"695\" data-end=\"1032\">Melalui sistem yang sudah terintegrasi, perusahaan dapat memantau stok secara real-time, mengetahui kapan harus melakukan reorder, dan menentukan jumlah pembelian yang lebih sesuai dengan kebutuhan. Selain itu, penggunaan software juga membantu mengurangi kesalahan perhitungan manual yang dapat memicu stockout maupun overstock.<\/p>\n<p data-start=\"1034\" data-end=\"1118\">Berikut beberapa manfaat software inventory dalam mendukung perhitungan ROP dan ROQ:<\/p>\n<ul data-start=\"1120\" data-end=\"1328\">\n<li data-start=\"1120\" data-end=\"1188\">Otomatisasi perhitungan berdasarkan data persediaan dan permintaan<\/li>\n<li data-start=\"1189\" data-end=\"1225\">Pemantauan stok secara real-time<\/li>\n<li data-start=\"1226\" data-end=\"1273\">Pengelolaan safety stock yang lebih terukur<\/li>\n<li data-start=\"1274\" data-end=\"1328\">Laporan analisis untuk mendukung keputusan pembelian<\/li>\n<\/ul>\n<p data-start=\"1375\" data-end=\"1559\">Dengan bantuan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/rekomendasi-sistem-manajemen-inventory-di-indonesia-yang-wajib-diketahui\/\">software inventory<\/a>, perusahaan dapat menghitung ROP dan ROQ secara lebih efisien, sekaligus meningkatkan akurasi perencanaan stok agar ketersediaan barang tetap terjaga.<\/p>\n<style>\r\n.cta-in-article-image .desktop-banner{\r\n    display: none;\r\n    text-align: center;\r\n}\r\n.cta-in-article-image .desktop-mobile{\r\n    display: block;\r\n    text-align: center;\r\n    width: 100%;\r\n}\r\n\t.cta-in-article a {\r\n\t\tfont-size: 0px !important;\r\n\t\tcolor: #fff; \r\n\t\tpadding: 0px !important; \r\n\t\tborder-radius: 0px !important; \r\n\t\tdisplay: block !important; \r\n\t\ttext-decoration: none; \r\n\t}\r\n\t\r\n\t.cta-in-article {\r\n\t\tmargin: 0px !important;\r\n\t\tpadding: 0px !important;\r\n\t\tbox-shadow: none !important;\r\n\t}\r\n\t\r\n@media (min-width: 650px) {\r\n    .cta-in-article-image .desktop-banner {\r\n        display: block!important;\r\n    }\r\n}\r\n@media (min-width: 650px) {\r\n   .cta-in-article-image .desktop-mobile {\r\n        display: none!important;\r\n    }\r\n}\r\n<\/style>\r\n<div class=\"cta-in-article-image\">\r\n\t<a href=\"https:\/\/www.hashmicro.com\/id\/offer\/download-skema-harga-software-erp?blog&utm_source=blog&medium=banner-article\" target=\"_blank\" rel=\"noopener\">\r\n\t\t<div id=\"desktop-banner-container\">\r\n\t\t\t<div class=\"desktop-banner\">\r\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.Skema-Harga-web-resized.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t\t<div id=\"mobile-banner-container\">\r\n\t\t\t<div class=\"desktop-mobile\">\r\n\t\t\t\t<img decoding=\"async\" width=\"372\" height=\"465\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/02.-Skema-Harga-Mobile-372px.webp\" alt=\"download skema harga software erp\">\r\n\t\t\t<\/div>\r\n\t\t<\/div>\r\n\t<\/a>\r\n<\/div>\n<h2><strong>Kesimpulan<\/strong><\/h2>\n<p>ROP dan ROQ membantu perusahaan menentukan waktu pemesanan ulang dan jumlah stok yang paling sesuai agar persediaan tetap seimbang. Saat perusahaan menggunakan keduanya secara tepat, risiko stockout bisa turun, penumpukan barang dapat dicegah, dan operasional harian pun berjalan lebih lancar.<\/p>\n<p>Selain itu, perhitungan yang akurat membuat perusahaan lebih siap menghadapi perubahan permintaan dan ketidakpastian pasokan. Sistem inventory juga membantu tim bekerja lebih akurat, mempercepat pengambilan keputusan, dan menjaga ketersediaan barang secara lebih konsisten daripada cara manual.<\/p>\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>\n<h2><strong>Pertanyaan Seputar ROP dan ROQ<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa itu ROP dalam pengadaan?<\/strong><\/summary>\n<p>Titik pemesanan ulang (ROP) adalah level tertentu di mana stok Anda perlu diisi ulang . Dengan kata lain, titik pemesanan ulang memberi tahu Anda kapan harus memesan sehingga Anda tidak akan kehabisan stok.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara menghitung ROP dalam inventaris?<\/strong><\/summary>\n<p>Setelah definisi dan pentingnya ditetapkan, sekarang saatnya meninjau langkah demi langkah cara mendapatkan titik pemesanan ulang yang akurat. Sekali lagi, rumus titik pemesanan ulang adalah: Titik pemesanan ulang (ROP) = Penjualan rata-rata per hari x Waktu tunggu + Stok pengaman.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa yang dimaksud dengan EOQ dan ROP?<\/strong><\/summary>\n<p>Teknik ABC System dengan metode perusahaan mebagi ke dalam pendekatan persediaan yaitu A, B, dan C. Teknik EOQ atau Economic Order Quantity menentukan jumlah pesanan yang paling ekonomis. Teknik ROP atau Re Order Point adalah keputusan mengenai kapan perusahaan akan mengajukan pemesanan kembali.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah ROP dan ROQ cocok untuk semua jenis bisnis?<\/strong><\/summary>\n<p>ROP dan ROQ cocok untuk banyak jenis bisnis yang mengelola persediaan, terutama ritel, distribusi, dan manufaktur. Namun, perhitungannya perlu disesuaikan dengan pola permintaan, lead time, dan karakter stok di masing-masing perusahaan agar hasilnya benar-benar efektif.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Apa itu ROP dalam pengadaan?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Titik pemesanan ulang (ROP) adalah level tertentu di mana stok Anda perlu diisi ulang . Dengan kata lain, titik pemesanan ulang memberi tahu Anda kapan harus memesan sehingga Anda tidak akan kehabisan stok.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Bagaimana cara menghitung ROP dalam inventaris?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Setelah definisi dan pentingnya ditetapkan, sekarang saatnya meninjau langkah demi langkah cara mendapatkan titik pemesanan ulang yang akurat. Sekali lagi, rumus titik pemesanan ulang adalah: Titik pemesanan ulang (ROP) = Penjualan rata-rata per hari x Waktu tunggu + Stok pengaman .\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apa yang dimaksud dengan EOQ dan ROP?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Teknik ABC System dengan metode perusahaan mebagi ke dalam pendekatan persediaan yaitu A, B, dan C. Teknik EOQ atau Economic Order Quantity menentukan jumlah pesanan yang paling ekonomis. Teknik ROP atau Re Order Point adalah keputusan mengenai kapan perusahaan akan mengajukan pemesanan kembali.\"\n    }\n  }]\n}\n<\/script><\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Mengelola persediaan bukan lagi sekadar memastikan barang selalu tersedia di gudang. Perusahaan juga harus menjaga keseimbangan antara jumlah stok, kecepatan permintaan, dan waktu pengadaan agar operasional tetap lancar tanpa membebani biaya penyimpanan. Karena itu, Reorder Point (ROP) dan Reorder Quantity (ROQ) menjadi dua konsep penting dalam pengendalian stok. Melalui artikel ini, kami akan membahas pengertian, [&hellip;]<\/p>\n","protected":false},"author":223,"featured_media":146849,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88],"tags":[5702],"class_list":{"0":"post-146843","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory","8":"tag-artikel-terkait"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya<\/title>\n<meta name=\"description\" content=\"Ketahui manfaat ROP dan ROQ bagi bisnis: 1. Cegah stok habis 2. Optimasi biaya penyimpanan 3. Tingkatkan efisiensi. Cek selengkapnya di sini!\" \/>\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\/rop-roq-min-max\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya\" \/>\n<meta property=\"og:description\" content=\"Ketahui manfaat ROP dan ROQ bagi bisnis: 1. Cegah stok habis 2. Optimasi biaya penyimpanan 3. Tingkatkan efisiensi. Cek selengkapnya di sini!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-12T09:40:47+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-16T04:55:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/roq.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=\"Nur Fi&#039;llia Nugrahani\" \/>\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=\"Nur Fi&#039;llia Nugrahani\" \/>\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\\\/rop-roq-min-max\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/\"},\"author\":{\"name\":\"Nur Fi'llia Nugrahani\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#\\\/schema\\\/person\\\/116eac6e4748cbaa02f000016234fc39\"},\"headline\":\"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya\",\"datePublished\":\"2024-09-12T09:40:47+00:00\",\"dateModified\":\"2026-04-16T04:55:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/\"},\"wordCount\":1853,\"publisher\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/roq.webp\",\"keywords\":[\"Artikel Terkait\"],\"articleSection\":[\"Inventory\"],\"inLanguage\":\"id\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/\",\"name\":\"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/roq.webp\",\"datePublished\":\"2024-09-12T09:40:47+00:00\",\"dateModified\":\"2026-04-16T04:55:29+00:00\",\"description\":\"Ketahui manfaat ROP dan ROQ bagi bisnis: 1. Cegah stok habis 2. Optimasi biaya penyimpanan 3. Tingkatkan efisiensi. Cek selengkapnya di sini!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/roq.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/roq.webp\",\"width\":1200,\"height\":675,\"caption\":\"rop roq\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/rop-roq-min-max\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya\"}]},{\"@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\\\/116eac6e4748cbaa02f000016234fc39\",\"name\":\"Nur Fi'llia Nugrahani\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/cropped-foto-profil-nuri-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/cropped-foto-profil-nuri-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/cropped-foto-profil-nuri-96x96.webp\",\"caption\":\"Nur Fi'llia Nugrahani\"},\"description\":\"Nuri adalah seorang spesialis dalam bidang inventory management dengan pengalaman 3 tahun. Berfokus pada penulisan yang mengangkat topik pengelolaan stok, pengendalian persediaan, dan implementasi sistem inventory digital untuk menjamin efisiensi operasional bisnis.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/nur-fi-llia-nugrahani\"],\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/id\\\/blog\\\/author\\\/fillia-nugrahani\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya","description":"Ketahui manfaat ROP dan ROQ bagi bisnis: 1. Cegah stok habis 2. Optimasi biaya penyimpanan 3. Tingkatkan efisiensi. Cek selengkapnya di sini!","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\/rop-roq-min-max\/","og_locale":"id_ID","og_type":"article","og_title":"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya","og_description":"Ketahui manfaat ROP dan ROQ bagi bisnis: 1. Cegah stok habis 2. Optimasi biaya penyimpanan 3. Tingkatkan efisiensi. Cek selengkapnya di sini!","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2024-09-12T09:40:47+00:00","article_modified_time":"2026-04-16T04:55:29+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/roq.webp","type":"image\/webp"}],"author":"Nur Fi'llia Nugrahani","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Nur Fi'llia Nugrahani","Estimasi waktu membaca":"12 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/"},"author":{"name":"Nur Fi'llia Nugrahani","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/116eac6e4748cbaa02f000016234fc39"},"headline":"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya","datePublished":"2024-09-12T09:40:47+00:00","dateModified":"2026-04-16T04:55:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/"},"wordCount":1853,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/roq.webp","keywords":["Artikel Terkait"],"articleSection":["Inventory"],"inLanguage":"id"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/","name":"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/roq.webp","datePublished":"2024-09-12T09:40:47+00:00","dateModified":"2026-04-16T04:55:29+00:00","description":"Ketahui manfaat ROP dan ROQ bagi bisnis: 1. Cegah stok habis 2. Optimasi biaya penyimpanan 3. Tingkatkan efisiensi. Cek selengkapnya di sini!","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/roq.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/09\/roq.webp","width":1200,"height":675,"caption":"rop roq"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/rop-roq-min-max\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Mengenal Apa itu ROP dan ROQ, serta Cara Menghitungnya"}]},{"@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\/116eac6e4748cbaa02f000016234fc39","name":"Nur Fi'llia Nugrahani","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/cropped-foto-profil-nuri-96x96.webp","caption":"Nur Fi'llia Nugrahani"},"description":"Nuri adalah seorang spesialis dalam bidang inventory management dengan pengalaman 3 tahun. Berfokus pada penulisan yang mengangkat topik pengelolaan stok, pengendalian persediaan, dan implementasi sistem inventory digital untuk menjamin efisiensi operasional bisnis.","sameAs":["https:\/\/www.linkedin.com\/in\/nur-fi-llia-nugrahani"],"url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/fillia-nugrahani\/"}]}},"focus_keyword":"rop roq","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/146843","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\/223"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=146843"}],"version-history":[{"count":13,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/146843\/revisions"}],"predecessor-version":[{"id":192441,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/146843\/revisions\/192441"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/146849"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=146843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=146843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=146843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}