{"id":177728,"date":"2025-11-21T00:00:00","date_gmt":"2025-11-20T17:00:00","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=177728"},"modified":"2026-01-15T09:59:34","modified_gmt":"2026-01-15T02:59:34","slug":"zone-pricing","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/","title":{"rendered":"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal"},"content":{"rendered":"<p>Di negara kepulauan, \u201csatu harga nasional\u201d sering bukan strategi, melainkan risiko, terutama untuk bisnis distribusi di Indonesia. Biaya logistik tiap daerah berbeda jauh, sehingga jika ongkos kirim Jakarta\u2013Surabaya disamakan dengan Jakarta\u2013Makassar atau Jayapura, margin bisa terkikis tanpa terasa.<\/p>\n<p>Masalahnya, harga flat bukan hanya berisiko merugi di area remote, tetapi juga membuat produk kalah saing di wilayah berbiaya rendah karena subsidi silang antarwilayah. Akibatnya, struktur harga jadi tidak proporsional dan sulit dijaga konsistensinya.<\/p>\n<p>Karena itu, <em><strong>zone pricing<\/strong><\/em> makin relevan: wilayah dibagi ke beberapa zona dengan harga yang disesuaikan tingkat kompleksitas distribusinya. Tujuannya menciptakan harga yang tetap kompetitif sekaligus adil terhadap biaya supply chain di tiap area.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li><a href=\"#definisi\">Zone pricing adalah<\/a> strategi penetapan harga berbeda per wilayah untuk menyesuaikan biaya distribusi dan kondisi pasar lokal.<\/li>\n<li><a href=\"#manfaat\">Strategi zone pricing ini bermanfaat<\/a> untuk menjaga margin, meningkatkan daya saing lokal, dan menyesuaikan harga dengan daya beli konsumen.<\/li>\n<li>Sistem pricing terintegrasi memungkinkan bisnis menerapkan zone pricing secara otomatis dan konsisten melalui multi-pricelist serta <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pos-retail-terbaik-di-indonesia\/\"><strong>POS terpusat<\/strong><\/a>.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n<\/span><\/p>\n<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><\/p>\n<h2><strong>Apa Itu<em> Zone Pricing<\/em> dan Relevansinya di Indonesia?<\/strong><\/h2>\n<p>Secara mendasar, <em><strong>zone pricing<\/strong><\/em> adalah metode di mana penjual menetapkan harga produk berdasarkan lokasi geografis pembeli. Alih-alih menghitung biaya pengiriman secara spesifik untuk setiap individu (yang bisa sangat rumit secara administratif), perusahaan mengelompokkan wilayah ke dalam zona-zona tertentu. Semua pelanggan di dalam zona yang sama akan dikenakan harga atau biaya kirim yang seragam.<\/p>\n<p>Di Indonesia, relevansi strategi ini sangat tinggi. Berdasarkan data logistik nasional, biaya pengiriman di Indonesia bisa mencapai 24% dari PDB, angka yang jauh lebih tinggi dibandingkan negara tetangga.<\/p>\n<p><strong>Contoh sederhana konteks lokal:<\/strong> Sebuah perusahaan FMCG yang memproduksi sabun di Cikarang mungkin menetapkan:<\/p>\n<ul>\n<li><strong>Zona 1 (Jabodetabek &amp; Jabar):<\/strong> Harga dasar (Base Price).<\/li>\n<li><strong>Zona 2 (Jateng &amp; Jatim):<\/strong> Base Price + 5% markup logistik.<\/li>\n<li><strong>Zona 3 (Luar Jawa):<\/strong> Base Price + 15-20% markup logistik.<\/li>\n<\/ul>\n<p>Tanpa pembagian ini, perusahaan mungkin terpaksa mengambil rata-rata biaya kirim. Akibatnya, harga di Jabodetabek menjadi terlalu mahal (karena menanggung subsidi silang), yang membuka peluang bagi kompetitor lokal untuk merebut pasar.<\/p>\n<h2><strong>Perbedaan Zone Pricing vs. Uniform Pricing<\/strong><\/h2>\n<p>Agar lebih jelas dalam pengambilan keputusan, berikut perbandingannya:<\/p>\n<table>\n<tbody>\n<tr>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\"><b>Aspek<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\"><b>Uniform Delivered Pricing<\/b><\/td>\n<td style=\"background-color: #990000; color: #ffffff; padding: 5px; text-align: center;\"><b>Zone Pricing<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>Harga Jual<\/b><\/td>\n<td><span style=\"font-weight: 400;\">Sama di seluruh Indonesia<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Berbeda per wilayah\/zona<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Kompleksitas<\/b><\/td>\n<td><span style=\"font-weight: 400;\">Rendah (Mudah dikelola)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Sedang (Butuh pemetaan)<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Resiko Margin<\/b><\/td>\n<td><span style=\"font-weight: 400;\">Tinggi (Tergerus di area jauh)<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Rendah (Margin terjaga)<\/span><\/td>\n<\/tr>\n<tr>\n<td><b>Daya Saing<\/b><\/td>\n<td><span style=\"font-weight: 400;\">Lemah di area dekat pabrik<\/span><\/td>\n<td><span style=\"font-weight: 400;\">Kuat di setiap zona<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><strong><span id=\"manfaat\">Mengapa Bisnis Perlu Menerapkan Zone Pricing?<\/span><\/strong><\/h2>\n<p>Penerapan harga berbasis zona bukan hanya soal menutupi ongkos kirim yang mahal ke daerah terpencil. Strategi ini memiliki dampak langsung terhadap kesehatan finansial perusahaan dan posisi tawar di pasar yang beragam.<\/p>\n<h3><strong>1. Perlindungan margin keuntungan<\/strong><\/h3>\n<p>Salah satu alasan utama penerapan strategi ini adalah perlindungan margin dari gerusan biaya operasional yang bervariasi. Biaya sewa gudang, upah tenaga kerja regional (UMR), dan biaya logistik atau <em>landed cost<\/em> tentu berbeda antara Jakarta dan Papua. Dengan menyesuaikan harga, Anda memastikan bahwa setiap unit yang terjual tetap memberikan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/apa-itu-profit-berikut-definisi-fungsi-dan-jenisnya\/\">kontribusi profit yang positif<\/a>.<\/p>\n<h3><strong>2. Meningkatkan daya saing di pasar lokal<\/strong><\/h3>\n<p>Fleksibilitas harga memberikan keunggulan kompetitif yang signifikan bagi bisnis Anda di berbagai wilayah. Di zona dengan kompetisi ketat, Anda bisa menerapkan harga yang lebih agresif untuk memenangkan pangsa pasar. Sebaliknya, di zona dengan kompetisi rendah, harga bisa dimaksimalkan untuk meningkatkan profitabilitas perusahaan secara keseluruhan.<\/p>\n<h3><strong>3. Adaptasi terhadap daya beli konsumen<\/strong><\/h3>\n<p>Kondisi demografis Indonesia yang beragam menuntut pendekatan harga yang lebih sensitif. Harga yang wajar di kota metropolitan bisa terasa mahal di kota tier-2 atau tier-3 karena perbedaan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/harga-perolehan-adalah\/\">biaya perolehan per wilayah<\/a>. Zone pricing membantu penetrasi pasar dengan harga yang lebih relevan.<\/p>\n<h2><strong>Studi Kasus: Efisiensi Distributor Bahan Bangunan<\/strong><\/h2>\n<p>Mari kita lihat ilustrasi penerapan pada sebuah distributor semen yang memiliki gudang pusat di Surabaya. Awalnya, mereka menggunakan harga rata-rata Rp50.000\/sak untuk semua tujuan di Jawa Timur.<\/p>\n<p><strong>Masalah:<\/strong> Saat mengirim ke Banyuwangi (ujung timur), biaya truk memakan margin hingga 80%. Sementara di Surabaya dan Gresik, harga Rp50.000 dianggap terlalu mahal oleh toko bangunan karena kompetitor lokal menjual di Rp48.000.<\/p>\n<p><strong>Solusi <em>Zone Pricing<\/em>:<\/strong><\/p>\n<ul>\n<li><strong>Zona A (Surabaya, Gresik, Sidoarjo):<\/strong> Harga diturunkan ke Rp48.500 (Kompetitif).<\/li>\n<li><strong>Zona B (Malang, Pasuruan, Probolinggo):<\/strong> Harga Rp51.000.<\/li>\n<li><strong>Zona C (Jember, Banyuwangi):<\/strong> Harga Rp54.000 (Menutup biaya logistik).<\/li>\n<\/ul>\n<p><strong>Hasil:<\/strong> Penjualan di Zona A meningkat karena harga lebih bersaing, sementara penjualan di Zona C tidak lagi menggerus profitabilitas perusahaan secara keseluruhan, sehingga strategi harga menjadi lebih seimbang antar wilayah.<\/p>\n<h2><strong>Variabel Utama dalam Menentukan Zona Harga<\/strong><\/h2>\n<p>Keberhasilan strategi ini sangat bergantung pada seberapa akurat Anda memetakan zona berdasarkan data yang valid. Berikut adalah faktor-faktor berbasis data yang wajib dipertimbangkan saat mengelompokkan wilayah penjualan.<\/p>\n<h3><strong>1. Biaya logistik dan distribusi<\/strong><\/h3>\n<p>Fokus utama dalam variabel ini adalah jarak tempuh dan kompleksitas pengiriman dari pusat distribusi ke titik penjualan. Semakin jauh dan sulit akses lokasi tujuan, semakin tinggi beban biaya yang harus dikompensasi melalui harga jual. Data dari <a href=\"https:\/\/www.supplychainindonesia.com\/\" target=\"_blank\" rel=\"noopener\">Supply Chain Indonesia<\/a> menunjukkan biaya logistik masih menjadi komponen biaya terbesar bagi banyak perusahaan.<\/p>\n<h3><strong>2. Tingkat kepadatan kompetitor<\/strong><\/h3>\n<p>Anda perlu melakukan analisis mendalam mengenai keberadaan pesaing di radius wilayah tertentu. Zona dengan banyak pesaing membutuhkan strategi harga yang lebih kompetitif atau promosi yang lebih gencar untuk menarik perhatian. Sementara di zona <em>blue ocean<\/em>, Anda memiliki keleluasaan lebih untuk menentukan harga premium.<\/p>\n<h3><strong>3. Sensitivitas harga pelanggan<\/strong><\/h3>\n<p>Menggunakan data historis penjualan sangat penting untuk melihat elastisitas permintaan di wilayah tertentu. Analisis ini membantu mencegah penurunan omzet akibat kenaikan harga yang mungkin tidak dapat diterima oleh pasar lokal. Pemahaman mendalam tentang perilaku konsumen lokal adalah kunci untuk menetapkan harga yang tepat sasaran.<\/p>\n<h2><strong>Cara Implementasi Zone Pricing yang Efektif dengan Sistem POS<\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-184544\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-scaled.webp\" alt=\"\" width=\"2560\" height=\"1396\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-scaled.webp 2560w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-300x164.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-1024x559.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-768x419.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-1536x838.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-2048x1117.webp 2048w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-770x420.webp 770w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-150x82.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-696x380.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-1068x583.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/11\/zone-pricing-1920x1047.webp 1920w\" sizes=\"auto, (max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p>Mengelola ribuan kombinasi harga produk dan lokasi menggunakan <em>spreadsheet<\/em> manual adalah resep bencana bagi bisnis yang sedang berkembang. Sistem modern seperti ERP menyederhanakan kompleksitas ini menjadi proses yang otomatis, terpusat, dan minim kesalahan manusia.<\/p>\n<h3><strong>1. Sentralisasi data dengan <em>multi-sales pricelists<\/em><\/strong><\/h3>\n<p>Fitur <em>Multi Sales Pricelists<\/em> dalam sistem ERP memungkinkan daftar harga berbeda per cabang secara otomatis, sekaligus mendukung <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/metode-bant-sales\/\">BANT sales qualification<\/a> agar prospek yang layak diprioritaskan. Formula diskon, markup, atau harga tetap bisa diatur per zona dalam satu dasbor, tanpa banyak file harga.<\/p>\n<h3><strong>2. Otomatisasi update harga di POS<\/strong><\/h3>\n<p>Integrasi antara manajemen harga pusat dengan sistem kasir di cabang sangat krusial untuk menjaga konsistensi data. Fitur <em>Centralized Multi-branch POS<\/em> memastikan bahwa ketika harga zona diperbarui di pusat, harga di kasir cabang otomatis berubah saat itu juga. Penggunaan software pos yang terintegrasi mencegah kebocoran pendapatan akibat kesalahan input harga manual.<\/p>\n<h3><strong>3. Analisis profitabilitas per zona<\/strong><\/h3>\n<p>Penting bagi manajemen untuk memantau apakah strategi harga di zona tertentu benar-benar menghasilkan profit yang diharapkan. Fitur pelaporan analitik dalam sistem ERP membantu Anda melacak laporan laba rugi per cabang secara <em>real-time<\/em>. Dengan data ini, Anda bisa segera mengevaluasi jika ada zona yang merugi karena biaya operasional tersembunyi.<\/p>\n<h2><strong>Tantangan dan Risiko Strategi Zone Pricing<\/strong><\/h2>\n<p>Meskipun terdengar ideal, eksekusi strategi ini memiliki tantangan tersendiri. Transparansi informasi di era digital membuat konsumen saat ini sangat mudah membandingkan harga. Jika tidak dikelola dengan hati-hati, perbedaan ini bisa dianggap diskriminatif dan merusak reputasi brand Anda.<\/p>\n<p>Selain aspek psikologis konsumen, tantangan teknis dalam pengelolaan data juga menjadi sorotan utama, seperti integrasi antar kanal dan konsistensi harga per zona, seperti yang diungkapkan oleh praktisi:<\/p>\n<p><!-- Testimonial Block --><\/p>\n<div style=\"border: 1px solid #ddd; border-radius: 8px; overflow: hidden; margin: 30px 0; box-shadow: 0 4px 12px rgba(0,0,0,0.12);\">\n<div style=\"background-color: #990000; color: #fff; padding: 14px 20px; font-size: 18px; font-weight: bold; letter-spacing: 0.5px;\">Expert&#8217;s Review<\/div>\n<div style=\"background-color: #fff; padding: 25px; font-size: 16px; line-height: 1.7; position: relative;\">\n<div style=\"font-size: 40px; color: #990000; font-weight: bold; line-height: 0; position: absolute; top: 15px; left: 20px;\">\u201c<\/div>\n<p style=\"margin: 0 0 15px 40px; font-style: italic; color: #333;\">Dalam pengalaman saya mendampingi transformasi digital di perusahaan distribusi, tantangan terbesar zone pricing bukan pada logistiknya, melainkan pada manajemen data. Tanpa sistem yang mampu memetakan margin per SKU per lokasi secara real-time, penetapan zona seringkali hanya berdasarkan asumsi, bukan data biaya aktual. Akibatnya, kebocoran profit tetap terjadi.<\/p>\n<p style=\"margin: 0 0 0 40px; font-weight: bold; color: #444;\">\u2014 Hendra Gunawan, Supply Chain Consultant<\/p>\n<\/div>\n<\/div>\n<p>Berikut adalah rincian risiko spesifik yang perlu dimitigasi:<\/p>\n<h3><strong>1. Risiko &#8220;Gray Market&#8221; (Pasar Gelap)<\/strong><\/h3>\n<p>Risiko ini sering luput dari perhatian. Pelanggan di Zona A (zona harga murah\/kompetitif) bisa saja membeli dalam jumlah besar bukan untuk konsumsi sendiri, melainkan untuk dijual kembali ke Zona C (zona harga tinggi) dengan harga di bawah standar resmi perusahaan Anda.<\/p>\n<p>Hal ini tidak hanya merusak harga pasar yang sudah Anda tetapkan, tetapi juga mengacaukan performa distributor resmi Anda di Zona C karena kalah saing dengan barang &#8220;selundupan&#8221; dari zona lain.<\/p>\n<h3><strong>2. Persepsi ketidakadilan konsumen<\/strong><\/h3>\n<p>Risiko besar muncul ketika konsumen menyadari perbedaan harga yang mencolok, misalnya antara toko fisik di luar Jawa dengan harga di e-commerce pusat, sehingga kepercayaan bisa turun dan keluhan pelanggan meningkat.<\/p>\n<p><strong>Solusi:<\/strong> Lakukan komunikasi transparan mengenai nilai tambah yang mereka dapatkan (seperti ketersediaan barang secara instan tanpa menunggu pengiriman). Edukasi pasar mengenai komponen biaya distribusi juga dapat membantu meredam sentimen negatif.<\/p>\n<h3><strong>3. Risiko kanibalisme penjualan<\/strong><\/h3>\n<p>Berbeda dengan gray market, situasi ini terjadi ketika konsumen yang berada di perbatasan zona memilih bepergian sedikit lebih jauh ke zona tetangga demi mendapatkan harga yang lebih murah. Hal ini dapat mengacaukan data permintaan (demand planning) dan logistik Anda. Analisis batas wilayah yang cermat diperlukan untuk meminimalkan perpindahan belanja antar zona ini.<\/p>\n<h3><strong>4. Kompleksitas Manajemen Inventaris<\/strong><\/h3>\n<p>Memindahkan stok antar zona dengan base price berbeda butuh ketelitian tinggi. Tanpa sistem yang mumpuni, selisih nilai aset mudah terjadi karena HPP tercatat keliru, jadi dibutuhkan sistem inventaris terintegrasi dengan <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/inventory-valuation\/\">valuasi persediaan per gudang<\/a> agar laporan keuangan tetap rapi.<\/p>\n<h2><strong>Studi Kasus: Strategi Alfa Group dalam Menangani Kompleksitas <em>Zone-Pricing<\/em><\/strong><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-173952\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1.webp\" alt=\"pos hashmicro\" width=\"1737\" height=\"1200\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1.webp 1737w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-300x207.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-1024x707.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-768x531.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-1536x1061.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-608x420.webp 608w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-150x104.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-218x150.webp 218w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-696x481.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-1068x738.webp 1068w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/05\/pos-hashmicro-1-100x70.webp 100w\" sizes=\"auto, (max-width: 1737px) 100vw, 1737px\" \/><\/p>\n<p>Sebagai jaringan ritel besar dengan ribuan gerai lintas pulau, Alfa Group menghadapi variasi biaya distribusi yang tinggi antarwilayah. Kondisi ini menuntut strategi harga yang dinamis, namun tetap bisa dikontrol terpusat agar margin tiap area tetap terjaga.<\/p>\n<p>Untuk menjawabnya, <strong>Alfa Group<\/strong> melakukan transformasi digital dengan memodernisasi <a href=\"https:\/\/www.hashmicro.com\/id\/pos\"><strong>sistem POS yang terintegrasi<\/strong><\/a> dan berbasis cloud di seluruh gerai. Dengan pendekatan ini, sinkronisasi harga dari HQ ke cabang menjadi real-time, mengurangi keterlambatan update dan risiko human error yang biasanya muncul saat pengaturan dilakukan manual.<\/p>\n<p>Sistem tersebut juga mendukung dynamic zone pricing melalui pengelompokan gerai per zona dan pengaturan <em>multi-pricelist<\/em> yang lebih presisi. Karena POS terhubung ke inventaris dan akuntansi, data penjualan langsung memperbarui stok dan pencatatan pusat, sehingga manajemen bisa memantau profitabilitas per wilayah dan mengambil keputusan promosi berbasis data aktual.<\/p>\n<p>Melalui pembaruan sistem ini, Alfa Group berhasil mengoptimalkan beberapa area operasional kunci:<\/p>\n<ul>\n<li><strong>Multi-pricelist management:<\/strong> Konsistensi margin keuntungan terjaga di setiap wilayah melalui pengaturan daftar harga otomatis berbasis zona.<\/li>\n<li><strong>Centralized multi-branch POS:<\/strong> Pemantauan performa penjualan seluruh cabang kini dapat dilakukan melalui satu dashboard terintegrasi.<\/li>\n<li><strong>Automated promotion:<\/strong> Skema promosi (seperti promo akhir pekan atau bulanan) dapat dijadwalkan secara otomatis untuk zona tertentu saja, meningkatkan daya saing pasar lokal.<\/li>\n<li><strong>Real-time reporting:<\/strong> Eliminasi proses rekonsiliasi manual, memungkinkan laporan laba rugi per cabang ditarik kapan saja untuk evaluasi performa.<\/li>\n<\/ul>\n<p>Transformasi ini membuktikan bahwa bagi ritel berskala masif, pemanfaatan sistem POS yang terintegrasi bukan sekadar alat pencatat transaksi, melainkan fondasi utama untuk efisiensi operasional dan ekspansi bisnis yang berkelanjutan.<\/p>\n<h2><strong>Kesimpulan<\/strong><\/h2>\n<p>Zone pricing menjadi strategi penyeimbang antara daya saing dan profitabilitas, khususnya bagi bisnis yang bergerak di sektor distribusi dengan cakupan wilayah luas di Indonesia. Anda tidak hanya menyelamatkan margin dari tingginya biaya logistik, tetapi juga memposisikan produk dengan harga yang paling relevan bagi pasar setempat.<\/p>\n<p>Bagi perusahaan yang ingin meningkatkan skala bisnisnya, beralih dari penetapan harga manual ke sistem otomatisasi harga merupakan langkah strategis untuk memastikan setiap transaksi di setiap wilayah benar-benar menghasilkan keuntungan.<\/p>\n<p>Untuk diskusi lebih mendalam mengenai bagaimana merancang struktur harga wilayah yang efektif bagi bisnis Anda, Anda dapat memanfaatkan sesi <a href=\"https:\/\/www.hashmicro.com\/id\/tour-produk-gratis\/\">konsultasi gratis<\/a> dengan tim ahli kami.<\/p>\n<a href=\"https:\/\/www.hashmicro.com\/id\/sistem-pos?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/25-Software-POS-Desktop.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/25-Software-POS-Desktop.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/02\/25-POS-Software-Mobile.webp\" alt=\"POS\" 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 Zone Pricing<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apakah zone pricing legal diterapkan di Indonesia?<\/strong><\/summary>\n<p>Ya, selama tidak melanggar UU persaingan usaha (seperti kartel atau predatory pricing) dan didasarkan pada justifikasi biaya yang wajar.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bisakah menerapkan zone pricing untuk toko online?<\/strong><\/summary>\n<p>Bisa, biasanya diterapkan melalui perhitungan ongkos kirim yang berbeda atau menampilkan harga berbeda setelah user login dan memasukkan alamat pengiriman.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Software apa yang dibutuhkan untuk zone pricing?<\/strong><\/summary>\n<p>Software ERP dengan modul Sales dan Inventory yang mendukung fitur Multi-Pricelist dan manajemen multi-gudang\/cabang seperti HashMicro.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apa bedanya zone pricing dengan dynamic pricing?<\/strong><\/summary>\n<p>Zone pricing berbasis lokasi geografis (statis per wilayah), sedangkan dynamic pricing berbasis waktu dan lonjakan permintaan (fluktuatif per momen).<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Bagaimana cara menentukan batas wilayah untuk zone pricing?<\/strong><\/summary>\n<p>Gunakan data biaya logistik, kode pos, batas administratif provinsi, atau radius jarak dari pusat distribusi sebagai parameter utama.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Di negara kepulauan, \u201csatu harga nasional\u201d sering bukan strategi, melainkan risiko, terutama untuk bisnis distribusi di Indonesia. Biaya logistik tiap daerah berbeda jauh, sehingga jika ongkos kirim Jakarta\u2013Surabaya disamakan dengan Jakarta\u2013Makassar atau Jayapura, margin bisa terkikis tanpa terasa. Masalahnya, harga flat bukan hanya berisiko merugi di area remote, tetapi juga membuat produk kalah saing di [&hellip;]<\/p>\n","protected":false},"author":221,"featured_media":177840,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7],"tags":[],"class_list":{"0":"post-177728","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-pos"},"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>Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal<\/title>\n<meta name=\"description\" content=\"Pelajari strategi zone pricing untuk maksimalkan profit bisnis Anda. Temukan cara implementasi dan solusi ERP terbaik di sini. Baca selengkapnya!\" \/>\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\/zone-pricing\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal\" \/>\n<meta property=\"og:description\" content=\"Pelajari strategi zone pricing untuk maksimalkan profit bisnis Anda. Temukan cara implementasi dan solusi ERP terbaik di sini. Baca selengkapnya!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/\" \/>\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-20T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-15T02:59:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"650\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Oscar Renatha\" \/>\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=\"Oscar Renatha\" \/>\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\/zone-pricing\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/\"},\"author\":{\"name\":\"Oscar Renatha\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/499b4ccbd39a4544e629ce4d1bf64382\"},\"headline\":\"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal\",\"datePublished\":\"2025-11-20T17:00:00+00:00\",\"dateModified\":\"2026-01-15T02:59:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/\"},\"wordCount\":1937,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp\",\"articleSection\":[\"POS\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/\",\"name\":\"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp\",\"datePublished\":\"2025-11-20T17:00:00+00:00\",\"dateModified\":\"2026-01-15T02:59:34+00:00\",\"description\":\"Pelajari strategi zone pricing untuk maksimalkan profit bisnis Anda. Temukan cara implementasi dan solusi ERP terbaik di sini. Baca selengkapnya!\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp\",\"width\":1200,\"height\":650,\"caption\":\"zone pricing\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal\"}]},{\"@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\/499b4ccbd39a4544e629ce4d1bf64382\",\"name\":\"Oscar Renatha\",\"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\/Oscar-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Oscar-96x96.webp\",\"caption\":\"Oscar Renatha\"},\"description\":\"Berpengalaman selama 3 tahun dalam industri SaaS khususnya bidang POS, Oscar berfokus pada penulisan artikel terkait integrasi POS dengan modul lain, manajemen transaksi penjualan, multi-store management, dan strategi penjualan yang dapat membantu para pelaku bisnis meningkatkan pertumbuhan bisnis mereka.\",\"sameAs\":[\"https:\/\/www.hashmicro.com\/id\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"POS\",\"penjualan\",\"strategi penjualan\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Content Writer\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/oscar-renatha\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal","description":"Pelajari strategi zone pricing untuk maksimalkan profit bisnis Anda. Temukan cara implementasi dan solusi ERP terbaik di sini. Baca selengkapnya!","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\/zone-pricing\/","og_locale":"id_ID","og_type":"article","og_title":"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal","og_description":"Pelajari strategi zone pricing untuk maksimalkan profit bisnis Anda. Temukan cara implementasi dan solusi ERP terbaik di sini. Baca selengkapnya!","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2025-11-20T17:00:00+00:00","article_modified_time":"2026-01-15T02:59:34+00:00","og_image":[{"width":1200,"height":650,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp","type":"image\/webp"}],"author":"Oscar Renatha","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Oscar Renatha","Estimasi waktu membaca":"12 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/"},"author":{"name":"Oscar Renatha","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/499b4ccbd39a4544e629ce4d1bf64382"},"headline":"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal","datePublished":"2025-11-20T17:00:00+00:00","dateModified":"2026-01-15T02:59:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/"},"wordCount":1937,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp","articleSection":["POS"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/","name":"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp","datePublished":"2025-11-20T17:00:00+00:00","dateModified":"2026-01-15T02:59:34+00:00","description":"Pelajari strategi zone pricing untuk maksimalkan profit bisnis Anda. Temukan cara implementasi dan solusi ERP terbaik di sini. Baca selengkapnya!","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/08\/zone-pricing.webp","width":1200,"height":650,"caption":"zone pricing"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/zone-pricing\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Zone Pricing: Strategi Harga Wilayah untuk Profit Maksimal"}]},{"@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\/499b4ccbd39a4544e629ce4d1bf64382","name":"Oscar Renatha","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\/Oscar-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Oscar-96x96.webp","caption":"Oscar Renatha"},"description":"Berpengalaman selama 3 tahun dalam industri SaaS khususnya bidang POS, Oscar berfokus pada penulisan artikel terkait integrasi POS dengan modul lain, manajemen transaksi penjualan, multi-store management, dan strategi penjualan yang dapat membantu para pelaku bisnis meningkatkan pertumbuhan bisnis mereka.","sameAs":["https:\/\/www.hashmicro.com\/id\/"],"gender":"Laki-laki","knowsAbout":["POS","penjualan","strategi penjualan"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Content Writer","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/oscar-renatha\/"}]}},"focus_keyword":"zone pricing","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/177728","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\/221"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=177728"}],"version-history":[{"count":11,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/177728\/revisions"}],"predecessor-version":[{"id":185022,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/177728\/revisions\/185022"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/177840"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=177728"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=177728"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=177728"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}