{"id":379637,"date":"2026-10-04T17:32:48","date_gmt":"2026-10-04T17:32:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/leanmerce-purchase-planner\/"},"modified":"2026-10-04T17:32:33","modified_gmt":"2026-10-04T17:32:33","slug":"leanmerce-purchase-planner","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/leanmerce-purchase-planner\/","author":23565222,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.2","requires":"6.5","requires_php":"8.0","requires_plugins":null,"header_name":"Leanmerce Purchase Planner","header_author":"Leanmerce","header_description":"WooCommerce purchase planning and replenishment forecasting with supplier purchase orders, incoming stock tracking, XLSX workflows, and read-only stock awareness.","assets_banners_color":"16110e","last_updated":"2026-10-04 17:32:33","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/leanmerce.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":182,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"leanmerce","date":"2026-10-04 17:32:33","revision":3727651}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3727651,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3727651,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3727651,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3727651,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[6601,150354,59098,8370,286],"plugin_category":[45],"plugin_contributors":[281446],"plugin_business_model":[],"class_list":["post-379637","plugin","type-plugin","status-publish","hentry","plugin_tags-inventory","plugin_tags-purchase-orders","plugin_tags-stock-management","plugin_tags-suppliers","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-leanmerce","plugin_committers-leanmerce"],"banners":{"banner":"https:\/\/ps.w.org\/leanmerce-purchase-planner\/assets\/banner-772x250.png?rev=3727651","banner_2x":"https:\/\/ps.w.org\/leanmerce-purchase-planner\/assets\/banner-1544x500.png?rev=3727651","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/leanmerce-purchase-planner\/assets\/icon-128x128.png?rev=3727651","icon_2x":"https:\/\/ps.w.org\/leanmerce-purchase-planner\/assets\/icon-256x256.png?rev=3727651","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>Leanmerce Purchase Planner is a WooCommerce purchase planning and replenishment forecasting tool for merchants who need data-backed reorder quantities, supplier purchase orders, incoming stock visibility and XLSX workflows without turning the planner into the source of truth for WooCommerce stock.<\/p>\n\n<p>It uses WooCommerce sales plus known product-availability evidence to help answer practical purchasing questions: what should be reordered, how much should be ordered, what has the supplier actually confirmed, what is already on the way, and what has been received into the purchasing ledger.<\/p>\n\n<h4>WooCommerce purchase planning and replenishment forecasting<\/h4>\n\n<ul>\n<li>Availability-aware demand analysis using known product availability history.<\/li>\n<li>Calendar analysis or the latest known available days inside a bounded lookback.<\/li>\n<li>Optional bounded older-sales fallback when the selected primary period has no usable demand.<\/li>\n<li>Independent lead-time, coverage and safety-stock settings.<\/li>\n<li>Reorder quantities that account for current stock, confirmed incoming supply, pack size and MOQ rules.<\/li>\n<\/ul>\n\n<h4>Supplier purchase orders and incoming stock<\/h4>\n\n<ul>\n<li>Supplier rules for pack size, MOQ, unit cost, supplier code and notes.<\/li>\n<li>Saved supplier profiles and reusable planning settings.<\/li>\n<li>Purchase-order records in the plugin's own operational ledger.<\/li>\n<li>Incoming-supply tracking across requested, supplier-confirmed, shipped and received states.<\/li>\n<li>Supplier confirmation, ETA and receipt evidence kept separate instead of assuming that a sent order is confirmed stock.<\/li>\n<\/ul>\n\n<h4>XLSX supplier and purchasing workflows<\/h4>\n\n<ul>\n<li>Native XLSX supplier order-form upload, mapping, reconciliation and export workflows.<\/li>\n<li>Native XLSX availability and supplier-rule imports and templates.<\/li>\n<li>Internal Excel exports for purchasing analysis and supplier-facing exports without exposing unnecessary internal sales detail.<\/li>\n<\/ul>\n\n<h4>Stock safety boundary<\/h4>\n\n<p>Purchase Planner observes WooCommerce stock and availability, but it does not become the stock authority. Recording a receipt in Purchase Planner changes only the planner's purchasing ledger. It NEVER increases, decreases or otherwise changes WooCommerce stock.<\/p>\n\n<p>Actual physical stock receipt remains the responsibility of the merchant's normal WooCommerce, ERP, WMS or inventory workflow. This separation helps prevent a planning action from silently changing sellable stock.<\/p>\n\n<h4>Additional capabilities<\/h4>\n\n<ul>\n<li>Saved purchase plans for repeatable purchasing workflows.<\/li>\n<li>Product, variation, taxonomy and SKU selection.<\/li>\n<li>Translation-ready English administration.<\/li>\n<li>Shared Leanmerce admin umbrella integration.<\/li>\n<li>No remote forecasting, telemetry, licensing or remote JavaScript requests in the Free\/Core release.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>None in this Free\/Core release. There are no telemetry, remote forecast, license-validation or remote JavaScript calls. External documentation\/product links, if added in a future release, must require an explicit merchant click.<\/p>\n\n<h3>Source code<\/h3>\n\n<p>The plugin includes human-readable JavaScript source in <code>src\/admin.js<\/code> and <code>src\/forms.js<\/code>. The runtime files <code>assets\/admin.js<\/code> and <code>assets\/forms.js<\/code> are byte-identical copies of those source files. They are not minified, obfuscated, bundled, transpiled or generated by a build tool.<\/p>\n\n<p>No npm, webpack, Babel, Rollup, esbuild or other JavaScript build step is required. To reproduce the runtime JavaScript, copy the corresponding file from <code>src\/<\/code> to <code>assets\/<\/code>. The plugin does not bundle third-party JavaScript libraries. PHP and CSS source is also included directly in the distributed plugin.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce 8.2 or newer.<\/li>\n<li>Upload the plugin ZIP through Plugins &gt; Add New &gt; Upload Plugin and activate it per site. Network activation is not supported.<\/li>\n<li>Open Leanmerce &gt; Purchase Planner.<\/li>\n<li>Review Import &amp; tracking first. Availability history begins when the plugin can observe the SKU, unless verified historical intervals are imported.<\/li>\n<li>Configure a supplier profile and planning parameters.<\/li>\n<li>Build a plan from a taxonomy\/SKU selection, or use Supplier order form to map an existing XLSX order sheet.<\/li>\n<li>Review warnings, quantities, pack\/MOQ effects and incoming supply before exporting or recording a purchase order.<\/li>\n<li>Record supplier confirmation, shipping and receipt evidence as it becomes available.<\/li>\n<li>Receive physical stock through your normal inventory process. Do not use the planner receipt field as a stock adjustment.<\/li>\n<\/ol>\n\n<p>Requirements: WordPress 6.5+, WooCommerce 8.2+, PHP 8.0+, PHP zlib, and a standard MySQL\/MariaDB installation with InnoDB and advisory-lock support.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20this%20a%20woocommerce%20purchase%20planning%20and%20replenishment%20plugin%3F\"><h3>Is this a WooCommerce purchase planning and replenishment plugin?<\/h3><\/dt>\n<dd><p>Yes. It uses WooCommerce sales, stock and known availability evidence to calculate replenishment proposals while accounting for lead time, future coverage, safety stock, incoming supply, pack size and MOQ rules.<\/p><\/dd>\n<dt id=\"is%20this%20a%20woocommerce%20purchase%20order%20plugin%3F\"><h3>Is this a WooCommerce purchase order plugin?<\/h3><\/dt>\n<dd><p>Yes, with an important distinction: Purchase Planner records supplier purchase orders and their requested, confirmed, shipped and received evidence, but its primary purpose is purchasing planning. It does not turn purchase-order receipt entries into WooCommerce stock adjustments.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20change%20woocommerce%20stock%3F\"><h3>Does the plugin change WooCommerce stock?<\/h3><\/dt>\n<dd><p>No. It observes WooCommerce stock\/availability and keeps purchasing evidence in its own tables. Planner receipt entries never write WooCommerce stock.<\/p><\/dd>\n<dt id=\"can%20it%20reconstruct%20historical%20stock%20availability%20at%20installation%20time%3F\"><h3>Can it reconstruct historical stock availability at installation time?<\/h3><\/dt>\n<dd><p>No. Current stock and last-sale information cannot prove past availability. Import verified availability intervals when you have them, or collect history going forward.<\/p><\/dd>\n<dt id=\"how%20are%20coupons%20handled%3F\"><h3>How are coupons handled?<\/h3><\/dt>\n<dd><p>Normal promotional coupons reduce the effective sales value. A coupon explicitly classified as a payment instrument can restore the item subtotal for demand\/value analysis. Unknown mixed allocation remains conservative rather than being guessed. Developers can extend classification through the documented filter.<\/p><\/dd>\n<dt id=\"can%20non-inventory%20products%20be%20excluded%3F\"><h3>Can non-inventory products be excluded?<\/h3><\/dt>\n<dd><p>Yes. Set product meta <code>_leanmerce_purchase_planner_exclude<\/code> to <code>yes<\/code>, or use the <code>leanmerce_purchase_planner_is_non_inventory_product<\/code> filter.<\/p><\/dd>\n<dt id=\"does%20it%20include%20external%20pos%20or%20erp%20sales%20automatically%3F\"><h3>Does it include external POS or ERP sales automatically?<\/h3><\/dt>\n<dd><p>No. The Free\/Core plugin reads WooCommerce orders. Sales that exist only in an external POS\/ERP are outside the dataset unless another integration deliberately brings them into the supported order flow.<\/p><\/dd>\n<dt id=\"what%20xlsx%20files%20are%20supported%3F\"><h3>What XLSX files are supported?<\/h3><\/dt>\n<dd><p>The parser accepts ordinary OOXML <code>.xlsx<\/code> workbooks within the documented size and worksheet bounds. It refuses legacy <code>.xls<\/code>, macros\/active content, encrypted\/protected sheets and external-data connections. Mapped input fields must contain values rather than formulas.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20deactivation%20or%20uninstall%3F\"><h3>What happens on deactivation or uninstall?<\/h3><\/dt>\n<dd><p>Monitoring stops and the scheduled tracking hook is cleared. Historical observations, supplier rules and purchase records are deliberately retained. WooCommerce commerce data is never deleted.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Review-readiness: JavaScript administration files are distributed in explicitly human-readable source form and the readme documents that no build\/minification step is used.<\/li>\n<li>Admin notices are limited to the Plugins screen and are used only for blocking WooCommerce-version or startup-ledger errors; no upgrade, review, rating or promotional notices are shown.<\/li>\n<li>Purchase-planning, forecasting, supplier, XLSX and WooCommerce stock behavior are unchanged from 1.0.1.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Fixed: Calendar-estimate checkbox now reaches the normalized backend parameter and saved profiles use the canonical setting while accepting the legacy field name.<\/li>\n<li>Fixed: Bootstrap-quality observed availability can no longer override a much longer unknown history merely because one full observed day exists.<\/li>\n<li>Added: Deterministic availability-evidence gate. Complete evidence is usable immediately; otherwise observed demand requires either 30 usable days or at least 7 usable days covering at least as much time as remains unknown.<\/li>\n<li>When bootstrap evidence is insufficient, the explicitly enabled calendar estimate is used and clearly marked as not corrected for stockouts; with the estimate disabled, the row remains manual\/insufficient rather than inventing availability.<\/li>\n<li>WooCommerce stock remains read-only.<\/li>\n<li>Fixed: Legacy saved report documents using the older <code>calendar_estimate<\/code> key export the Calendar Estimate parameter correctly.<\/li>\n<li>Fixed: Insufficient availability evidence remains a true manual-review state; manual minimum\/trial rules are not auto-approved as demand-based quantities.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First stable Leanmerce Purchase Planner release.<\/li>\n<li>Promoted the Plugin Check-clean 1.0.0-rc.2 codebase to stable without changing forecasting, availability, supplier-confirmation, purchasing, XLSX data-model or WooCommerce-stock behavior.<\/li>\n<li>Improved the WordPress.org readme for clearer discovery around WooCommerce purchase planning, replenishment, supplier purchase orders, inventory, suppliers and stock management while keeping the copy human-readable and within directory anti-spam rules.<\/li>\n<li>Updated release metadata and translation template version to 1.0.0.<\/li>\n<\/ul>","raw_excerpt":"WooCommerce purchase planning, replenishment forecasting, supplier purchase orders, incoming stock tracking and XLSX workflows.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/379637","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=379637"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/leanmerce"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=379637"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=379637"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=379637"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=379637"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=379637"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=379637"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}