{"id":2597,"date":"2026-04-22T19:22:57","date_gmt":"2026-04-22T09:22:57","guid":{"rendered":"https:\/\/www.hashmicro.com\/au\/blog\/?p=2597"},"modified":"2026-06-02T16:51:39","modified_gmt":"2026-06-02T06:51:39","slug":"inventory-report","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/","title":{"rendered":"Inventory Report Explained: Types, Uses, and Best Practices"},"content":{"rendered":"<p data-start=\"313\" data-end=\"544\">An inventory report gives a clear view of what stock a business holds, where it sits, and how fast it moves. This visibility supports cash flow control, purchasing decisions, and reliable order fulfilment across sales channels.<\/p>\n<p data-start=\"546\" data-end=\"738\">For companies managing physical goods, knowing stock position at any moment helps prevent delays and wasted capital. It also allows teams to respond quickly when demand shifts or supply slows.<\/p>\n<p data-start=\"740\" data-end=\"939\">However, the real value comes from how the data is used. A well-prepared inventory report highlights inefficiencies, exposes dead stock, and supports confident planning across operations and finance.<\/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>An<a href=\"#what-is-an-inventory-report\"> inventory report provides a clear record<\/a> of stock levels, movements, and value, helping businesses maintain accuracy and control.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#why-inventory-reporting-matters-for-australian-businesses\">Inventory reporting reduces risk <\/a>by improving forecasting, supporting EOFY readiness, and controlling holding costs.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#types-of-inventory-reports\">Different inventory reports focus on<\/a> availability, valuation, turnover, and reorder planning to support daily operations.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p>Including quantities, SKUs, valuation, and supplier data <a href=\"#what-to-include-in-an-inventory-report\">ensures inventory reports remain actionable and reliable<\/a>.<\/p><\/div>\t\t\t\t<\/div>\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\tTable of Content:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div> -->\r\n\r\n<!-- <div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Table of Content<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\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\">Table of Content<\/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\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\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_top 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: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\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#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\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- ToC styling  -->\r\n<style>\r\n\t\/* 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\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<!-- 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\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 + 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 = 'Table of Content';\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 = 'Table of Content'; \/\/ 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 = 'Table of Content'; \/\/ 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 = 'Table of Content'; \/\/ 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\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<!-- START script lama -->\r\n<!-- <script>\r\n\/\/ \tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/ \t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\/\/ \t\tdropdownFixedTop.addEventListener('click', function() {\r\n\/\/ \t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\/\/ \t\t\tdropdownContent.classList.toggle('show');\r\n\/\/ \t\t});\r\n\r\n\/\/ \t\twindow.addEventListener('click', function(event) {\r\n\/\/ \t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\/\/ \t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\/\/ \t\t\t\tlistTocTop.classList.remove('show');\r\n\/\/ \t\t\t}\r\n\/\/ \t\t});\r\n\/\/ \t});\r\n\t\r\n\/\/ \tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\/\/ \tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n\/\/     var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n\/\/     window.addEventListener('scroll', function() {\r\n\/\/         if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(false);\r\n\/\/             triggered = true;\r\n\/\/         } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n\/\/             showSectionDropdownFixedTop(true);\r\n\/\/             triggered = false;\r\n\/\/         }\r\n\/\/     });\r\n\r\n\/\/     function isCompletelyScrolledPast(element) {\r\n\/\/         var elementTop = element.getBoundingClientRect().top;\r\n\/\/         var elementBottom = element.getBoundingClientRect().bottom;\r\n\/\/         return elementTop < 0 && elementBottom < 0;\r\n\/\/     }\r\n\r\n\/\/     function showSectionDropdownFixedTop(show) {\r\n\/\/ \t\tif (show) {\r\n\/\/ \t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\/\/ \t\t}\r\n\/\/     }\r\n<\/script> -->\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        } 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\t\t  pilihDaftarIsi.innerHTML = a.textContent;\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', 'list_toc_top']; \/\/ 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<!-- END script lama -->\r\n\t\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        } 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\t\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\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\r\n        Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\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        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\t\r\n        Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n\n\r\n    <div class=\"adjustable-banner-wrap\">\r\n        <a href=\"https:\/\/www.hashmicro.com\/au\/inventory?medium=moneysite-banner\" target=\"_blank\">\r\n            <img decoding=\"async\" loading=\"lazy\"\r\n                 src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/inventory_desktop_2.webp\"\r\n                 data-desktop-src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/inventory_desktop_2.webp\"\r\n                 data-mobile-src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/03\/inventory_mobile_2.webp\"\r\n                 alt=\"Inventory2\"\r\n                 class=\"responsive-image-banner\">\r\n\r\n            \r\n            <div class=\"adjustable-banner-overlay\" style=\"width: 58%\">\r\n                <p class=\"adjustable-banner-text\"><span class=\"adjustable-highlight\">Take control of inventory<\/span> with expert advice on accuracy and cost reduction.<\/p>\r\n                <div class=\"adjustable-banner-btn\">Schedule a Consultation<\/div>\r\n            <\/div>\r\n\r\n        <\/a>\r\n    <\/div>\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 id=\"what-is-an-inventory-report\"><strong>What Is an Inventory Report?<\/strong><\/h2>\n<p data-start=\"979\" data-end=\"1194\"><style>\r\n.qa-box {\r\n    background-color: #f7eaea;\r\n    border-left: 5px solid #af2828;\r\n    border-radius: 8px;\r\n    padding: 24px;\r\n    margin-bottom: 30px;\r\n    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\r\n}\r\n.qa-badge {\r\n    display: inline-block;\r\n    background-color: #af2828;\r\n    color: #ffffff;\r\n    padding: 6px 16px;\r\n    border-radius: 50px;\r\n    font-weight: 600;\r\n    font-size: 0.85rem;\r\n    margin-bottom: 16px;\r\n}\r\n.qa-title {\r\n    color: #1f2937;\r\n    font-size: 1.25rem;\r\n    font-weight: 700;\r\n    margin: 0 0 12px 0;\r\n    line-height: 1.4;\r\n}\r\n.qa-box p {\r\n    color: #4b5563;\r\n    font-size: 1rem;\r\n    line-height: 1.6;\r\n    margin-bottom: 24px;\r\n}\r\n.qa-box p:last-child {\r\n    margin-bottom: 0;\r\n}\r\n.qa-table-card {\r\n    background-color: #ffffff;\r\n    border-radius: 8px;\r\n    padding: 20px;\r\n    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);\r\n    overflow-x: auto;\r\n    border: 1px solid #e5e7eb;\r\n}\r\n.qa-table {\r\n    width: 100%;\r\n    border-collapse: collapse;\r\n    min-width: 500px;\r\n    border: none;\r\n}\r\n.qa-table th {\r\n    text-align: left;\r\n    color: #4b5563;\r\n    font-weight: 700;\r\n    padding: 12px;\r\n    border: none;\r\n    border-bottom: 1px solid #e5e7eb;\r\n}\r\n.qa-table td {\r\n    padding: 16px 12px;\r\n    border: none;\r\n    border-bottom: 1px solid #f3f4f6;\r\n    color: #1f2937;\r\n    font-size: 0.95rem;\r\n    vertical-align: middle;\r\n}\r\n.qa-table tr:last-child td {\r\n    border-bottom: none;\r\n}\r\n.col-software { font-weight: 700; color: #111; }\r\n.text-green { color: #16a34a; font-weight: 600; }\r\n.check-icon {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 22px;\r\n    height: 22px;\r\n    background-color: #22c55e;\r\n    color: white;\r\n    border-radius: 4px;\r\n    font-size: 14px;\r\n    font-weight: bold;\r\n}\r\n<\/style>\r\n<div class=\"qa-box\">\r\n    <div class=\"qa-badge\">Quick Answer<\/div>\r\n        <div class=\"qa-title\">What is an Inventory Report?<\/div>\r\n            <p>An inventory report provides a detailed view of stock levels, inventory movements, and inventory value by tracking available, committed, and reorder stock. It helps businesses optimise stock levels, prevent stockouts, identify fast-moving items, and control inventory costs.<\/p>\r\n        <\/div><\/p>\n<p data-start=\"979\" data-end=\"1194\">An inventory report is a structured record that summarises stock levels, movements, and inventory performance over a set period. It helps a business understand both the physical and financial condition of its stock.<\/p>\n<p data-start=\"1196\" data-end=\"1384\">The report consolidates data such as quantities, locations, costs, and sales activity. As a result, decision-makers can manage purchasing, production, and fulfilment with greater accuracy.<\/p>\n<p data-start=\"1386\" data-end=\"1585\">In the past, companies relied on manual spreadsheets updated after stocktakes. Today, most inventory reports pull data directly from an <a href=\"https:\/\/www.hashmicro.com\/au\/inventory\">inventory report system<\/a> and refresh automatically as transactions occur.<\/p>\n<p data-start=\"1587\" data-end=\"1748\">Although formats vary, the purpose stays the same across industries. An inventory report provides one reliable source of truth for what a company owns and sells.<\/p>\n<h2 id=\"why-inventory-reporting-matters-for-australian-businesses\"><strong>Why Inventory Reporting Matters for Australian Businesses<\/strong><\/h2>\n<p><span data-sheets-root=\"1\">\r\n    <div class=\"hashy-banner-wrap\" data-catimg=\"Inventory\">\r\n        <a class=\"hashy-banner-link\" href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/?medium=moneysite-banner&promocampaign=hashy-ai\" target=\"_blank\" rel=\"noopener\" aria-label=\"See It Live\">\r\n        <div class=\"hashy-banner-frame\">\r\n            <div class=\"hashy-banner-stage\">\r\n                <!-- Background stack -->\r\n                <div class=\"hashy-card-bg\" aria-hidden=\"true\">\r\n                    <span class=\"hashy-card-bg-fill\"><\/span>\r\n                    <img decoding=\"async\" class=\"hashy-card-bg-stars\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/banner-bg-texture.webp\" alt=\"\" loading=\"lazy\" aria-hidden=\"true\">\r\n                    <img decoding=\"async\" class=\"hashy-card-bg-light\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/banner-light-beam-787912.webp\" alt=\"\" loading=\"lazy\" aria-hidden=\"true\">\r\n                    <span class=\"hashy-card-bg-glow\"><\/span>\r\n                <\/div>\r\n\r\n                <!-- Sparkle decorations -->\r\n                <span class=\"hashy-card-deco hashy-card-deco-1\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 121 35\" preserveAspectRatio=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <g opacity=\".48\" filter=\"url(#hcd1)\"><rect width=\"102\" height=\"24\" transform=\"matrix(-1.006 0 0 1.006 115.66 5.34)\" fill=\"url(#hcd1g)\"\/><\/g>\r\n                        <path d=\"M15.27 9.03 13.35 4.34l-1.92 4.69a13.2 13.2 0 0 1-6.77 6.61L0 17.56l4.66 1.88a13.2 13.2 0 0 1 6.77 6.81l1.92 4.66 1.92-4.66a13.2 13.2 0 0 1 6.77-6.81l4.66-1.88-4.66-1.92a13.2 13.2 0 0 1-6.77-6.61z\" fill=\"#fff\"\/>\r\n                        <defs>\r\n                            <filter id=\"hcd1\" x=\"7.7\" y=\"0\" width=\"113.27\" height=\"34.82\" filterUnits=\"userSpaceOnUse\"><feGaussianBlur stdDeviation=\"2.66\"\/><\/filter>\r\n                            <linearGradient id=\"hcd1g\" x1=\"175.31\" y1=\"12\" x2=\"0\" y2=\"12\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"\/><stop offset=\"1\" stop-color=\"#0B0B0F\"\/><\/linearGradient>\r\n                        <\/defs>\r\n                    <\/svg>\r\n                <\/span>\r\n                <span class=\"hashy-card-deco hashy-card-deco-2\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 121 35\" preserveAspectRatio=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <g opacity=\".48\" filter=\"url(#hcd2)\"><rect x=\"5.34\" y=\"5.34\" width=\"102.59\" height=\"24.14\" fill=\"url(#hcd2g)\"\/><\/g>\r\n                        <path d=\"M105.73 9.03 107.65 4.34l1.92 4.69a13.2 13.2 0 0 0 6.77 6.61L121 17.56l-4.66 1.88a13.2 13.2 0 0 0-6.77 6.81l-1.92 4.66-1.92-4.66a13.2 13.2 0 0 0-6.77-6.81l-4.66-1.88 4.66-1.92a13.2 13.2 0 0 0 6.77-6.61z\" fill=\"#fff\"\/>\r\n                        <defs>\r\n                            <filter id=\"hcd2\" x=\"0\" y=\"0\" width=\"113.27\" height=\"34.82\" filterUnits=\"userSpaceOnUse\"><feGaussianBlur stdDeviation=\"2.66\"\/><\/filter>\r\n                            <linearGradient id=\"hcd2g\" x1=\"181.66\" y1=\"17.47\" x2=\"5.34\" y2=\"17.47\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"\/><stop offset=\"1\" stop-color=\"#232126\"\/><\/linearGradient>\r\n                        <\/defs>\r\n                    <\/svg>\r\n                <\/span>\r\n                <span class=\"hashy-card-deco hashy-card-deco-3\" aria-hidden=\"true\">\r\n                    <svg viewBox=\"0 0 35 95\" preserveAspectRatio=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                        <g opacity=\".48\" filter=\"url(#hcd3)\"><rect x=\"29.52\" y=\"5.35\" width=\"76.56\" height=\"24.18\" transform=\"rotate(90 29.52 5.35)\" fill=\"url(#hcd3g)\"\/><\/g>\r\n                        <path d=\"M26.26 79.7 30.96 81.63 26.26 83.55a8.7 8.7 0 0 0-6.62 6.78L17.72 95l-1.89-4.67a8.7 8.7 0 0 0-4.72-4.62L4.34 81.63 9.01 79.7a8.7 8.7 0 0 0 4.72-4.62l1.89-4.67 1.92 4.67a8.7 8.7 0 0 0 6.62 6.78z\" fill=\"#fff\"\/>\r\n                        <defs>\r\n                            <filter id=\"hcd3\" x=\"0\" y=\"0\" width=\"34.88\" height=\"87.26\" filterUnits=\"userSpaceOnUse\"><feGaussianBlur stdDeviation=\"2.66\"\/><\/filter>\r\n                            <linearGradient id=\"hcd3g\" x1=\"161.1\" y1=\"17.5\" x2=\"29.52\" y2=\"17.5\" gradientUnits=\"userSpaceOnUse\"><stop stop-color=\"#fff\"\/><stop offset=\"1\" stop-color=\"#232126\"\/><\/linearGradient>\r\n                        <\/defs>\r\n                    <\/svg>\r\n                <\/span>\r\n\r\n                <div class=\"hashy-card-inner\">\r\n                    <!-- Left column: logo + headline + CTA -->\r\n                    <div class=\"hashy-card-left\">\r\n                        <img decoding=\"async\" class=\"hashy-card-logo\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/hashmicro-logo-f0090c.webp\" alt=\"HashMicro\" width=\"240\" height=\"32\" loading=\"lazy\">\r\n                        <div class=\"hashy-card-text-block\">\r\n                            <p class=\"hashy-card-title\"><span class=\"hashy-fg-grad\">Hashy AI<\/span> reorders the right stock before you even notice<\/p>\r\n                            <span class=\"hashy-card-cta\">\r\n                                <span class=\"hashy-card-cta-label\">See It Live<\/span>\r\n                                <span class=\"hashy-card-cta-spark\" aria-hidden=\"true\">\r\n                                    <svg viewBox=\"0 0 20 21\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20\" height=\"21\">\r\n                                        <path d=\"M6.87 6.43 8.02 3.62l1.14 2.81a7 7 0 0 0 4.07 4.07l2.8 1.14-2.8 1.14a7 7 0 0 0-4.07 4.07l-1.14 2.81-1.14-2.81A7 7 0 0 0 2.8 12.78L0 11.64l2.8-1.14a7 7 0 0 0 4.07-4.07z\" fill=\"#fff\"\/>\r\n                                        <path d=\"m15.1 1.5.61-1.5.61 1.5a3.7 3.7 0 0 0 2.07 2.18l1.5.61-1.5.61a3.7 3.7 0 0 0-2.07 2.18l-.61 1.5-.61-1.5a3.7 3.7 0 0 0-2.07-2.18l-1.5-.61 1.5-.61A3.7 3.7 0 0 0 15.1 1.5z\" fill=\"#fff\"\/>\r\n                                        <path d=\"m14.66 15.76.4-.98.4.98a2.4 2.4 0 0 0 1.42 1.42l.98.4-.98.4a2.4 2.4 0 0 0-1.42 1.42l-.4.98-.4-.98a2.4 2.4 0 0 0-1.42-1.42l-.98-.4.98-.4a2.4 2.4 0 0 0 1.42-1.42z\" fill=\"#fff\"\/>\r\n                                    <\/svg>\r\n                                <\/span>\r\n                            <\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- Right column: mascot + chat window -->\r\n                    <div class=\"hashy-card-right\" aria-hidden=\"true\">\r\n                        <img decoding=\"async\" class=\"hashy-card-mascot\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/hashy-mascot-af02ad.webp\" alt=\"\" width=\"128\" height=\"194\" loading=\"lazy\">\r\n                        <div class=\"hashy-card-chat-window\">\r\n                            <div class=\"hashy-card-chat-header\">\r\n                                <div class=\"hashy-card-chat-id\">\r\n                                    <div class=\"hashy-card-chat-avatar\">\r\n                                        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"36\" height=\"36\" loading=\"lazy\">\r\n                                    <\/div>\r\n                                    <div class=\"hashy-card-chat-meta\">\r\n                                        <p class=\"hashy-card-chat-name\">Hashy AI<\/p>\r\n                                        <p class=\"hashy-card-chat-role\">Your AI Assistant<\/p>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <div class=\"hashy-card-chat-dots\" aria-hidden=\"true\">\r\n                                    <span><\/span><span><\/span><span><\/span>\r\n                                <\/div>\r\n                            <\/div>\r\n                            <div class=\"hashy-card-chat-body\">\r\n                                <div class=\"hashy-card-chat-stream\"\r\n                                     data-avatar-hashy=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\"\r\n                                     data-avatar-user=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hannah.webp\">\r\n                                <!-- 1. Hashy: Low Stock Warning card (Light Switch W324) -->\r\n                                <div class=\"hashy-msg is-incoming\" data-step=\"1\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white hashy-bubble-card\">\r\n                                        <div class=\"hashy-stock-card\">\r\n                                            <div class=\"hashy-stock-head\">\r\n                                                <span>Low Stock Warning<\/span>\r\n                                                <svg class=\"hashy-warn-icon\" viewBox=\"0 0 20 20\" width=\"20\" height=\"20\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M4.43 8.97C6.86 4.66 8.07 2.5 10 2.5s3.14 2.16 5.57 6.47l.3.54c2.02 3.58 3.03 5.37 2.12 6.68-.91 1.31-3.17 1.31-7.69 1.31H9.7c-4.52 0-6.78 0-7.69-1.31-.92-1.31.09-3.1 2.11-6.68l.3-.54zM10 6.04a.62.62 0 0 1 .62.63v4.16a.62.62 0 0 1-1.25 0V6.67a.62.62 0 0 1 .63-.63zm0 8.13a.83.83 0 1 0 0-1.67.83.83 0 0 0 0 1.67z\" fill=\"#BD1E2D\"\/><\/svg>\r\n                                            <\/div>\r\n                                            <div class=\"hashy-stock-divider\"><\/div>\r\n                                            <div class=\"hashy-stock-row\">\r\n                                                <div class=\"hashy-stock-thumb\">\r\n                                                    <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/product-lightswitch.webp\" alt=\"\" loading=\"lazy\">\r\n                                                <\/div>\r\n                                                <div class=\"hashy-stock-info\">\r\n                                                    <p class=\"hashy-stock-name\">Light Switch W324<\/p>\r\n                                                    <p class=\"hashy-stock-sku\">LS-2852<\/p>\r\n                                                    <span class=\"hashy-stock-pill hashy-stock-pill-ok\">Last Updated: 2 Seconds Ago<\/span>\r\n                                                <\/div>\r\n                                            <\/div>\r\n                                            <div class=\"hashy-stock-progress\">\r\n                                                <div class=\"hashy-stock-bar\"><span style=\"width:20%\"><\/span><\/div>\r\n                                                <span class=\"hashy-stock-pill hashy-stock-pill-low\">92 pcs<\/span>\r\n                                            <\/div>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <!-- 2. Projection -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"2\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white\"><span class=\"hashy-text-purple\"><strong>Light Switch W324<\/strong><\/span> is projected to run out in 3 days.<\/div>\r\n                                <\/div>\r\n                                <!-- 3. PO draft prepared + document card -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"3\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white hashy-bubble-card hashy-bubble-doc\">\r\n                                        <div class=\"hashy-doc-tag\">\r\n                                            <svg viewBox=\"0 0 15 15\" width=\"15\" height=\"15\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15 7.5A7.5 7.5 0 1 1 0 7.5a7.5 7.5 0 0 1 15 0zm-4.48-2.27a.55.55 0 0 1 0 .8L6.77 9.77a.55.55 0 0 1-.8 0l-1.5-1.5a.55.55 0 0 1 .8-.8l1.1 1.1 3.36-3.34a.55.55 0 0 1 .79 0z\" fill=\"#2FB71C\"\/><\/svg>\r\n                                            <p><span class=\"hashy-text-purple\"><strong>Purchase order<\/strong><\/span> draft prepared<\/p>\r\n                                        <\/div>\r\n                                        \r\n                                        <div class=\"hashy-doc-card\">\r\n                                            <div class=\"hashy-doc-preview\">\r\n                                                <div class=\"hashy-doc-head\">\r\n                                                    <div class=\"hashy-doc-head-text\">\r\n                                                        <p class=\"hashy-doc-title\">Purchase order<\/p>\r\n                                                        <p class=\"hashy-doc-num\">Purchase order Number #PO-3162-01<\/p>\r\n                                                    <\/div>\r\n                                                    <img decoding=\"async\" class=\"hashy-doc-logo\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/doc-logo-inventory.webp\" alt=\"\" loading=\"lazy\">\r\n                                                <\/div>\r\n                                                <div class=\"hashy-doc-divider\"><\/div>\r\n                                                <div class=\"hashy-doc-fromto\">\r\n                                                    <div>\r\n                                                        <p class=\"hashy-doc-label\">From:<\/p>\r\n                                                        <p class=\"hashy-doc-co\">TerraCore Materials<\/p>\r\n                                                        <p class=\"hashy-doc-addr\">789 Enterprise Avenue, Floor 2,<br>Metropolis, Stockholm<\/p>\r\n                                                    <\/div>\r\n                                                    <div>\r\n                                                        <p class=\"hashy-doc-label\">to:<\/p>\r\n                                                        <p class=\"hashy-doc-co\">Buildronix Materials<\/p>\r\n                                                        <p class=\"hashy-doc-addr\">45 Evergreen Lane, Suite 102,<br>Brookfield, NY, 11234<\/p>\r\n                                                    <\/div>\r\n                                                <\/div>\r\n                                            <\/div>\r\n                                            <div class=\"hashy-doc-attach\">\r\n                                                <span class=\"hashy-doc-pdf-badge\" aria-hidden=\"true\">\r\n                                                    <svg viewBox=\"0 0 20 25\" width=\"20\" height=\"25\"><path d=\"M2 0h12l4 5v18a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2z\" fill=\"#E5252A\"\/><path d=\"M14 0v5h4z\" fill=\"#FF5757\"\/><text x=\"4\" y=\"22\" font-family=\"Arial,sans-serif\" font-weight=\"700\" font-size=\"6\" fill=\"#fff\">PDF<\/text><\/svg>\r\n                                                <\/span>\r\n                                                <div class=\"hashy-doc-attach-meta\">\r\n                                                    <p class=\"hashy-doc-file\">Purchase order [21\/04\/2026].pdf<\/p>\r\n                                                    <p class=\"hashy-doc-size\">1MB, PDF File<\/p>\r\n                                                <\/div>\r\n                                            <\/div>\r\n                                            <span class=\"hashy-doc-cta\">View Document<\/span>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                <\/div>\r\n                                <!-- 4. User question (right) -->\r\n                                <div class=\"hashy-msg is-outgoing\" data-step=\"4\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-purple\">Is the quantity <strong>already optimized?<\/strong><\/div>\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar hashy-msg-avatar-bordered\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hannah.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                <\/div>\r\n                                <!-- 5. Hashy answer -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"5\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white\">Yes, based on <span class=\"hashy-text-purple\"><strong>demand trend &amp; lead time.<\/strong><\/span><\/div>\r\n                                <\/div>\r\n                                <!-- 6. User approval (right) -->\r\n                                <div class=\"hashy-msg is-outgoing\" data-step=\"6\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-purple\">Approved. Please<strong> inform the supplier.<\/strong><\/div>\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar hashy-msg-avatar-bordered\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hannah.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                <\/div>\r\n                                <!-- 7. RFQ confirmation -->\r\n                                <div class=\"hashy-msg is-incoming hashy-msg-narrow\" data-step=\"7\">\r\n                                    <img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"https:\/\/www.hashmicro.com\/assets\/images\/hashy-ai-banner\/figma\/avatar-hashy.webp\" alt=\"\" width=\"40\" height=\"40\" loading=\"lazy\">\r\n                                    <div class=\"hashy-bubble hashy-bubble-white\">\r\n                                        <span class=\"hashy-inline-icon\">\r\n                                            <svg viewBox=\"0 0 18 18\" width=\"16\" height=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M16.5 9A7.5 7.5 0 1 1 1.5 9a7.5 7.5 0 0 1 15 0zm-4.48-2.27a.55.55 0 0 1 0 .8L8.27 11.27a.55.55 0 0 1-.8 0l-1.5-1.5a.55.55 0 0 1 .8-.8l1.1 1.1 3.4-3.34a.55.55 0 0 1 .76 0z\" fill=\"#2FB71C\"\/><\/svg>\r\n                                        <\/span>\r\n                                        Request for Quotation is <span class=\"hashy-text-purple\"><strong>sent to 15 vendors.<\/strong><\/span>\r\n                                    <\/div>\r\n                                <\/div><\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <\/a>\r\n    <\/div>\r\n\r\n    <style>\r\n        \/* ============================================================\r\n         * Hashy banner \u2014 Figma 5181:2678 (1440 \u00d7 508). Stage rendered\r\n         * at exact Figma px values; outer wrapper scales it to fit any\r\n         * body-post container width via container queries.\r\n         * ============================================================ *\/\r\n        .hashy-banner-wrap {\r\n            container-type: inline-size !important;\r\n            container-name: hashybnr !important;\r\n            position: relative !important;\r\n            display: block !important;\r\n            width: 100% !important;\r\n            max-width: 860px !important;        \/* locks the banner at the \"wider\r\n                                        blog 860px\" preview proportions\r\n                                        regardless of body-post width *\/\r\n            margin: 16px auto !important;\r\n            font-family: Poppins, \"Helvetica Neue\", Arial, sans-serif !important;\r\n        }\r\n\r\n        \/* Whole-banner link \u2014 wraps the entire frame so any click on the\r\n           card (background, mascot, chat preview) routes to the CTA URL.\r\n           The inner CTA is now a non-anchor span styled as a button. *\/\r\n        .hashy-banner-link {\r\n            display: block !important;\r\n            color: inherit !important;\r\n            text-decoration: none !important;\r\n            cursor: pointer !important;\r\n        }\r\n\r\n        .hashy-banner-frame {\r\n            position: relative !important;\r\n            width: 100% !important;\r\n            aspect-ratio: 1440 \/ 508 !important;\r\n            border-radius: 16px !important;\r\n            overflow: hidden !important;\r\n            background: #111 !important;\r\n            box-shadow: 0 12px 40px rgba(0, 0, 0, .35) !important;\r\n        }\r\n\r\n        \/* The stage is rendered at the exact Figma frame size. The\r\n           transform: scale() shrinks it proportionally to fit the\r\n           container while preserving every pixel-level token.\r\n           tan(atan2(y, x)) is the standard CSS trig trick to turn the\r\n           length ratio (100cqw \/ 1440px) into a unitless number that\r\n           scale() will accept. *\/\r\n        .hashy-banner-stage {\r\n            position: absolute !important;\r\n            top: 0 !important; left: 0 !important;\r\n            width: 1440px !important;\r\n            height: 508px !important;\r\n            transform-origin: top left !important;\r\n            transform: scale(tan(atan2(100cqw, 1440px))) !important;\r\n        }\r\n        \/* Fallback for browsers without CSS Trig support (pre-2023): the\r\n           stage simply renders left-aligned at design size with overflow\r\n           clipped, which is still readable. *\/\r\n        @supports not (transform: scale(tan(atan2(1px, 1px)))) {\r\n            .hashy-banner-stage { transform: none !important; }\r\n        }\r\n        .hashy-banner-stage * { box-sizing: border-box !important; }\r\n        \/* Defensive overrides \u2014 Hashmicro WP theme rules like\r\n           `.tagdiv-type img { margin-bottom: 21px }` (specificity 0,1,1)\r\n           push our avatars \/ mascot \/ logo out of alignment. Selectors\r\n           below repeat the wrapper class so specificity is (0,2,1) and\r\n           wins regardless of theme load order. *\/\r\n        .hashy-banner-wrap.hashy-banner-wrap img,\r\n        .hashy-banner-stage.hashy-banner-stage img {\r\n            margin: 0 !important;\r\n            padding: 0 !important;\r\n            border: 0 !important;\r\n            max-width: none !important;\r\n            background: transparent !important;\r\n            vertical-align: middle !important;\r\n            box-shadow: none !important;\r\n        }\r\n        .hashy-banner-wrap.hashy-banner-wrap p,\r\n        .hashy-banner-wrap.hashy-banner-wrap h1, .hashy-banner-wrap.hashy-banner-wrap h2,\r\n        .hashy-banner-wrap.hashy-banner-wrap h3, .hashy-banner-wrap.hashy-banner-wrap h4,\r\n        .hashy-banner-wrap.hashy-banner-wrap h5, .hashy-banner-wrap.hashy-banner-wrap h6 {\r\n            margin: 0 !important;\r\n            padding: 0 !important;\r\n            text-indent: 0 !important;\r\n            background: transparent !important;\r\n        }\r\n        .hashy-banner-wrap.hashy-banner-wrap a { text-decoration: none !important; }\r\n\r\n        \/* \u2500\u2500 Background layers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-bg {\r\n            position: absolute !important; inset: 0 !important;\r\n            border-radius: 16px !important;\r\n            overflow: hidden !important;\r\n            pointer-events: none !important;\r\n            z-index: 0 !important;\r\n        }\r\n        .hashy-card-bg-fill { position: absolute !important; inset: 0 !important; background: #111 !important; }\r\n        .hashy-card-bg-stars {\r\n            position: absolute !important; inset: 0 !important;\r\n            width: 100% !important; height: 100% !important;\r\n            object-fit: cover !important;\r\n            mix-blend-mode: screen !important;\r\n            opacity: .56 !important;\r\n        }\r\n        .hashy-card-bg-light {\r\n            position: absolute !important;\r\n            inset: -6px 0 auto 0 !important;\r\n            width: 100% !important;\r\n            height: calc(100% + 12px) !important;\r\n            object-fit: cover !important;\r\n            mix-blend-mode: plus-lighter !important;\r\n            opacity: .54 !important;\r\n            filter: blur(16px) !important;\r\n        }\r\n        .hashy-card-bg-glow {\r\n            position: absolute !important;\r\n            left: calc(50% - 480px) !important;\r\n            bottom: -110px !important;\r\n            width: 961px !important;\r\n            height: 222px !important;\r\n            border-radius: 50% !important;\r\n            background: radial-gradient(ellipse 480px 111px at center, rgba(160,102,242,1) 0%, rgba(77,77,77,0) 100%) !important;\r\n            filter: blur(80px) !important;\r\n            opacity: .8 !important;\r\n            pointer-events: none !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 Sparkle decorations (Figma px positions) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-deco {\r\n            position: absolute !important;\r\n            display: block !important;\r\n            pointer-events: none !important;\r\n            z-index: 1 !important;\r\n            animation: hashyDecoFloat 4s ease-in-out infinite !important;\r\n        }\r\n        .hashy-card-deco svg { width: 100% !important; height: 100% !important; display: block !important; }\r\n        .hashy-card-deco-1 { left: 334px !important; top: 399px !important; width: 121px !important; height: 35px !important; }\r\n        .hashy-card-deco-2 { left: 615px !important; top: 72px !important;  width: 121px !important; height: 35px !important; animation-delay: 1.3s !important; }\r\n        .hashy-card-deco-3 { right: 50.57px !important; top: -6px !important; width: 35px !important;  height: 95px !important; animation-delay: 2.4s !important; }\r\n        @keyframes hashyDecoFloat {\r\n            0%, 100% { transform: translateY(0)    scale(1);    opacity: .9; }\r\n            50%      { transform: translateY(-3px) scale(1.05); opacity: 1;  }\r\n        }\r\n\r\n        \/* \u2500\u2500 Inner row \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-inner {\r\n            position: relative !important;\r\n            z-index: 2 !important;\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            gap: 48px !important;\r\n            padding: 64px 70px !important;\r\n            height: 100% !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 Left column \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-left {\r\n            flex: 0 0 auto !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: flex-start !important;\r\n            gap: 32px !important;             \/* logo\u2192text tightened from 64 *\/\r\n            max-width: 660px !important;      \/* fits the longer Accounting copy on 3 lines *\/\r\n        }\r\n        .hashy-card-logo {\r\n            display: block !important;\r\n            height: 31.28px !important;\r\n            width: auto !important;\r\n        }\r\n        .hashy-card-text-block {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: flex-start !important;\r\n            gap: 32px !important;             \/* text\u2192button tightened from 56,\r\n                                                 brings CTA up + farther from\r\n                                                 banner bottom edge *\/\r\n        }\r\n        .hashy-card-title {\r\n            margin: 0 !important;\r\n            font-family: Poppins, \"Helvetica Neue\", Arial, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 46px !important;\r\n            line-height: 1.25 !important;\r\n            color: #fff !important;\r\n            letter-spacing: -0.005em !important;\r\n            max-width: 660px !important;      \/* match left-column widening *\/\r\n        }\r\n        .hashy-banner-stage .hashy-fg-grad {\r\n            display: inline-block !important;\r\n            background: linear-gradient(65deg, #8839E7 0%, #E391F4 74%, #8839E7 100%) !important;\r\n            -webkit-background-clip: text !important;\r\n            background-clip: text !important;\r\n            -webkit-text-fill-color: transparent !important;\r\n            color: transparent !important;\r\n            font-weight: 700 !important;\r\n        }\r\n\r\n        \/* CTA \u2014 bumped up from Figma (14\u00d748 \/ 20px) so it stays visually\r\n           prominent after the stage scale-down (~0.44\u00d7 at 628 container).\r\n           Now: padding 22\u00d772, font 30, gap 14, sparkle 28. *\/\r\n        .hashy-card-cta {\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            gap: 14px !important;\r\n            padding: 22px 72px !important;\r\n            background:\r\n                linear-gradient(#8839E7, #8839E7) padding-box,\r\n                linear-gradient(129deg, #fff 5%, rgba(255,255,255,0) 28%, rgba(255,255,255,0) 72%, #fff 94%) border-box !important;\r\n            border: 3px solid transparent !important;\r\n            border-radius: 99px !important;\r\n            color: #fff !important;\r\n            font-family: Poppins, \"Helvetica Neue\", Arial, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 30px !important;\r\n            line-height: 1.2 !important;\r\n            text-decoration: none !important;\r\n            box-shadow: 0 8px 28px rgba(136, 57, 231, .45) !important;\r\n            transition: transform .25s ease, box-shadow .25s ease, filter .25s ease !important;\r\n        }\r\n        .hashy-card-cta:hover {\r\n            transform: translateY(-2px) !important;\r\n            filter: brightness(1.08) !important;\r\n            color: #fff !important;\r\n            text-decoration: none !important;\r\n            box-shadow: 0 14px 36px rgba(136, 57, 231, .6) !important;\r\n        }\r\n        .hashy-card-cta-spark { display: inline-flex !important; }\r\n        .hashy-card-cta-spark svg { display: block !important; width: 28px !important; height: 29px !important; }\r\n\r\n        \/* \u2500\u2500 Right column (mascot + chat) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 *\/\r\n        .hashy-card-right {\r\n            position: relative !important;\r\n            flex: 0 0 auto !important;\r\n            width: 562px !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: center !important;\r\n            padding-bottom: 24px !important;\r\n        }\r\n        .hashy-banner-wrap.hashy-banner-wrap img.hashy-card-mascot,\r\n        .hashy-banner-stage.hashy-banner-stage img.hashy-card-mascot,\r\n        .hashy-card-mascot {\r\n            display: block !important;\r\n            width: 128px !important;\r\n            height: 194.4px !important;\r\n            margin: 0 0 -28px !important;        \/* overlap chat-window by 28px *\/\r\n            position: relative !important;\r\n            z-index: 1 !important;               \/* sits BEHIND chat window so the\r\n                                         bottom edge is hidden, giving\r\n                                         the peek-from-behind effect *\/\r\n            animation: hashyMascotBounce 3.5s ease-in-out infinite !important;\r\n            filter: drop-shadow(0 8px 24px rgba(0,0,0,.45)) !important;\r\n        }\r\n        @keyframes hashyMascotBounce {\r\n            0%, 100% { transform: translateY(0)    rotate(-2deg); }\r\n            50%      { transform: translateY(-6px) rotate( 2deg); }\r\n        }\r\n\r\n        .hashy-card-chat-window {\r\n            position: relative !important;\r\n            z-index: 2 !important;               \/* on top of mascot so the bottom\r\n                                         edge of the mascot is hidden\r\n                                         behind it (peek-through effect) *\/\r\n            width: 100% !important;\r\n            height: 278px !important;\r\n            background: rgba(255, 255, 255, 0.24) !important;\r\n            border-radius: 12px !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 20px !important;\r\n            padding: 0 0 10px !important;\r\n            overflow: hidden !important;\r\n            box-shadow:\r\n                0 0 24px rgba(255,255,255,0.08),\r\n                0 0 40px rgba(255,255,255,0.08) !important;\r\n            backdrop-filter: blur(4px) !important;\r\n            -webkit-backdrop-filter: blur(4px) !important;\r\n        }\r\n        .hashy-card-chat-window::before {\r\n            content: \"\" !important;\r\n            position: absolute !important; inset: 0 !important;\r\n            border-radius: inherit !important;\r\n            padding: 3px !important;\r\n            background: linear-gradient(134deg, #fff 0%, rgba(255,255,255,0.16) 26%, rgba(255,255,255,0.16) 77%, #fff 100%) !important;\r\n            -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0) !important;\r\n            -webkit-mask-composite: xor !important;\r\n                    mask-composite: exclude !important;\r\n            pointer-events: none !important;\r\n            z-index: 3 !important;\r\n        }\r\n\r\n        \/* Chat header \u2014 increased top\/bottom padding (10\u219216) to keep\r\n           the avatar visibly clear of the dark header edges. *\/\r\n        .hashy-card-chat-header {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            padding: 16px 20px !important;\r\n            background: #111 !important;\r\n            border-radius: 13.474px 13.474px 0 0 !important;\r\n            flex-shrink: 0 !important;\r\n            position: relative !important;\r\n            z-index: 1 !important;\r\n        }\r\n        .hashy-card-chat-id {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 11px !important;\r\n        }\r\n        .hashy-card-chat-avatar {\r\n            width: 40px !important; height: 40px !important;\r\n            border-radius: 50% !important;\r\n            display: block !important;\r\n            flex-shrink: 0 !important;\r\n            overflow: hidden !important;\r\n        }\r\n        .hashy-card-chat-avatar img {\r\n            display: block !important;\r\n            width: 100% !important; height: 100% !important;\r\n            border-radius: 50% !important;\r\n            object-fit: cover !important;\r\n        }\r\n        \/* Two-line meta block \u2014 height locked to avatar so flex-center\r\n           on the parent aligns avatar mid-Y with text mid-Y exactly. *\/\r\n        .hashy-card-chat-meta {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            justify-content: center !important;\r\n            align-items: flex-start !important;\r\n            height: 40px !important;\r\n            text-align: left !important;\r\n            line-height: 1.15 !important;\r\n        }\r\n        .hashy-card-chat-name {\r\n            margin: 0 !important;\r\n            color: #fff !important;\r\n            font-weight: 500 !important;\r\n            font-size: 17px !important;\r\n            line-height: 1.2 !important;\r\n            text-align: left !important;\r\n        }\r\n        .hashy-card-chat-role {\r\n            margin: 2px 0 0 !important;\r\n            color: #fff !important;\r\n            font-weight: 400 !important;\r\n            font-size: 11.5px !important;\r\n            line-height: 1.2 !important;\r\n            text-align: left !important;\r\n            opacity: .85 !important;\r\n        }\r\n        .hashy-card-chat-dots { display: inline-flex !important; align-items: center !important; gap: 8px !important; padding: 0 4px !important; }\r\n        .hashy-card-chat-dots span { width: 10.12px !important; height: 10.12px !important; border-radius: 50% !important; background: #d9d9d9 !important; }\r\n\r\n        \/* Chat body \/ stream *\/\r\n        .hashy-card-chat-body { position: relative !important; flex: 1 1 auto !important; min-height: 0 !important; overflow: hidden !important; }\r\n        .hashy-card-chat-stream {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 20px !important;\r\n            will-change: transform !important;\r\n            transition: transform .9s cubic-bezier(.2,.7,.2,1) !important;\r\n        }\r\n        .hashy-card-chat-stream.no-transition,\r\n        .hashy-card-chat-stream.no-transition .hashy-msg { transition: none !important; }\r\n\r\n        \/* Message rows \u2014 softened easing + longer transitions for a calmer\r\n           reveal cadence. Bubble drops in from -10px with fade. *\/\r\n        .hashy-msg {\r\n            display: flex !important;\r\n            align-items: flex-end !important;\r\n            gap: 18px !important;\r\n            padding: 0 28px !important;\r\n            opacity: 0 !important;\r\n            transform: translateY(-10px) !important;\r\n            transition: opacity .55s cubic-bezier(.16,.84,.32,1),\r\n                        transform .65s cubic-bezier(.18,.86,.34,1.04) !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-msg.is-revealed { opacity: 1 !important; transform: translateY(0) !important; }\r\n        .hashy-msg.is-incoming { justify-content: flex-start !important; }\r\n        .hashy-msg.is-outgoing { justify-content: flex-end !important; padding: 0 28px 0 0 !important; }\r\n        .hashy-msg.hashy-msg-narrow { padding: 0 24px !important; }\r\n\r\n        .hashy-msg-avatar {\r\n            display: block !important;\r\n            width: 40px !important; height: 40px !important;\r\n            border-radius: 50% !important;\r\n            object-fit: cover !important;\r\n            flex-shrink: 0 !important;\r\n            background: #fff !important;\r\n        }\r\n        .hashy-msg-avatar-bordered {\r\n            border: 1.82px solid #fff !important;\r\n            background: #8839E7 !important;\r\n        }\r\n\r\n        \/* Bubbles *\/\r\n        .hashy-bubble {\r\n            position: relative !important;\r\n            padding: 10px 14px !important;\r\n            border-radius: 5px !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 14.5px !important;\r\n            line-height: 1.4 !important;\r\n            box-shadow: 0 1px 2px rgba(0,0,0,.18) !important;\r\n            max-width: 320px !important;\r\n        }\r\n        .hashy-bubble strong { font-weight: 700 !important; }\r\n\r\n        .hashy-bubble-white { background: #fff !important; color: #353535 !important; }\r\n        .hashy-bubble-white::before {\r\n            content: \"\" !important;\r\n            position: absolute !important;\r\n            left: -7px !important; top: 0 !important;\r\n            width: 0 !important; height: 0 !important;\r\n            border-style: solid !important;\r\n            border-width: 0 17px 16px 0 !important;\r\n            border-color: transparent #fff transparent transparent !important;\r\n        }\r\n        .hashy-text-purple { color: #8839E7 !important; font-weight: 800 !important; }\r\n\r\n        .hashy-bubble-purple { background: #8839E7 !important; color: #fff !important; }\r\n        .hashy-bubble-purple::after {\r\n            content: \"\" !important;\r\n            position: absolute !important;\r\n            right: -7px !important; top: 0 !important;\r\n            width: 0 !important; height: 0 !important;\r\n            border-style: solid !important;\r\n            border-width: 0 0 16px 17px !important;\r\n            border-color: transparent transparent #8839E7 transparent !important;\r\n        }\r\n        .hashy-bubble-wide { width: 380px !important; max-width: 100% !important; }\r\n\r\n        .hashy-bubble-typing {\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            gap: 4px !important;\r\n            padding: 9px 14px !important;\r\n            min-width: 50px !important;\r\n        }\r\n        .hashy-bubble-typing .hashy-dot {\r\n            width: 6px !important; height: 6px !important;\r\n            border-radius: 50% !important;\r\n            background: #fff !important;\r\n            opacity: .9 !important;\r\n            animation: hashyDot 1.2s ease-in-out infinite !important;\r\n        }\r\n        \/* White bubble typing dots \u2014 purple to be visible on white bg *\/\r\n        .hashy-bubble-white.hashy-bubble-typing .hashy-dot {\r\n            background: #8839E7 !important;\r\n            opacity: .55 !important;\r\n        }\r\n        .hashy-bubble-typing .hashy-dot:nth-child(2) { animation-delay: .18s !important; }\r\n        .hashy-bubble-typing .hashy-dot:nth-child(3) { animation-delay: .36s !important; }\r\n        @keyframes hashyDot {\r\n            0%, 60%, 100% { transform: translateY(0);   opacity: .55; }\r\n            30%           { transform: translateY(-4px); opacity: 1;   }\r\n        }\r\n        \/* Typing rows are dynamically injected by JS before each real\r\n           message; remove them from the natural flow when fading out\r\n           (gives the impression the bubble morphs into the real text).\r\n           Center-align so the small typing bubble sits vertically\r\n           against the avatar instead of dropping to flex-end. *\/\r\n        .hashy-typing-row {\r\n            align-items: center !important;\r\n            transition: opacity .4s ease, transform .45s ease, max-height .45s ease !important;\r\n        }\r\n        .hashy-typing-row.is-fading {\r\n            opacity: 0 !important;\r\n            transform: translateY(-4px) !important;\r\n            max-height: 0 !important;\r\n            margin: 0 !important;\r\n            overflow: hidden !important;\r\n        }\r\n\r\n        .hashy-bubble-card { padding: 10px !important; }\r\n\r\n        \/* Sales: Bright Technology contact card *\/\r\n        .hashy-contact-card { display: flex !important; flex-direction: column !important; gap: 5px !important; width: 256px !important; }\r\n        .hashy-contact-row {\r\n            display: flex !important; align-items: center !important; gap: 8px !important;\r\n            border-bottom: 0.5px solid #d9d9d9 !important;\r\n            padding-bottom: 12px !important;\r\n            height: 57px !important;\r\n        }\r\n        .hashy-contact-logo {\r\n            width: 45px !important; height: 45px !important;\r\n            border-radius: 50% !important;\r\n            overflow: hidden !important;\r\n            flex-shrink: 0 !important;\r\n            background: #fff !important;\r\n            display: flex !important; align-items: center !important; justify-content: center !important;\r\n        }\r\n        .hashy-contact-logo img { display: block !important; width: 100% !important; height: 100% !important; object-fit: cover !important; }\r\n        .hashy-contact-meta {\r\n            flex: 1 1 auto !important;\r\n            min-width: 0 !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            justify-content: center !important;\r\n        }\r\n        .hashy-contact-name {\r\n            margin: 0 !important;\r\n            font-weight: 600 !important;\r\n            font-size: 14px !important;\r\n            color: #353535 !important;\r\n            line-height: 20px !important;\r\n            white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;\r\n        }\r\n        .hashy-contact-email {\r\n            margin: 0 !important;\r\n            font-weight: 400 !important;\r\n            font-size: 12px !important;\r\n            color: #353535 !important;\r\n            line-height: 20px !important;\r\n            white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important;\r\n        }\r\n        .hashy-contact-cog {\r\n            width: 16px !important; height: 16px !important;\r\n            display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-contact-actions { display: flex !important; gap: 8px !important; padding-top: 6px !important; }\r\n        .hashy-contact-actions span {\r\n            flex: 1 1 0 !important;\r\n            min-width: 0 !important;\r\n            height: 28px !important;\r\n            background: #f6f6f6 !important;\r\n            border-radius: 4px !important;\r\n            display: inline-flex !important; align-items: center !important; justify-content: center !important;\r\n        }\r\n        .hashy-contact-actions svg { display: block !important; }\r\n\r\n        \/* Inventory: Low Stock card \u2014 Figma 5311:1473 (171px content) *\/\r\n        .hashy-stock-card {\r\n            display: flex !important; flex-direction: column !important;\r\n            gap: 8px !important;\r\n            width: 171px !important;\r\n        }\r\n        .hashy-stock-head {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            gap: 11px !important;\r\n            font-weight: 600 !important;\r\n            font-size: 14px !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-warn-icon { flex-shrink: 0 !important; }\r\n        .hashy-stock-divider { height: 0.5px !important; background: #d9d9d9 !important; }\r\n        .hashy-stock-row {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            gap: 10px !important;\r\n        }\r\n        .hashy-stock-thumb {\r\n            width: 42px !important; height: 42px !important;\r\n            border-radius: 3px !important;\r\n            border: 0.8px solid #ddd !important;\r\n            overflow: hidden !important;\r\n            flex-shrink: 0 !important;\r\n            background: #fff !important;\r\n        }\r\n        .hashy-stock-thumb img { display: block !important; width: 100% !important; height: 100% !important; object-fit: contain !important; }\r\n        .hashy-stock-info { display: flex !important; flex-direction: column !important; gap: 3px !important; width: 119px !important; }\r\n        .hashy-stock-name {\r\n            margin: 0 !important; font-weight: 500 !important; font-size: 12.5px !important; color: #353535 !important; line-height: 1.25 !important;\r\n        }\r\n        .hashy-stock-sku {\r\n            margin: 0 !important; font-weight: 500 !important; font-size: 8px !important; color: #353535 !important; line-height: 1.4 !important;\r\n        }\r\n        .hashy-stock-progress {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 8px !important;\r\n            width: 100% !important;\r\n        }\r\n        .hashy-stock-bar {\r\n            flex: 1 1 auto !important;\r\n            min-width: 0 !important;\r\n            height: 7px !important;\r\n            border-radius: 24px !important;\r\n            background: rgba(196, 196, 196, .24) !important;\r\n            overflow: hidden !important;\r\n            position: relative !important;\r\n        }\r\n        .hashy-stock-bar span {\r\n            display: block !important;\r\n            height: 100% !important;\r\n            background: #BD1E2D !important;\r\n            border-radius: 24px !important;\r\n        }\r\n        .hashy-stock-pill {\r\n            display: inline-flex !important; align-items: center !important;\r\n            padding: 2px 4px !important;\r\n            border-radius: 2px !important;\r\n            font-weight: 500 !important;\r\n            font-size: 6px !important;\r\n            line-height: 1.4 !important;\r\n            white-space: nowrap !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-stock-pill-ok { background: #DDFCD4 !important; color: #1A8707 !important; }\r\n        .hashy-stock-pill-low {\r\n            background: #FFEBEB !important;\r\n            color: #90191C !important;\r\n            font-weight: 600 !important;\r\n            font-size: 7px !important;\r\n            padding: 1px 4px !important;\r\n        }\r\n\r\n        .hashy-check { vertical-align: -3px !important; margin-left: 3px !important; flex-shrink: 0 !important; }\r\n        .hashy-inline-icon { display: inline-flex !important; vertical-align: -3px !important; margin-right: 4px !important; }\r\n\r\n        \/* \u2500\u2500 Document card (Quotation\/Purchase order) \u2014 Figma 5298:2969\r\n           Sales \/ 5298:3099 Inventory. Bubble widened to 380px and\r\n           internal paddings\/gaps tightened so the full preview + From\/To\r\n           + attachment + CTA fit inside the 278px chat viewport\r\n           without the View Document button getting clipped. \u2500\u2500 *\/\r\n        .hashy-bubble-doc {\r\n            flex-direction: column !important;\r\n            align-items: stretch !important;\r\n            gap: 8px !important;\r\n            width: 380px !important;\r\n            padding: 9px 12px !important;\r\n        }\r\n        .hashy-doc-tag {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 4px !important;\r\n        }\r\n        .hashy-doc-tag p,\r\n        .hashy-doc-tag-text {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 13.5px !important;\r\n            line-height: 1.35 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-doc-card {\r\n            background: #FAFAFA !important;\r\n            border-radius: 2.6px !important;\r\n            padding: 6px !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 5px !important;\r\n            width: 100% !important;\r\n        }\r\n        .hashy-doc-preview {\r\n            background: #fff !important;\r\n            border: 0.7px solid rgba(0,0,0,.1) !important;\r\n            border-radius: 4.8px 4.8px 0 0 !important;\r\n            padding: 5px 6px !important;\r\n            overflow: hidden !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 2.5px !important;\r\n        }\r\n        .hashy-doc-head {\r\n            display: flex !important;\r\n            align-items: flex-start !important;\r\n            justify-content: space-between !important;\r\n            gap: 6px !important;\r\n        }\r\n        .hashy-doc-head-text { display: flex !important; flex-direction: column !important; }\r\n        .hashy-doc-title {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 10.9px !important;\r\n            line-height: 1.4 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-doc-num {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.2 !important;\r\n            color: #353535 !important;\r\n            opacity: .5 !important;\r\n        }\r\n        .hashy-doc-logo {\r\n            width: 20px !important;\r\n            height: 17px !important;\r\n            object-fit: contain !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-doc-divider {\r\n            height: 0.7px !important;\r\n            background: rgba(0,0,0,.1) !important;\r\n        }\r\n        .hashy-doc-fromto {\r\n            display: flex !important;\r\n            justify-content: space-between !important;\r\n            gap: 8px !important;\r\n        }\r\n        .hashy-doc-fromto > div {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n        }\r\n        .hashy-doc-label {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 400 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.4 !important;\r\n            color: #353535 !important;\r\n            opacity: .5 !important;\r\n        }\r\n        .hashy-doc-co {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.4 !important;\r\n            color: #2C2C2C !important;\r\n        }\r\n        .hashy-doc-addr {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 5.4px !important;\r\n            line-height: 1.4 !important;\r\n            color: #2C2C2C !important;\r\n        }\r\n        .hashy-doc-attach {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 6px !important;\r\n            padding: 0 2px !important;\r\n        }\r\n        .hashy-doc-pdf-badge {\r\n            display: inline-flex !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-doc-pdf-badge svg { display: block !important; width: 20px !important; height: 25px !important; }\r\n        .hashy-doc-attach-meta { display: flex !important; flex-direction: column !important; min-width: 0 !important; }\r\n        .hashy-doc-file {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10px !important;\r\n            line-height: 1.4 !important;\r\n            color: #353535 !important;\r\n            white-space: nowrap !important;\r\n            overflow: hidden !important;\r\n            text-overflow: ellipsis !important;\r\n        }\r\n        .hashy-doc-size {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10px !important;\r\n            line-height: 1.4 !important;\r\n            color: #ABAAAA !important;\r\n        }\r\n        .hashy-doc-cta {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            background: #8839E7 !important;\r\n            color: #fff !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 10px !important;\r\n            line-height: 1.4 !important;\r\n            padding: 5px 8px !important;\r\n            border-radius: 3.4px !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 Accounting: XLSX Financial Report card \u2014 Figma 5316:1700 \u2500\u2500 *\/\r\n        .hashy-bubble-xlsx {\r\n            flex-direction: column !important;\r\n            align-items: stretch !important;\r\n            gap: 8px !important;\r\n            width: 280px !important;\r\n            padding: 10px !important;\r\n        }\r\n        .hashy-xlsx-row {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 10px !important;\r\n        }\r\n        .hashy-xlsx-icon {\r\n            display: inline-flex !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-xlsx-icon svg { display: block !important; width: 24px !important; height: 28px !important; }\r\n        .hashy-xlsx-meta { display: flex !important; flex-direction: column !important; min-width: 0 !important; }\r\n        .hashy-xlsx-name {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 600 !important;\r\n            font-size: 13px !important;\r\n            line-height: 1.3 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-xlsx-size {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10.5px !important;\r\n            line-height: 1.4 !important;\r\n            color: #888 !important;\r\n        }\r\n        .hashy-xlsx-actions { display: flex !important; gap: 8px !important; }\r\n        .hashy-xlsx-actions span {\r\n            flex: 1 1 0 !important;\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            background: #F1F1F1 !important;\r\n            color: #353535 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 12px !important;\r\n            padding: 6px 10px !important;\r\n            border-radius: 4px !important;\r\n        }\r\n\r\n        \/* \u2500\u2500 HR: Attendance Report card \u2014 Figma 5287:1171 \u2500\u2500 *\/\r\n        .hashy-bubble-attendance {\r\n            flex-direction: column !important;\r\n            align-items: stretch !important;\r\n            gap: 10px !important;\r\n            width: 270px !important;\r\n            padding: 10px 12px !important;\r\n        }\r\n        .hashy-att-head {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n        }\r\n        .hashy-att-title {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 13px !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-att-month {\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            gap: 4px !important;\r\n            background: #F1F1F1 !important;\r\n            color: #353535 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 10px !important;\r\n            padding: 3px 8px !important;\r\n            border-radius: 4px !important;\r\n        }\r\n        .hashy-att-month svg { display: inline-block !important; }\r\n        .hashy-att-body {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 12px !important;\r\n            padding: 4px 0 !important;\r\n        }\r\n        .hashy-donut {\r\n            position: relative !important;\r\n            width: 80px !important;\r\n            height: 80px !important;\r\n            border-radius: 50% !important;\r\n            background: conic-gradient(\r\n                #8839E7 0deg 315deg,        \/* 21\/24 = 87.5% = 315deg \u2014 Present *\/\r\n                #FEA110 315deg 345deg,      \/* 2\/24  = 8.3%  = 30deg  \u2014 Annual Leave *\/\r\n                #BD1E2D 345deg 360deg       \/* 1\/24  = 4.2%  = 15deg  \u2014 Sick Leave *\/\r\n            ) !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-donut::before {\r\n            content: \"\" !important;\r\n            position: absolute !important;\r\n            inset: 12px !important;\r\n            background: #fff !important;\r\n            border-radius: 50% !important;\r\n        }\r\n        .hashy-donut-center {\r\n            position: absolute !important;\r\n            inset: 0 !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            align-items: center !important;\r\n            justify-content: center !important;\r\n            text-align: center !important;\r\n            z-index: 1 !important;\r\n        }\r\n        .hashy-donut-num {\r\n            margin: 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 700 !important;\r\n            font-size: 18px !important;\r\n            line-height: 1 !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-donut-label {\r\n            margin: 1px 0 0 !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-weight: 500 !important;\r\n            font-size: 7.5px !important;\r\n            line-height: 1.2 !important;\r\n            color: #888 !important;\r\n        }\r\n        .hashy-att-legend {\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n            gap: 6px !important;\r\n            font-family: Poppins, sans-serif !important;\r\n            font-size: 10.5px !important;\r\n            color: #353535 !important;\r\n        }\r\n        .hashy-att-legend > div {\r\n            display: flex !important;\r\n            align-items: flex-start !important;\r\n            gap: 6px !important;\r\n            line-height: 1.25 !important;\r\n        }\r\n        .hashy-att-legend strong { font-weight: 700 !important; font-size: 11px !important; }\r\n        .hashy-att-dot {\r\n            width: 10px !important; height: 10px !important;\r\n            border-radius: 2px !important;\r\n            margin-top: 2px !important;\r\n            flex-shrink: 0 !important;\r\n        }\r\n        .hashy-att-dot-1 { background: #8839E7 !important; }\r\n        .hashy-att-dot-2 { background: #FEA110 !important; }\r\n        .hashy-att-dot-3 { background: #BD1E2D !important; }\r\n\r\n        \/* \u2500\u2500 Mobile (< 480px container): unscale + stack vertically.\r\n           Layout order: text on TOP, chat card on BOTTOM. Text\/button\r\n           rendered center-aligned. Above 480 the desktop side-by-side\r\n           layout stays \u2014 it just scales down via transform. \u2500\u2500\u2500 *\/\r\n        @container hashybnr (max-width: 479.99px) {\r\n            .hashy-banner-frame {\r\n                aspect-ratio: auto !important;\r\n                border-radius: 14px !important;\r\n            }\r\n            .hashy-banner-stage {\r\n                position: static !important;\r\n                width: 100% !important;\r\n                height: auto !important;\r\n                transform: none !important;\r\n            }\r\n            .hashy-card-deco-1, .hashy-card-deco-2 { display: none !important; }\r\n            .hashy-card-deco-3 { right: 12px !important; top: 0 !important; width: 24px !important; height: 70px !important; }\r\n            .hashy-card-bg-glow { left: 50% !important; transform: translateX(-50%) !important; width: 90% !important; }\r\n\r\n            .hashy-card-inner {\r\n                flex-direction: column !important;        \/* text first, card second *\/\r\n                align-items: center !important;\r\n                text-align: center !important;\r\n                gap: 28px !important;\r\n                padding: 32px 22px !important;\r\n                height: auto !important;\r\n            }\r\n            .hashy-card-left {\r\n                width: 100% !important;\r\n                max-width: 460px !important;\r\n                gap: 24px !important;\r\n                align-items: center !important;           \/* center logo, title, CTA *\/\r\n                text-align: center !important;\r\n            }\r\n            .hashy-card-logo { height: 24px !important; }\r\n            .hashy-card-text-block {\r\n                gap: 20px !important;\r\n                align-items: center !important;\r\n                text-align: center !important;\r\n                width: 100% !important;\r\n            }\r\n            .hashy-card-title { font-size: 22px !important; line-height: 1.3 !important; text-align: center !important; }\r\n            .hashy-card-cta { font-size: 15px !important; padding: 11px 28px !important; align-self: center !important; }\r\n            .hashy-card-cta-spark svg { width: 16px !important; height: 17px !important; }\r\n\r\n            .hashy-card-right {\r\n                width: 100% !important;\r\n                max-width: 420px !important;\r\n                padding-bottom: 0 !important;\r\n                text-align: left !important;     \/* reset center inheritance\r\n                                                    so chat content stays\r\n                                                    left-aligned on mobile *\/\r\n            }\r\n            .hashy-card-chat-meta,\r\n            .hashy-card-chat-name,\r\n            .hashy-card-chat-role,\r\n            .hashy-bubble,\r\n            .hashy-stock-card,\r\n            .hashy-contact-card,\r\n            .hashy-doc-card { text-align: left !important; }\r\n            .hashy-banner-wrap.hashy-banner-wrap img.hashy-card-mascot,\r\n            .hashy-banner-stage.hashy-banner-stage img.hashy-card-mascot,\r\n            .hashy-card-mascot { width: 96px !important; height: auto !important; margin: 0 0 -22px !important; }\r\n            .hashy-card-chat-window { height: 232px !important; }\r\n            .hashy-card-chat-name { font-size: 14px !important; }\r\n            .hashy-card-chat-role { font-size: 10.5px !important; }\r\n            .hashy-card-chat-avatar { width: 32px !important; height: 32px !important; }\r\n            .hashy-card-chat-avatar img { width: 28px !important; height: 28px !important; }\r\n            .hashy-bubble { font-size: 12.5px !important; padding: 8px 10px !important; max-width: 240px !important; }\r\n            .hashy-bubble-wide { width: auto !important; max-width: 260px !important; }\r\n            .hashy-bubble-doc { width: auto !important; max-width: 280px !important; padding: 8px 10px !important; }\r\n            .hashy-bubble-xlsx { width: auto !important; max-width: 260px !important; }\r\n            .hashy-bubble-attendance { width: auto !important; max-width: 260px !important; }\r\n            .hashy-msg-avatar { width: 30px !important; height: 30px !important; }\r\n            .hashy-msg, .hashy-msg.is-outgoing { padding-left: 14px !important; padding-right: 14px !important; }\r\n            .hashy-card-chat-stream { gap: 14px !important; }\r\n            .hashy-card-chat-dots span { width: 8px !important; height: 8px !important; }\r\n            .hashy-contact-card { width: 220px !important; }\r\n            .hashy-stock-card { width: 210px !important; }\r\n        }\r\n\r\n        @media (prefers-reduced-motion: reduce) {\r\n            .hashy-card-deco,\r\n            .hashy-card-mascot,\r\n            .hashy-bubble-typing .hashy-dot { animation: none !important; }\r\n            .hashy-card-cta:hover { transform: none !important; filter: none !important; }\r\n            .hashy-msg, .hashy-card-chat-stream { transition: opacity .2s ease !important; transform: none !important; }\r\n        }\r\n    <\/style>\r\n\r\n    <script>\r\n        \/* Sequential message reveal with chat-loading indicator.\r\n           For each real message the JS injects a temporary typing bubble\r\n           in the matching side, animates it for ~1100ms, then fades it\r\n           out and reveals the actual bubble. The stream glides upward\r\n           when the new content would push past the visible body. *\/\r\n        (function () {\r\n            var TYPING_MS = 1100;   \/\/ how long the dots pulse before bubble appears\r\n            var FADE_MS   = 320;    \/\/ typing-row collapse duration\r\n            var GAP_MS    = 1700;   \/\/ pause after bubble is shown, before next typing\r\n            var LOOP_PAUSE = 2500;  \/\/ pause at end of conversation before restart loop\r\n\r\n            function startHashyChat(stream) {\r\n                if (!stream || stream.dataset.hashyChatStarted === \"1\") return;\r\n                stream.dataset.hashyChatStarted = \"1\";\r\n                var body = stream.parentElement;\r\n                var msgs = Array.prototype.slice.call(stream.querySelectorAll(\".hashy-msg\"));\r\n                if (!msgs.length) return;\r\n\r\n                var avatarHashy = stream.dataset.avatarHashy || \"\";\r\n                var avatarUser  = stream.dataset.avatarUser  || \"\";\r\n\r\n                function makeTyping(isIncoming) {\r\n                    var row = document.createElement(\"div\");\r\n                    row.className = \"hashy-msg hashy-typing-row \" + (isIncoming ? \"is-incoming\" : \"is-outgoing\");\r\n                    var bubble =\r\n                        '<div class=\"hashy-bubble hashy-bubble-typing ' +\r\n                        (isIncoming ? 'hashy-bubble-white' : 'hashy-bubble-purple') +\r\n                        '\"><span class=\"hashy-dot\"><\/span><span class=\"hashy-dot\"><\/span><span class=\"hashy-dot\"><\/span><\/div>';\r\n                    var avatar = isIncoming\r\n                        ? '<img decoding=\"async\" class=\"hashy-msg-avatar\" src=\"' + avatarHashy + '\" alt=\"\" width=\"40\" height=\"40\">'\r\n                        : '<img decoding=\"async\" class=\"hashy-msg-avatar hashy-msg-avatar-bordered\" src=\"' + avatarUser + '\" alt=\"\" width=\"40\" height=\"40\">';\r\n                    row.innerHTML = isIncoming ? avatar + bubble : bubble + avatar;\r\n                    return row;\r\n                }\r\n\r\n                function scrollIntoView(node) {\r\n                    requestAnimationFrame(function () {\r\n                        requestAnimationFrame(function () {\r\n                            var viewportH = body.clientHeight;\r\n                            var nodeBottom = node.offsetTop + node.offsetHeight;\r\n                            var currentY = parseFloat(\r\n                                (stream.style.transform.match(\/-?\\d+(?:\\.\\d+)?\/) || [0])[0]\r\n                            );\r\n                            var visibleBottom = -currentY + viewportH;\r\n                            if (nodeBottom > visibleBottom) {\r\n                                stream.style.transform = \"translateY(\" + (-node.offsetTop) + \"px)\";\r\n                            }\r\n                        });\r\n                    });\r\n                }\r\n\r\n                function reset() {\r\n                    stream.classList.add(\"no-transition\");\r\n                    msgs.forEach(function (m) { m.classList.remove(\"is-revealed\"); });\r\n                    Array.prototype.slice.call(stream.querySelectorAll(\".hashy-typing-row\")).forEach(function (n) {\r\n                        if (n.parentNode) n.parentNode.removeChild(n);\r\n                    });\r\n                    stream.style.transform = \"translateY(0)\";\r\n                    void stream.offsetWidth;\r\n                    stream.classList.remove(\"no-transition\");\r\n                }\r\n\r\n                var i = 0;\r\n                reset();\r\n\r\n                function tick() {\r\n                    if (i >= msgs.length) {\r\n                        setTimeout(function () { reset(); i = 0; setTimeout(tick, 800); }, LOOP_PAUSE);\r\n                        return;\r\n                    }\r\n                    var msg = msgs[i];\r\n                    var isIncoming = msg.classList.contains(\"is-incoming\");\r\n                    var typing = makeTyping(isIncoming);\r\n                    msg.parentNode.insertBefore(typing, msg);\r\n\r\n                    \/\/ Reveal typing on next frame for smooth fade-in\r\n                    requestAnimationFrame(function () {\r\n                        requestAnimationFrame(function () {\r\n                            typing.classList.add(\"is-revealed\");\r\n                            scrollIntoView(typing);\r\n                        });\r\n                    });\r\n\r\n                    setTimeout(function () {\r\n                        \/\/ Fade typing out, then reveal real message in its slot\r\n                        typing.classList.add(\"is-fading\");\r\n                        setTimeout(function () {\r\n                            if (typing.parentNode) typing.parentNode.removeChild(typing);\r\n                            msg.classList.add(\"is-revealed\");\r\n                            scrollIntoView(msg);\r\n                            i++;\r\n                            setTimeout(tick, GAP_MS);\r\n                        }, FADE_MS);\r\n                    }, TYPING_MS);\r\n                }\r\n\r\n                tick();\r\n            }\r\n\r\n            document.addEventListener(\"DOMContentLoaded\", function () {\r\n                document.querySelectorAll(\".hashy-card-chat-stream\").forEach(startHashyChat);\r\n            });\r\n        })();\r\n    <\/script><\/span><\/p>\n<p><a href=\"https:\/\/www.abs.gov.au\/statistics\/industry\/technology-and-innovation\/characteristics-australian-business\/latest-release#business-use-of-ict\" target=\"_blank\" rel=\"noopener\">According to ABS data<\/a>, only around 4% of Australian businesses currently use ERP systems, while most still track inventory in spreadsheets or standalone POS, making EOFY stocktake reconciliation manual and error-prone.<\/p>\n<p>For trading stock value disputes with the ATO, this is also the gap that gets businesses audited.<\/p>\n<p data-start=\"1817\" data-end=\"2016\">Running a product-based company involves long supply lines, strict compliance, and tight margins. Inventory reporting helps reduce risk by keeping stock aligned with demand and financial obligations.<\/p>\n<h3 id=\"better-stock-control-and-demand-forecasting\">1. Better stock control and demand forecasting<\/h3>\n<p data-start=\"2067\" data-end=\"2283\">Long supplier lead times make accurate forecasting essential for maintaining availability. An inventory report reveals sales patterns, seasonal trends, and reorder timing, which supports smarter purchasing decisions.<\/p>\n<p data-start=\"2285\" data-end=\"2442\">With reliable data, a business avoids stockouts and excess stock at the same time. Therefore, customer demand stays met without tying up unnecessary capital.<\/p>\n<h3 id=\"reducing-holding-costs-and-dead-stock\">2. Reducing holding costs and dead stock<\/h3>\n<p data-start=\"2487\" data-end=\"2670\">Storage costs can quickly erode margins, especially when slow-moving items take up valuable space. Inventory reports expose underperforming stock before it becomes a long-term burden.<\/p>\n<p data-start=\"2672\" data-end=\"2821\">By identifying dead stock early, companies can discount, bundle, or clear items. As a result, they free up cash while improving warehouse efficiency.<\/p>\n<h3 id=\"supporting-eofy-stocktake-and-audit-readiness\">3. Supporting EOFY stocktake and audit readiness<\/h3>\n<p data-start=\"2874\" data-end=\"3033\">The financial year ending on 30 June requires accurate stock valuation. Inventory reports simplify this process by keeping records aligned throughout the year.<\/p>\n<p data-start=\"3035\" data-end=\"3190\">Instead of last-minute counting, businesses with consistent reporting rely on <a href=\"https:\/\/www.hashmicro.com\/au\/blog\/best-inventory-software\/\">automated inventory tracking software<\/a> and ongoing data. This approach reduces disruption and improves audit confidence.<\/p>\n<h2 id=\"types-of-inventory-reports\"><strong>Types of Inventory Reports<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-2659\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-scaled.webp\" alt=\"Types of Financial Reporting \" width=\"2560\" height=\"1429\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-scaled.webp 2560w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-300x167.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-1024x572.webp 1024w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-768x429.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-1536x857.webp 1536w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-2048x1143.webp 2048w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-753x420.webp 753w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-150x84.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-696x388.webp 696w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-1068x596.webp 1068w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Types-Of-Financial-Reporting-1920x1072.webp 1920w\" sizes=\"(max-width: 2560px) 100vw, 2560px\" \/><\/p>\n<p data-start=\"3228\" data-end=\"3405\">No single report answers every inventory question on its own. Different report types focus on specific operational and financial needs, which together create a complete picture.<\/p>\n<h3 id=\"stock-level-report-on-hand-inventory\">1. Stock level report (On-hand inventory)<\/h3>\n<p data-start=\"3451\" data-end=\"3605\">This report shows current quantities available for each SKU across locations. It supports daily picking, sales commitments, and basic availability checks.<\/p>\n<p data-start=\"3607\" data-end=\"3707\">Because it updates frequently, teams rely on it to prevent overselling and fulfil orders accurately.<\/p>\n<h3 id=\"inventory-valuation-report\">2. Inventory valuation report<\/h3>\n<p data-start=\"3741\" data-end=\"3880\">An inventory valuation report converts quantities into financial value. It supports balance sheets, profit calculations, and tax reporting.<\/p>\n<p data-start=\"3882\" data-end=\"3976\">By applying accepted costing methods, finance teams maintain consistent and compliant records.<\/p>\n<h3 id=\"inventory-turnover-report\">3. Inventory turnover report<\/h3>\n<p data-start=\"4009\" data-end=\"4142\">Also known as velocity report, inventory turnover report measures how often stock sells and replenishes over time. It highlights whether inventory moves efficiently or sits idle.<\/p>\n<p data-start=\"4144\" data-end=\"4238\">Low turnover often signals overstocking or weak demand, which then requires corrective action.<\/p>\n<h3 id=\"dead-stock-and-slow-moving-inventory-report\">4. Dead stock and slow-moving inventory report<\/h3>\n<p data-start=\"4289\" data-end=\"4421\">This report isolates items with little or no sales activity. It helps management address ageing stock before storage costs escalate.<\/p>\n<p data-start=\"4423\" data-end=\"4506\">Regular review prevents unsellable goods from consuming space and tying up capital.<\/p>\n<h3 id=\"reorder-point-report\">5. Reorder\/backorder point report<\/h3>\n<p data-start=\"4534\" data-end=\"4674\">A reorder point report flags when stock reaches replenishment levels. It also surfaces items already in backorder. It accounts for sales velocity, supplier lead times, and safety stock.<\/p>\n<p data-start=\"4676\" data-end=\"4747\">As a result, purchasing teams act early and avoid gaps in availability.<\/p>\n<h3 id=\"abc-analysis-report\">6. ABC analysis report<\/h3>\n<p data-start=\"4774\" data-end=\"4858\">This report ranks inventory by value and impact, helping prioritise control efforts.<\/p>\n<ul data-start=\"4860\" data-end=\"5052\">\n<li data-section-id=\"13hgi5l\" data-start=\"4860\" data-end=\"4921\"><strong data-start=\"4862\" data-end=\"4877\">Category A:<\/strong> High-value items requiring strict control<\/li>\n<li data-section-id=\"93w2kv\" data-start=\"4922\" data-end=\"4985\"><strong data-start=\"4924\" data-end=\"4939\">Category B:<\/strong> Moderate-value items needing routine review<\/li>\n<li data-section-id=\"lp6el7\" data-start=\"4986\" data-end=\"5052\"><strong data-start=\"4988\" data-end=\"5003\">Category C:<\/strong> Low-value items suited to automated reordering<\/li>\n<\/ul>\n<p data-start=\"5054\" data-end=\"5120\">This structure ensures focus stays on products that drive revenue.<\/p>\n<p><span style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">7. Inventory forecasting and demand report<\/span><\/p>\n<p data-start=\"5167\" data-end=\"5303\">Forecasting reports predict future stock needs using historical data and demand trends. They support planning for upcoming sales cycles.<\/p>\n<p data-start=\"5305\" data-end=\"5390\">With accurate forecasts, businesses order with confidence and reduce reactive buying.<\/p>\n<h3 id=\"inventory-shrinkage-report\">8. Inventory shrinkage report<\/h3>\n<p data-start=\"5424\" data-end=\"5541\">This report compares recorded stock against physical counts. It highlights losses caused by errors, damage, or theft.<\/p>\n<p data-start=\"5543\" data-end=\"5617\">Identifying shrinkage early allows corrective controls to be put in place.<\/p>\n<h3>9. Inventory ageing report<\/h3>\n<p>An inventory ageing report categorizes stock by how long it has been held. Age buckets typically cover 0\u201330, 31\u201360, 61\u201390, and 90+ days of storage.<\/p>\n<p>This helps teams identify items approaching the point where holding costs exceed recoverable value. Early visibility supports clearance decisions before stock becomes a write-off.<\/p>\n<p>Regular review also supports better purchasing discipline. Patterns in ageing stock often signal demand shifts that require reorder adjustments.<\/p>\n<h3>10. Inventory profitability report<\/h3>\n<p>This report compares gross margin per SKU against the cost of storing and handling that item. It reveals which products contribute genuine profit after holding costs are factored in.<\/p>\n<p>High-turnover items with thin margins may still underperform once warehousing costs are included. This view helps finance and operations align on true product-level performance.<\/p>\n<p>Results from this report support ranging decisions, pricing reviews, and storage allocation priorities.<\/p>\n<h2 id=\"what-to-include-in-an-inventory-report\"><strong>What to Include in an Inventory Report<\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-2645\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/What-to-Include-in-an-Inventory-Report.webp\" alt=\"What to Include in an Inventory Report\" width=\"800\" height=\"400\" srcset=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/What-to-Include-in-an-Inventory-Report.webp 800w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/What-to-Include-in-an-Inventory-Report-300x150.webp 300w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/What-to-Include-in-an-Inventory-Report-768x384.webp 768w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/What-to-Include-in-an-Inventory-Report-150x75.webp 150w, https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/What-to-Include-in-an-Inventory-Report-696x348.webp 696w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/p>\n<p data-start=\"5667\" data-end=\"5807\">An effective inventory report includes clear, consistent data fields. These elements ensure the information remains actionable across teams using a <a href=\"https:\/\/www.hashmicro.com\/au\/blog\/inventory-management-system\">platform for reporting stock.<\/a><\/p>\n<h3 id=\"stock-quantities-locations-and-warehouse-details\">1. Stock quantities, locations, and warehouse details<\/h3>\n<p data-start=\"5845\" data-end=\"5964\">Reports must show exact quantities and where stock is stored. This includes all warehouse sites the company has and internal storage zones.<\/p>\n<p data-start=\"5966\" data-end=\"6050\">Clear location data speeds up picking and reduces handling delays during fulfilment.<\/p>\n<h3 id=\"sku-product-descriptions-and-categories\">2. SKU, product descriptions, and categories<\/h3>\n<p data-start=\"6092\" data-end=\"6214\">Each item requires a unique SKU and standardised description. Categories allow performance analysis across product ranges.<\/p>\n<p data-start=\"6216\" data-end=\"6284\">Consistent naming prevents duplication and reduces reporting errors.<\/p>\n<h3 id=\"valuation-cost-of-goods-and-gst-data\">3. Valuation, cost of goods, and GST data<\/h3>\n<p data-start=\"6317\" data-end=\"6434\">Unit costs and total valuation support accurate financial reporting. GST tracking ensures BAS figures remain correct.<\/p>\n<p data-start=\"6436\" data-end=\"6506\">These details link inventory directly to compliance and profitability.<\/p>\n<h3 id=\"reorder-levels-lead-times-and-supplier-information\">4. Reorder levels, lead times, and supplier information<\/h3>\n<p data-start=\"6549\" data-end=\"6667\">Including reorder points and supplier data turns reports into purchasing tools. Lead times guide timely replenishment.<\/p>\n<p data-start=\"6669\" data-end=\"6733\">This structure reduces delays and supports smoother procurement.<\/p>\n<h2><strong>Australian Regulatory Context for Inventory Reporting<\/strong><\/h2>\n<p>Inventory reporting in Australia carries legal weight. Stock valuation, trading stock declarations, and GST adjustments are all subject to ATO and AASB requirements that affect tax outcomes and audit exposure.<\/p>\n<p>Understanding these obligations helps businesses structure their reporting correctly from the start, rather than correcting errors at year-end.<\/p>\n<h3>1. AASB 102 inventories standard<\/h3>\n<p>AASB 102 governs how Australian businesses must measure and disclose inventory. Stock is valued at the lower of cost and net realisable value.<\/p>\n<p>Cost includes purchase price, conversion costs, and any other costs to bring stock to its current location and condition. Net realisable value is the estimated selling price less completion and selling costs.<\/p>\n<p>Businesses must disclose the accounting policies used for inventory measurement. Total carrying amounts by category and any write-downs recognized in the period are also required disclosures.<\/p>\n<h3>2. ATO trading stock rules<\/h3>\n<p>The ATO requires businesses to value all trading stock at the end of each income year. The difference between opening and closing stock values directly affects taxable income.<\/p>\n<p>Three valuation methods are accepted: cost, market selling value, or replacement value. Each item can use a different method, but the chosen method must be applied consistently year to year.<\/p>\n<p>Small businesses with annual turnover below $5 million may use the simplified trading stock rules. If the value difference between opening and closing stock is $5,000 or less, no adjustment to taxable income is required.<\/p>\n<h3>3. GST treatment of inventory write-offs<\/h3>\n<p>When stock is written off due to shrinkage, damage, or obsolescence, a GST adjustment is required. Businesses must make a decreasing adjustment for any input tax credits previously claimed on those goods.<\/p>\n<p>This applies when items are no longer used for a creditable business purpose. The adjustment must be reported in the BAS covering the period in which the write-off is recorded.<\/p>\n<p>Accurate shrinkage reporting through inventory records supports correct GST treatment. Without it, businesses risk retaining input tax credits they are no longer entitled to claim.<\/p>\n<h2 id=\"downloadable-inventory-report-templates\"><strong>Downloadable Inventory Report Templates<\/strong><\/h2>\n<p>Creating inventory reports from scratch can be time-consuming. To assist you in standardizing your reporting processes, we have outlined the structure of several essential templates. You can easily recreate these structures in Microsoft Excel, Google Sheets, or your preferred spreadsheet software to begin tracking your inventory systematically.<\/p>\n<h3 id=\"stock-level-report-template\">1. Stock level report template<\/h3>\n<p data-start=\"167\" data-end=\"384\">Keeping track of your inventory levels is essential to avoid stockouts or overstocking. This stock level report template helps you monitor inventory status, identify shortages, and make timely replenishment decisions.<\/p>\n<!-- shortcode CTA download new -->\r\n\r\n<div class=\"download-wrapper new\">\r\n\t<p class=\"download-desc\">Stock Level Report Template<\/p>\r\n\t\r\n\t<div class=\"download-top\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-15-105620.webp\">\r\n\t<\/div>\r\n\t\r\n\t<div class=\"button-wrapper\">\r\n\t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Stock_Level_Report_Template.docx\"\r\n\t\t\tdata-format=\"docs\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\r\n  \t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"<strong>https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/03\/surat-pemesanan-makanan-1.pdf<\/strong>\"\r\n\t\t\tdata-format=\"pdf\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\t<\/div>\r\n\t\r\n\t\t<div class=\"download-bottom\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Screenshot-2026-04-15-105620.webp\" alt=\"\">\r\n\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n<style>\r\n\t.button-wrapper{\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new p.download-text{\r\n\t\tmargin-bottom: 0;\r\n\t\tcolor: #9C171E;\r\n\t}\r\n\t\r\n\t.color-me-white{\r\n\t\tcolor: #FFF !important;\r\n\t}\r\n\t.download-bottom, .download-top{\r\n\t\tmargin-top: 32px;\r\n\t\theight: 250px;\r\n\t\toverflow: hidden;\r\n\t\tborder-radius: 8px 8px 0 0;\r\n\t}\r\n\t\r\n\t.download-top{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t.download-img{\r\n\t\twidth: 100%;\r\n\/* \t\tfilter: blur(1px); *\/\r\n\t}\r\n\r\n\t.opacity-ef{\r\n\t\tposition: absolute;\r\n\t\tdisplay: block;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 35%, #FFF 88%);\r\n\t\tbackdrop-filter: blur(1px);\r\n\t\tz-index: 1;\r\n\t\twidth: 100%;\r\n\t}\r\n\t\r\n\t.download-wrapper.new{\r\n\t\tbackground: unset;\r\n\t\tpadding: 40px 16px;\r\n\t\tborder-radius: unset;\r\n\t\tborder-bottom: 2px solid #D9D9D9;\r\n\t\tborder-top: 2px solid #D9D9D9;\r\n\t}\r\n\t\r\n\t.icon-unduh{\r\n\t\tbackground-image: url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/11\/icon-unduh.webp');\r\n\t\tbackground-size: cover;\r\n\t\tbackground-repeat: no-repeat;\r\n\t\tbackground-position: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn{\r\n\t\twidth: 200px;\r\n\t\tpadding: 10px 14px;\r\n\t\tmargin-right: 16px;\r\n\t\tcolor: #FFF !important;\r\n\t\tbox-shadow: 5px 6px 16px 0px rgba(0, 0, 0, 0.25);\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn:last-child{\r\n\t\tmargin-right: 0;\r\n\t}\r\n\t\r\n\t.new .download-desc{\r\n\t\tcolor: #282828 !important;\r\n\t\ttext-align: center;\r\n\t\tfont-size: 27px !important;\r\n\t\tfont-style: normal;\r\n\t\tfont-weight: 700;\r\n\t\tline-height: 28px;\r\n\t\tmargin-bottom: 24px !important;\r\n\t}\r\n\t\r\n\t.btn-pdf{\r\n\t\tborder: 2px solid #D01517;\r\n\t\tbackground: #D01517;\r\n\t}\r\n\t\r\n\t.btn-word{\r\n\t\tborder: 2px solid #25589A;\r\n\t\tbackground: #25589A;\r\n\t}\r\n\t\r\n\t.btn-excel{\r\n\t\tborder: 2px solid #20744A;\r\n\t\tbackground: #20744A;\r\n\t}\r\n\t\r\n\t.d-none{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t@media (min-width:992px) and (max-width:1399px){\r\n\t\tp.download-text{\r\n\t\t\tfont-size: 14px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\t\t.button-wrapper{\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t\r\n\t\t.new .downloadBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.download-bottom{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t\t\r\n\t\t.download-top{\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.new .download-desc{\r\n\t\t\tmargin-bottom: 16px !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:576px){\r\n\t\t.download-top{\r\n\t\t\theight: 120px;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.querySelectorAll('.downloadBtn').forEach(button=>{\r\n\t\tconst formatData = button.getAttribute('data-format');\r\n\t\tconst btnText = button.querySelector('.download-text');\r\n\t\tconst linkData = button.getAttribute('data-link');\r\n\t\tconst iconUnduh = button.querySelector('.icon-unduh');\r\n\t\tconst popupContent = button.getAttribute('popup-content');\r\n\t\t\r\n\t\tif(formatData == 'pdf'){\r\n\t\t\tbutton.classList.add('btn-pdf'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download PDF\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/teenyicons_pdf-solid.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'word'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Word\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/file-icons_microsoft-word.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'excel'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Excel\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/vscode-icons_file-type-excel2.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'docs'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Docs\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googledocs.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'sheet'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Sheet\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googlesheets.webp')\"\r\n\t\t}\r\n\t\t\r\n\t\tif(linkData == ''){\r\n\t\t\tbutton.classList.add('d-none');\r\n\t\t}\r\n\t})\r\n<\/script>\n<p><span style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 22px;\">2. Inventory valuation report template<\/span><\/p>\n<p>Beyond tracking quantities, understanding the financial value of your inventory is equally important for accurate reporting and decision-making. This template allows you to calculate and monitor the total value of stock held within a given period.<\/p>\n<!-- shortcode CTA download new -->\r\n\r\n<div class=\"download-wrapper new\">\r\n\t<p class=\"download-desc\">Inventory Valuation Report Template<\/p>\r\n\t\r\n\t<div class=\"download-top\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/image-1.webp\">\r\n\t<\/div>\r\n\t\r\n\t<div class=\"button-wrapper\">\r\n\t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory_Valuation_Report_Template.docx\"\r\n\t\t\tdata-format=\"docs\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\r\n  \t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory_Valuation_Report_Template.pdf\"\r\n\t\t\tdata-format=\"pdf\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\t<\/div>\r\n\t\r\n\t\t<div class=\"download-bottom\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/image-1.webp\" alt=\"\">\r\n\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n<style>\r\n\t.button-wrapper{\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new p.download-text{\r\n\t\tmargin-bottom: 0;\r\n\t\tcolor: #9C171E;\r\n\t}\r\n\t\r\n\t.color-me-white{\r\n\t\tcolor: #FFF !important;\r\n\t}\r\n\t.download-bottom, .download-top{\r\n\t\tmargin-top: 32px;\r\n\t\theight: 250px;\r\n\t\toverflow: hidden;\r\n\t\tborder-radius: 8px 8px 0 0;\r\n\t}\r\n\t\r\n\t.download-top{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t.download-img{\r\n\t\twidth: 100%;\r\n\/* \t\tfilter: blur(1px); *\/\r\n\t}\r\n\r\n\t.opacity-ef{\r\n\t\tposition: absolute;\r\n\t\tdisplay: block;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 35%, #FFF 88%);\r\n\t\tbackdrop-filter: blur(1px);\r\n\t\tz-index: 1;\r\n\t\twidth: 100%;\r\n\t}\r\n\t\r\n\t.download-wrapper.new{\r\n\t\tbackground: unset;\r\n\t\tpadding: 40px 16px;\r\n\t\tborder-radius: unset;\r\n\t\tborder-bottom: 2px solid #D9D9D9;\r\n\t\tborder-top: 2px solid #D9D9D9;\r\n\t}\r\n\t\r\n\t.icon-unduh{\r\n\t\tbackground-image: url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/11\/icon-unduh.webp');\r\n\t\tbackground-size: cover;\r\n\t\tbackground-repeat: no-repeat;\r\n\t\tbackground-position: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn{\r\n\t\twidth: 200px;\r\n\t\tpadding: 10px 14px;\r\n\t\tmargin-right: 16px;\r\n\t\tcolor: #FFF !important;\r\n\t\tbox-shadow: 5px 6px 16px 0px rgba(0, 0, 0, 0.25);\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn:last-child{\r\n\t\tmargin-right: 0;\r\n\t}\r\n\t\r\n\t.new .download-desc{\r\n\t\tcolor: #282828 !important;\r\n\t\ttext-align: center;\r\n\t\tfont-size: 27px !important;\r\n\t\tfont-style: normal;\r\n\t\tfont-weight: 700;\r\n\t\tline-height: 28px;\r\n\t\tmargin-bottom: 24px !important;\r\n\t}\r\n\t\r\n\t.btn-pdf{\r\n\t\tborder: 2px solid #D01517;\r\n\t\tbackground: #D01517;\r\n\t}\r\n\t\r\n\t.btn-word{\r\n\t\tborder: 2px solid #25589A;\r\n\t\tbackground: #25589A;\r\n\t}\r\n\t\r\n\t.btn-excel{\r\n\t\tborder: 2px solid #20744A;\r\n\t\tbackground: #20744A;\r\n\t}\r\n\t\r\n\t.d-none{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t@media (min-width:992px) and (max-width:1399px){\r\n\t\tp.download-text{\r\n\t\t\tfont-size: 14px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\t\t.button-wrapper{\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t\r\n\t\t.new .downloadBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.download-bottom{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t\t\r\n\t\t.download-top{\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.new .download-desc{\r\n\t\t\tmargin-bottom: 16px !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:576px){\r\n\t\t.download-top{\r\n\t\t\theight: 120px;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.querySelectorAll('.downloadBtn').forEach(button=>{\r\n\t\tconst formatData = button.getAttribute('data-format');\r\n\t\tconst btnText = button.querySelector('.download-text');\r\n\t\tconst linkData = button.getAttribute('data-link');\r\n\t\tconst iconUnduh = button.querySelector('.icon-unduh');\r\n\t\tconst popupContent = button.getAttribute('popup-content');\r\n\t\t\r\n\t\tif(formatData == 'pdf'){\r\n\t\t\tbutton.classList.add('btn-pdf'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download PDF\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/teenyicons_pdf-solid.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'word'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Word\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/file-icons_microsoft-word.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'excel'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Excel\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/vscode-icons_file-type-excel2.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'docs'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Docs\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googledocs.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'sheet'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Sheet\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googlesheets.webp')\"\r\n\t\t}\r\n\t\t\r\n\t\tif(linkData == ''){\r\n\t\t\tbutton.classList.add('d-none');\r\n\t\t}\r\n\t})\r\n<\/script>\n<h3 id=\"inventory-turnover-report-template\">3. Inventory turnover report template<\/h3>\n<p data-start=\"1889\" data-end=\"2109\">To optimise inventory performance, it\u2019s important to understand how quickly stock moves through your business. This template helps you analyse turnover rates, identify slow-moving items, and improve inventory efficiency.<\/p>\n<!-- shortcode CTA download new -->\r\n\r\n<div class=\"download-wrapper new\">\r\n\t<p class=\"download-desc\">Inventory Valuation Report Template<\/p>\r\n\t\r\n\t<div class=\"download-top\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/image-2.webp\">\r\n\t<\/div>\r\n\t\r\n\t<div class=\"button-wrapper\">\r\n\t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory_Turnover_Report_Template.docx\"\r\n\t\t\tdata-format=\"docs\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\r\n  \t\t\r\n  \t\t\t\t<button \r\n\t\t\tclass=\"downloadBtn\" \r\n\t\t\tpopup-content=\"template\" \r\n\t\t\tdata-link=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory_Turnover_Report_Template.pdf\"\r\n\t\t\tdata-format=\"pdf\">\r\n\t\t\t<div class=\"icon-unduh\"><\/div>\r\n\t\t\t<p class=\"download-text\" style=\"\">Download Now<\/p>\r\n\t\t<\/button>\r\n\t\t\t<\/div>\r\n\t\r\n\t\t<div class=\"download-bottom\" style=\"position: relative;\">\r\n\t\t<div class=\"opacity-ef\"><\/div>\r\n\t\t<img decoding=\"async\" class=\"download-img\" src=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/image-2.webp\" alt=\"\">\r\n\t<\/div>\r\n\t<\/div>\r\n\r\n\r\n<style>\r\n\t.button-wrapper{\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new p.download-text{\r\n\t\tmargin-bottom: 0;\r\n\t\tcolor: #9C171E;\r\n\t}\r\n\t\r\n\t.color-me-white{\r\n\t\tcolor: #FFF !important;\r\n\t}\r\n\t.download-bottom, .download-top{\r\n\t\tmargin-top: 32px;\r\n\t\theight: 250px;\r\n\t\toverflow: hidden;\r\n\t\tborder-radius: 8px 8px 0 0;\r\n\t}\r\n\t\r\n\t.download-top{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t.download-img{\r\n\t\twidth: 100%;\r\n\/* \t\tfilter: blur(1px); *\/\r\n\t}\r\n\r\n\t.opacity-ef{\r\n\t\tposition: absolute;\r\n\t\tdisplay: block;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tbottom: 0;\r\n\t\tbackground-image: linear-gradient(180deg, rgba(255, 255, 255, 0.00) 35%, #FFF 88%);\r\n\t\tbackdrop-filter: blur(1px);\r\n\t\tz-index: 1;\r\n\t\twidth: 100%;\r\n\t}\r\n\t\r\n\t.download-wrapper.new{\r\n\t\tbackground: unset;\r\n\t\tpadding: 40px 16px;\r\n\t\tborder-radius: unset;\r\n\t\tborder-bottom: 2px solid #D9D9D9;\r\n\t\tborder-top: 2px solid #D9D9D9;\r\n\t}\r\n\t\r\n\t.icon-unduh{\r\n\t\tbackground-image: url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/11\/icon-unduh.webp');\r\n\t\tbackground-size: cover;\r\n\t\tbackground-repeat: no-repeat;\r\n\t\tbackground-position: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn{\r\n\t\twidth: 200px;\r\n\t\tpadding: 10px 14px;\r\n\t\tmargin-right: 16px;\r\n\t\tcolor: #FFF !important;\r\n\t\tbox-shadow: 5px 6px 16px 0px rgba(0, 0, 0, 0.25);\r\n\t\tjustify-content: center;\r\n\t}\r\n\t\r\n\t.new .downloadBtn:last-child{\r\n\t\tmargin-right: 0;\r\n\t}\r\n\t\r\n\t.new .download-desc{\r\n\t\tcolor: #282828 !important;\r\n\t\ttext-align: center;\r\n\t\tfont-size: 27px !important;\r\n\t\tfont-style: normal;\r\n\t\tfont-weight: 700;\r\n\t\tline-height: 28px;\r\n\t\tmargin-bottom: 24px !important;\r\n\t}\r\n\t\r\n\t.btn-pdf{\r\n\t\tborder: 2px solid #D01517;\r\n\t\tbackground: #D01517;\r\n\t}\r\n\t\r\n\t.btn-word{\r\n\t\tborder: 2px solid #25589A;\r\n\t\tbackground: #25589A;\r\n\t}\r\n\t\r\n\t.btn-excel{\r\n\t\tborder: 2px solid #20744A;\r\n\t\tbackground: #20744A;\r\n\t}\r\n\t\r\n\t.d-none{\r\n\t\tdisplay: none;\r\n\t}\r\n\t\r\n\t@media (min-width:992px) and (max-width:1399px){\r\n\t\tp.download-text{\r\n\t\t\tfont-size: 14px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:991px){\r\n\t\t.button-wrapper{\r\n\t\t\tdisplay: block;\r\n\t\t}\r\n\t\t\r\n\t\t.new .downloadBtn{\r\n\t\t\twidth: 100%;\r\n\t\t\tmargin-left: 0;\r\n\t\t\tmargin-right: 0;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.download-bottom{\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t\t\r\n\t\t.download-top{\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 16px;\r\n\t\t}\r\n\t\t\r\n\t\t.new .download-desc{\r\n\t\t\tmargin-bottom: 16px !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:576px){\r\n\t\t.download-top{\r\n\t\t\theight: 120px;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.querySelectorAll('.downloadBtn').forEach(button=>{\r\n\t\tconst formatData = button.getAttribute('data-format');\r\n\t\tconst btnText = button.querySelector('.download-text');\r\n\t\tconst linkData = button.getAttribute('data-link');\r\n\t\tconst iconUnduh = button.querySelector('.icon-unduh');\r\n\t\tconst popupContent = button.getAttribute('popup-content');\r\n\t\t\r\n\t\tif(formatData == 'pdf'){\r\n\t\t\tbutton.classList.add('btn-pdf'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download PDF\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/teenyicons_pdf-solid.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'word'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Word\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/file-icons_microsoft-word.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'excel'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Excel\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/vscode-icons_file-type-excel2.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'docs'){\r\n\t\t\tbutton.classList.add('btn-word'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Docs\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googledocs.webp')\"\r\n\t\t}\r\n\t\tif(formatData == 'sheet'){\r\n\t\t\tbutton.classList.add('btn-excel'); \r\n\t\t\tbtnText.classList.add('color-me-white');\r\n\t\t\tbtnText.innerHTML = \"Download Sheet\";\r\n\t\t\ticonUnduh.style.backgroundImage = \"url('https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2024\/12\/simple-icons_googlesheets.webp')\"\r\n\t\t}\r\n\t\t\r\n\t\tif(linkData == ''){\r\n\t\t\tbutton.classList.add('d-none');\r\n\t\t}\r\n\t})\r\n<\/script>\n<h2 id=\"industry-specific-use-cases-for-inventory-reports\"><strong>Industry-Specific Use Cases for Inventory Reports<\/strong><\/h2>\n<p><span data-sheets-root=\"1\"><style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            Accurate inventory reporting transformed how we manage stock. We reduced excess inventory and improved fulfilment reliability within months.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>Kaia Lockwood, Senior Product Manager<\/em>\r\n    <\/p>\r\n<\/div><\/span><\/p>\n<p data-start=\"6794\" data-end=\"6917\">Inventory reporting adapts to industry demands and operating models. Each sector focuses on different risks and priorities.<\/p>\n<h3 id=\"retail-and-omnichannel\">1. Retail and omnichannel commerce<\/h3>\n<p data-start=\"6956\" data-end=\"7095\">Retailers rely on real-time stock visibility across stores and online channels. Accurate reports prevent overselling and fulfilment errors.<\/p>\n<p data-start=\"7097\" data-end=\"7169\">They also support flexible fulfilment options across multiple locations.<\/p>\n<h3 id=\"manufacturing-and-production\">2. Manufacturing and production<\/h3>\n<p data-start=\"7205\" data-end=\"7346\">Manufacturers track raw materials, work in progress, and finished goods separately to ensure production runs without interruption.<\/p>\n<p data-start=\"7205\" data-end=\"7346\">A useful inventory report for a manufacturing business should capture component consumption per production run and any variance against the Bill of Materials.<\/p>\n<h3 id=\"healthcare-and-pharmaceuticals\">3. Healthcare and pharmaceuticals<\/h3>\n<p data-start=\"7458\" data-end=\"7603\">Healthcare inventory reporting prioritises safety and compliance. Expiry dates, batch numbers, and controlled substances require strict tracking.<\/p>\n<p data-start=\"7605\" data-end=\"7672\">Reports ensure items remain safe, traceable, and properly recorded.<\/p>\n<h3 id=\"food-and-beverage\">4. Food and beverage<\/h3>\n<p data-start=\"7697\" data-end=\"7812\">Perishable goods demand close shelf-life monitoring. Inventory reports highlight spoilage risks and usage variance.<\/p>\n<p data-start=\"7814\" data-end=\"7865\">This reduces waste while protecting profit margins.<\/p>\n<h2 data-section-id=\"cvjieh\" data-start=\"7872\" data-end=\"7915\"><strong>Inventory Reporting Implementation Guide<\/strong><\/h2>\n<p data-start=\"7917\" data-end=\"8057\">Moving to structured inventory reporting requires alignment across systems and teams. A clear approach ensures reliable data from the start.<\/p>\n<h3 data-section-id=\"bw6svy\" data-start=\"8059\" data-end=\"8092\">1. Reporting objectives and KPIs<\/h3>\n<p data-start=\"8094\" data-end=\"8215\">Define what the business wants to improve, such as availability or holding costs. Then align reports to those objectives.<\/p>\n<p data-start=\"8217\" data-end=\"8264\">Clear KPIs keep reporting focused and relevant.<\/p>\n<h3 data-section-id=\"1vqwjn4\" data-start=\"8266\" data-end=\"8290\">2. Baseline stock audit<\/h3>\n<p data-start=\"8292\" data-end=\"8398\">A full stock count establishes accurate opening data. It also allows removal of obsolete or damaged items.<\/p>\n<p data-start=\"8400\" data-end=\"8455\">This creates a clean foundation for reliable reporting.<\/p>\n<h3 data-section-id=\"1lr80fr\" data-start=\"8457\" data-end=\"8480\">3. SKU standardisation<\/h3>\n<p data-start=\"8482\" data-end=\"8592\">Consistent SKU rules prevent duplicate records and data confusion. Everyone must follow the same naming logic supported by proper <a href=\"https:\/\/www.hashmicro.com\/au\/blog\/abc-analysis\/\">inventory classification.<\/a><\/p>\n<p data-start=\"8594\" data-end=\"8645\">Standardisation protects long-term report accuracy.<\/p>\n<h3 data-section-id=\"1daif5c\" data-start=\"8647\" data-end=\"8680\">4. Inventory management software<\/h3>\n<p data-start=\"8682\" data-end=\"8801\">Modern inventory software automates updates across sales and purchasing systems. This removes manual errors and delays.<\/p>\n<p data-start=\"8803\" data-end=\"8858\">Integrated systems keep reports current and dependable.<\/p>\n<h3 data-section-id=\"1dt4n57\" data-start=\"8860\" data-end=\"8886\">5. Cycle counting routine<\/h3>\n<p data-start=\"8888\" data-end=\"8993\">Regular cycle counts keep data accurate between full stocktakes. Small discrepancies are corrected early.<\/p>\n<p data-start=\"8995\" data-end=\"9051\">This practice maintains long-term reporting reliability.<\/p>\n<h3 data-section-id=\"1sxgrd0\" data-start=\"9053\" data-end=\"9086\">6. Automated report distribution<\/h3>\n<p data-start=\"9088\" data-end=\"9209\">Scheduled reports ensure the right people receive the right data. Each role gets relevant insights without manual effort.<\/p>\n<p data-start=\"9211\" data-end=\"9262\">Automation improves consistency and accountability.<\/p>\n<h3 id=\"step-2-conduct-a-comprehensive-baseline-audit\"><strong><span style=\"font-size: 27px;\">Common Pitfalls in Inventory Reporting and How to Avoid Them<\/span><\/strong><\/h3>\n<p data-start=\"9334\" data-end=\"9482\">Inventory reporting errors often stem from process gaps and outdated tools. Recognising them early prevents larger financial and operational issues.<\/p>\n<ul>\n<li data-start=\"9484\" data-end=\"9643\"><strong data-start=\"9484\" data-end=\"9522\">Over-reliance on manual data entry<\/strong> leads to errors and outdated reports. Automated systems reduce human mistakes and keep data current across all channels.<\/li>\n<li data-start=\"9645\" data-end=\"9811\"><strong data-start=\"9645\" data-end=\"9669\">Disconnected systems<\/strong> create delays and inconsistencies between departments. Integrated platforms ensure data flows smoothly between sales, inventory, and finance.<\/li>\n<li data-start=\"9813\" data-end=\"9951\"><strong data-start=\"9813\" data-end=\"9832\">Ghost inventory<\/strong> causes unexpected stockouts and missed sales. Regular cycle counting keeps records aligned with physical stock levels.<\/li>\n<li data-start=\"218\" data-end=\"381\"><strong>Ignoring historical trends<\/strong> limits forecasting accuracy. Tracking performance over time supports stronger planning decisions and helps with <a href=\"https:\/\/www.hashmicro.com\/au\/blog\/dead-stock\/\">managing dead stock.<\/a><\/li>\n<\/ul>\n<p><strong><span style=\"color: #111111; font-family: Roboto, sans-serif; font-size: 27px;\">Advanced Inventory Reporting Practices<\/span><\/strong><\/p>\n<p data-start=\"10131\" data-end=\"10294\">As supply chains grow more complex, advanced reporting methods provide stronger control and insight. These practices help businesses stay responsive and efficient.<\/p>\n<ul>\n<li data-start=\"10296\" data-end=\"10455\"><strong data-start=\"10296\" data-end=\"10343\">Predictive analytics and demand forecasting<\/strong> use historical patterns to anticipate future needs. This allows proactive purchasing and balanced stock levels.<\/li>\n<li data-start=\"10457\" data-end=\"10608\"><strong data-start=\"10457\" data-end=\"10488\">RFID and real-time tracking<\/strong> update inventory automatically as goods move. Reports reflect exact locations, reducing handling time and labour costs.<\/li>\n<li data-start=\"10610\" data-end=\"10752\"><strong data-start=\"10610\" data-end=\"10635\">Role-based dashboards<\/strong> deliver tailored insights to each team. Finance, operations, and warehouse staff access metrics that matter to them.<\/li>\n<li data-start=\"10754\" data-end=\"10897\"><strong data-start=\"10754\" data-end=\"10781\">Sustainability tracking<\/strong> highlights waste, transport impact, and spoilage. These insights support cost reduction and responsible operations.<\/li>\n<\/ul>\n<h2 data-section-id=\"xhfwop\" data-start=\"123\" data-end=\"139\"><strong>Conclusion<\/strong><\/h2>\n<p data-start=\"141\" data-end=\"381\">An inventory report gives a business the clarity needed to manage stock with confidence. When used consistently, it supports better purchasing decisions, reduces unnecessary holding costs, and strengthens financial accuracy across the year.<\/p>\n<p data-start=\"383\" data-end=\"646\">By applying structured inventory control and reviewing reports regularly, companies gain tighter control over cash flow and fulfilment performance. If you want tailored guidance, book a <a href=\"https:\/\/www.hashmicro.com\/au\/free-product-tour\/\"><strong data-start=\"569\" data-end=\"590\">free consultation<\/strong><\/a> with our team to review your current inventory process.<\/p>\n<p data-start=\"383\" data-end=\"646\"><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/au\/inventory?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Inventory.webp\" alt=\"Inventory Management\"><\/a><\/span><\/p>\n<p data-start=\"383\" data-end=\"646\"><h2 class=\"faqTitle\">Frequently Asked Question<\/h2>\r\n<style>\r\n\t#main-article p.faqTitle{\r\n\t\ttext-align: center;\r\n\t\tmargin-bottom: 0;\r\n\t\tmargin-top: 50px;\r\n\t\tfont-weight: bold;\r\n\t}\r\n\t\r\n\t.accordion-wrapper{\r\n\t\tbackground-color: white;\r\n\t\tborder: 1px solid #9c171e;\r\n\t\tborder-radius: 6px;\r\n\t\ttransition: 0.4s ease;\r\n\t\tmargin-bottom: 20px;\r\n\t\toverflow: hidden;\r\n\t}\r\n\t\r\n\t.header-faq{\r\n\t\tdisplay: flex;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\talign-items: center;\r\n\t\tpadding: 18px;\r\n\t\ttransition: 0.4s;\r\n\t\tcursor: pointer;\r\n\t\tjustify-content: space-between;\r\n\t}\r\n\t\r\n\t.header-faq p{\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t.question {\r\n\t\tcolor: #3C3C3C;\r\n\t\twidth: 100%;\r\n\t\ttext-align: left;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 20px;\r\n\t \ttransition: 0.4s;\r\n\t\tborder: none;\r\n\t\tborder-radius: 6px 6px 6px 6px;\r\n\t\tbackground: #FFF;\r\n\t\tpadding: 0;\r\n\t\ttext-transform: uppercase;\r\n\t\tfont-weight: 700;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between;\r\n\t\talign-items: center;\r\n\t}\r\n\r\n\t.header-faq.active {\r\n\t  background-color: #FFF;\r\n\t}\r\n\t\r\n\tbutton.question{\r\n\t\tcolor: unset;\r\n\t\tbackground-color: unset;\r\n\t}\r\n\t\r\n\tbutton.question::after{\r\n\t\tcontent: \"<\";\r\n\t\twidth: 2.2rem;\r\n\t\theight: 2.2rem;\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: center;\r\n\t\talign-items: center;\r\n\t\tborder-radius: 50%;\r\n\t\tcolor: #FFF;\r\n\t\tflex-shrink: 0;\r\n\t\tfloat: right;\r\n\t\ttransition: 0.4s;\r\n\t\topacity: 0.4;\r\n\t\tposition: relative;\r\n\t\ttransform: rotate(-90deg);\r\n\t\tbackground-color: #9c171e;\r\n\t\tfont-family: monospace;\r\n\t}\r\n\r\n\t.answer {\r\n\t  padding: 0 18px;\r\n\t  max-height: 0;\r\n\t  overflow: hidden;\r\n\t  background-color: white;\r\n\t  border-radius: 0 0 6px 6px;\r\n\t  transition: max-height 0.4s ease, opacity 0.4s ease;\r\n\t  opacity: 0;\r\n\t}\r\n\r\n\t.answer p{\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: 400;\r\n\t\tline-height: 28px;\r\n\t\ttext-align: left;\r\n\t\ttext-transform: none;\r\n\t\tcolor: #494949;\r\n\t}\r\n\t\r\n\t.accordion-wrapper.active{\r\n\t\tbox-shadow: 0px 0px 20px 0px #4034AB38;\r\n\t}\r\n\t\r\n\t.header-faq.active .accordion-icon .vLine{\r\n\t\ttransform: translateX(-50%) rotate(0deg);\r\n\t}\r\n\r\n\t.header-faq.active + .answer {\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq.active button.question::after{\r\n\t\ttransform: rotate(90deg);\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.header-faq:hover button.question::after{\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t.faq-h3-addition {\r\n\t\tmargin: 0 !important;\r\n\t\tpadding-right: 15px;\r\n\t\tmin-width: 0;\r\n\t}\r\n<\/style>\r\n\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">What is inventory control and why is it important?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Inventory control tracks stock levels to ensure products are available without overstocking. It protects cash flow and improves fulfilment reliability.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">What are the main methods of inventory control?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Common methods include perpetual systems, periodic stocktakes, reorder points, and ABC analysis. These methods improve accuracy and planning.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">How does inventory control reduce costs?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Inventory control reduces storage, handling, and spoilage costs while preventing capital from being tied up in dead stock.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">What is the difference between inventory management and inventory control?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Inventory control focuses on stock accuracy, while inventory management includes purchasing, forecasting, and fulfilment activities.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"accordion-wrapper\">\r\n        <div class=\"header-faq\">\r\n            <button class=\"question\">How often should inventory be reviewed?<\/button>\r\n        <\/div>\r\n        <div class=\"answer\">\r\n            <p>Most businesses review inventory daily through systems and conduct cycle counts weekly or monthly to maintain accuracy.<\/p>\r\n        <\/div>\r\n    <\/div>\r\n\r\n<script>\r\n    function toggleAccordion() {\r\n        var acc = document.getElementsByClassName(\"header-faq\");\r\n        for (var i = 0; i < acc.length; i++) {\r\n            acc[i].addEventListener(\"click\", function() {\r\n                for (var j = 0; j < acc.length; j++) {\r\n                    if (acc[j] !== this && acc[j].classList.contains(\"active\")) {\r\n                        acc[j].classList.remove(\"active\");\r\n                        acc[j].closest('.accordion-wrapper').classList.remove('active');\r\n                        var panel = acc[j].nextElementSibling;\r\n                        panel.style.maxHeight = null;\r\n                    }\r\n                }\r\n\r\n                this.classList.toggle(\"active\");\r\n                var accordionWrapper = this.closest('.accordion-wrapper');\r\n                var panel = this.nextElementSibling;\r\n                if (this.classList.contains(\"active\")) {\r\n                    panel.style.maxHeight = panel.scrollHeight + \"px\";\r\n                    accordionWrapper.classList.add('active');\r\n                } else {\r\n                    panel.style.maxHeight = null;\r\n                    accordionWrapper.classList.remove('active');\r\n                }\r\n            });\r\n        }\r\n    }\r\n\r\n    document.addEventListener('DOMContentLoaded', toggleAccordion);\r\n<\/script>\r\n\r\n<!-- <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        document.querySelectorAll('.header-faq .question').forEach(btn => {\r\n            const text = btn.textContent.trim();\r\n            const h3 = document.createElement('h3');\r\n            h3.textContent = text;\r\n            h3.className = \"faq-h3-addition\";\r\n            btn.textContent = '';\r\n            btn.appendChild(h3);\r\n        });\r\n    });\r\n<\/script> --><\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is inventory control and why is it important?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Inventory control is the process of tracking stock levels to ensure products are available without excess inventory. It helps protect cash flow and improve fulfilment accuracy.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What are the main methods of inventory control?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Common methods include perpetual inventory systems, periodic stocktakes, reorder point planning, and ABC analysis to support accurate tracking.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How does inventory control reduce costs?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Inventory control reduces storage, handling, and spoilage costs while limiting capital tied up in slow-moving or dead stock.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the difference between inventory management and inventory control?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Inventory control focuses on maintaining accurate stock levels, while inventory management includes forecasting, purchasing, warehousing, and fulfilment.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How often should inventory be reviewed?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Inventory should be monitored daily through systems and verified using weekly or monthly cycle counts to maintain accuracy.\"\n      }\n    }\n  ]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>An inventory report gives a clear view of what stock a business holds, where it sits, and how fast it moves. This visibility supports cash flow control, purchasing decisions, and reliable order fulfilment across sales channels. For companies managing physical goods, knowing stock position at any moment helps prevent delays and wasted capital. It also [&hellip;]<\/p>\n","protected":false},"author":51,"featured_media":2641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[56],"tags":[181],"class_list":{"0":"post-2597","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory","8":"tag-inventory-report"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Inventory Report Explained: Types, Uses, and Best Practices<\/title>\n<meta name=\"description\" content=\"Learn what an inventory report is, why it matters, and how to use it to improve stock control, forecasting, and EOFY readiness.\" \/>\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\/au\/blog\/inventory-report\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inventory Report Explained: Types, Uses, and Best Practices\" \/>\n<meta property=\"og:description\" content=\"Learn what an inventory report is, why it matters, and how to use it to improve stock control, forecasting, and EOFY readiness.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Australia\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-22T09:22:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-02T06:51:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory-Report-Hashmicro-1.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"400\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Isla Avery Young\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Isla Avery Young\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/\"},\"author\":{\"name\":\"Isla Avery Young\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/d6c3d199b3a724e06ff32dfd866ebdc3\"},\"headline\":\"Inventory Report Explained: Types, Uses, and Best Practices\",\"datePublished\":\"2026-04-22T09:22:57+00:00\",\"dateModified\":\"2026-06-02T06:51:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/\"},\"wordCount\":2729,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Inventory-Report-Hashmicro-1.webp\",\"keywords\":[\"inventory report\"],\"articleSection\":[\"Inventory\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/\",\"name\":\"Inventory Report Explained: Types, Uses, and Best Practices\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Inventory-Report-Hashmicro-1.webp\",\"datePublished\":\"2026-04-22T09:22:57+00:00\",\"dateModified\":\"2026-06-02T06:51:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/d6c3d199b3a724e06ff32dfd866ebdc3\"},\"description\":\"Learn what an inventory report is, why it matters, and how to use it to improve stock control, forecasting, and EOFY readiness.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Inventory-Report-Hashmicro-1.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/04\\\/Inventory-Report-Hashmicro-1.webp\",\"width\":800,\"height\":400,\"caption\":\"Inventory Report\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/inventory-report\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inventory Report Explained: Types, Uses, and Best Practices\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/\",\"name\":\"HashMicro Australia\",\"description\":\"Business Management Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/#\\\/schema\\\/person\\\/d6c3d199b3a724e06ff32dfd866ebdc3\",\"name\":\"Isla Avery Young\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Isla-Avery-Young-WP-96x96.webp\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Isla-Avery-Young-WP-96x96.webp\",\"contentUrl\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/cropped-Isla-Avery-Young-WP-96x96.webp\",\"caption\":\"Isla Avery Young\"},\"description\":\"As a business development staff, I spend my time listening to the real problems teams face on the inventory and warehouse operations. It gives me a clear view of what businesses usually miss, where errors start, which handoffs break, and what visibility leaders need to stop firefighting. I share that perspective in my articles.\",\"url\":\"https:\\\/\\\/www.hashmicro.com\\\/au\\\/blog\\\/author\\\/isla-avery-young\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Inventory Report Explained: Types, Uses, and Best Practices","description":"Learn what an inventory report is, why it matters, and how to use it to improve stock control, forecasting, and EOFY readiness.","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\/au\/blog\/inventory-report\/","og_locale":"en_US","og_type":"article","og_title":"Inventory Report Explained: Types, Uses, and Best Practices","og_description":"Learn what an inventory report is, why it matters, and how to use it to improve stock control, forecasting, and EOFY readiness.","og_url":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/","og_site_name":"HashMicro Australia","article_published_time":"2026-04-22T09:22:57+00:00","article_modified_time":"2026-06-02T06:51:39+00:00","og_image":[{"width":800,"height":400,"url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory-Report-Hashmicro-1.webp","type":"image\/webp"}],"author":"Isla Avery Young","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Isla Avery Young","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/"},"author":{"name":"Isla Avery Young","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/d6c3d199b3a724e06ff32dfd866ebdc3"},"headline":"Inventory Report Explained: Types, Uses, and Best Practices","datePublished":"2026-04-22T09:22:57+00:00","dateModified":"2026-06-02T06:51:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/"},"wordCount":2729,"commentCount":0,"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory-Report-Hashmicro-1.webp","keywords":["inventory report"],"articleSection":["Inventory"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/","url":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/","name":"Inventory Report Explained: Types, Uses, and Best Practices","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory-Report-Hashmicro-1.webp","datePublished":"2026-04-22T09:22:57+00:00","dateModified":"2026-06-02T06:51:39+00:00","author":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/d6c3d199b3a724e06ff32dfd866ebdc3"},"description":"Learn what an inventory report is, why it matters, and how to use it to improve stock control, forecasting, and EOFY readiness.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#primaryimage","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory-Report-Hashmicro-1.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/04\/Inventory-Report-Hashmicro-1.webp","width":800,"height":400,"caption":"Inventory Report"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/au\/blog\/inventory-report\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/au\/blog\/"},{"@type":"ListItem","position":2,"name":"Inventory Report Explained: Types, Uses, and Best Practices"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#website","url":"https:\/\/www.hashmicro.com\/au\/blog\/","name":"HashMicro Australia","description":"Business Management Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/au\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/au\/blog\/#\/schema\/person\/d6c3d199b3a724e06ff32dfd866ebdc3","name":"Isla Avery Young","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Isla-Avery-Young-WP-96x96.webp","url":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Isla-Avery-Young-WP-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/au\/blog\/wp-content\/uploads\/2026\/02\/cropped-Isla-Avery-Young-WP-96x96.webp","caption":"Isla Avery Young"},"description":"As a business development staff, I spend my time listening to the real problems teams face on the inventory and warehouse operations. It gives me a clear view of what businesses usually miss, where errors start, which handoffs break, and what visibility leaders need to stop firefighting. I share that perspective in my articles.","url":"https:\/\/www.hashmicro.com\/au\/blog\/author\/isla-avery-young\/"}]}},"_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/2597","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/users\/51"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/comments?post=2597"}],"version-history":[{"count":11,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/2597\/revisions"}],"predecessor-version":[{"id":5006,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/posts\/2597\/revisions\/5006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media\/2641"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/media?parent=2597"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/categories?post=2597"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/au\/blog\/wp-json\/wp\/v2\/tags?post=2597"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}