{"id":364445,"date":"2026-10-27T15:36:02","date_gmt":"2026-10-27T15:36:02","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/boris-stock-inventory-management-for-woocommerce\/"},"modified":"2026-10-27T19:42:37","modified_gmt":"2026-10-27T19:42:37","slug":"boris-stock-inventory-management","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/boris-stock-inventory-management\/","author":23560963,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.1.4","requires":"6.9","requires_php":"8.1","requires_plugins":null,"header_name":"BORIS Stock \u2013 Inventory Management for WooCommerce","header_author":"BORIS Systems","header_description":"Physical warehouse locations, pick lists and inventory control for WooCommerce.","assets_banners_color":"061f34","last_updated":"2026-10-27 19:42:37","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/borissystems.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":60,"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":"borissystems","date":"2026-10-27 19:42:37","revision":3769361}},"upgrade_notice":{"1.0.2":"<p>Adds the BORIS media tree to the product-photo picker and an optional preview-first organizer for existing WooCommerce product images. Existing attachments, URLs, products, galleries, BORIS stock data and warehouse operations are preserved.<\/p>","1.0.1":"<p>Adds the BORIS Stock new-product workflow while preserving existing products, mappings, locations, physical stock, history, settings, orders and pick lists.<\/p>","1.0.0":"<p>Upgrading from 0.1.1 or 0.1.2 preserves BORIS Stock products, WooCommerce links, warehouse locations, location stock, import state, inventory movements, orders, pick lists, settings and assigned capabilities. Back up the WordPress database and files before any production update.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3768945,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3768945,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3768945,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3768945,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":{"screenshot-1-nl_NL.png":{"filename":"screenshot-1-nl_NL.png","revision":3768945,"resolution":"1","location":"assets","locale":"nl_NL","width":1264,"height":851},"screenshot-1.png":{"filename":"screenshot-1.png","revision":3768945,"resolution":"1","location":"assets","locale":"","width":1264,"height":851},"screenshot-2-nl_NL.png":{"filename":"screenshot-2-nl_NL.png","revision":3768945,"resolution":"2","location":"assets","locale":"nl_NL","width":1265,"height":712},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3768945,"resolution":"2","location":"assets","locale":"","width":1265,"height":712},"screenshot-3-nl_NL.png":{"filename":"screenshot-3-nl_NL.png","revision":3768945,"resolution":"3","location":"assets","locale":"nl_NL","width":1264,"height":851},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3768945,"resolution":"3","location":"assets","locale":"","width":1264,"height":851},"screenshot-4-nl_NL.png":{"filename":"screenshot-4-nl_NL.png","revision":3768945,"resolution":"4","location":"assets","locale":"nl_NL","width":1265,"height":712},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3768945,"resolution":"4","location":"assets","locale":"","width":1265,"height":712},"screenshot-5-nl_NL.png":{"filename":"screenshot-5-nl_NL.png","revision":3768945,"resolution":"5","location":"assets","locale":"nl_NL","width":1265,"height":712},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3768945,"resolution":"5","location":"assets","locale":"","width":1264,"height":972},"screenshot-6-nl_NL.png":{"filename":"screenshot-6-nl_NL.png","revision":3768945,"resolution":"6","location":"assets","locale":"nl_NL","width":1265,"height":712},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3768945,"resolution":"6","location":"assets","locale":"","width":1264,"height":851}},"screenshots":[]},"plugin_section":[],"plugin_tags":[6601,139515,12448,13907,286],"plugin_category":[45],"plugin_contributors":[288995],"plugin_business_model":[],"class_list":["post-364445","plugin","type-plugin","status-publish","hentry","plugin_tags-inventory","plugin_tags-picklist","plugin_tags-stock","plugin_tags-warehouse","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-borissystems","plugin_committers-borissystems"],"banners":{"banner":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/banner-772x250.png?rev=3768945","banner_2x":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/banner-1544x500.png?rev=3768945","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/icon-128x128.png?rev=3768945","icon_2x":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/icon-256x256.png?rev=3768945","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/screenshot-1.png?rev=3768945","caption":""},{"src":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/screenshot-2.png?rev=3768945","caption":""},{"src":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/screenshot-3.png?rev=3768945","caption":""},{"src":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/screenshot-4.png?rev=3768945","caption":""},{"src":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/screenshot-5.png?rev=3768945","caption":""},{"src":"https:\/\/ps.w.org\/boris-stock-inventory-management\/assets\/screenshot-6.png?rev=3768945","caption":""}],"raw_content":"<!--section=description-->\n<p>BORIS Stock adds physical warehouse control to WooCommerce while keeping WooCommerce responsible for total sellable stock.<\/p>\n\n<p>The guided dashboard helps a new user create warehouse locations, import supported WooCommerce products and allocate the existing WooCommerce stock as the initial physical stock. Import and placement are idempotent: repeating either step does not duplicate or reset stock.<\/p>\n\n<p>Products without a physical location remain valid and sellable in WooCommerce. Their orders remain visible in BORIS Stock and wait for sufficient physical location stock before they can be processed.<\/p>\n\n<p>Daily warehouse tools support receiving stock, booking out stock, moving stock between locations, smart receiving-location suggestions and protected pick-list processing. Completing a BORIS Stock pick list changes physical location stock only and never reduces WooCommerce stock a second time.<\/p>\n\n<p>The responsive pick-list screen works on phones and lets authorized warehouse users enter the actual picked quantities and complete the pick list safely. The same pick list can then be printed or saved as a PDF.<\/p>\n\n<p>Authorized warehouse users can also create a normal WooCommerce simple product from BORIS Stock, including product images, prices, descriptions, categories and shipping measurements, then divide its opening stock across existing warehouse locations. Product photos can be selected or uploaded together, assigned one main photo and ordered for the WooCommerce gallery. Optional hierarchical BORIS photo folders organize ordinary Media Library attachments without moving files or changing attachment URLs. WooCommerce remains the product catalogue and receives the total stock only once.<\/p>\n\n<p>The plugin records reservations, actual picked quantities, physical shortages and an immutable inventory ledger. New receipts resolve the oldest physical shortages first using FIFO.<\/p>\n\n<p>BORIS Stock deliberately does not support WooCommerce backorders, fractional quantities or variations that inherit stock from their parent product. Unsupported configurations are shown as persistent issues.<\/p>\n\n<p>No external service, telemetry, tracking or BORIS Cloud connection is used.<\/p>\n\n<p>Documentation: https:\/\/borissystems.com\/boris-stock\/<\/p>\n\n<p>Official website: https:\/\/borissystems.com\/<\/p>\n\n<p>Support: support@borissystems.com<\/p>\n\n<h3>Privacy and Email<\/h3>\n\n<p>BORIS Stock does not send telemetry, analytics or tracking data and does not connect to BORIS Cloud or another fixed external API.<\/p>\n\n<p>The plugin can send operational plain-text email through the standard WordPress <code>wp_mail()<\/code> function and the mail transport configured by the site owner. A warehouse email is sent only when an authorized user requests it, or when an authorized administrator has explicitly enabled automatic pick-list email. Automatic email is disabled by default. The recipient is the warehouse address configured under BORIS Stock &gt; Settings, or an alternative address explicitly entered for a manual retry.<\/p>\n\n<p>Warehouse emails contain the WooCommerce order number, BORIS pick-list number, product SKU, product name, reserved quantity, warehouse location and a protected WordPress administration link to the pick list. They do not contain the customer name, postal address or payment details.<\/p>\n\n<p>If WordPress cannot confirm a warehouse email and an optional issue-notification address is configured, the plugin sends that address the pick-list number, the mail error and the protected administration link. The site owner controls the recipients and is responsible for the privacy and retention rules of the configured mail service.<\/p>\n\n<h3>Developer Notes<\/h3>\n\n<p>The plugin loads <code>assets\/css\/admin.css<\/code> directly. This file is the readable, non-minified source stylesheet; there is no generated minified counterpart and no CSS build step.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Upload and activate BORIS Stock \u2013 Inventory Management for WooCommerce.<\/li>\n<li>Configure supported products with stock management enabled, a unique SKU and backorders set to \"Do not allow\".<\/li>\n<li>Open BORIS Stock in the WordPress administration menu.<\/li>\n<li>Follow the dashboard steps to create warehouse locations and import the WooCommerce catalogue.<\/li>\n<li>Allocate the imported initial stock across physical locations.<\/li>\n<li>Optionally use BORIS Stock &gt; New product to create a normal WooCommerce product and allocate its opening stock directly.<\/li>\n<li>Use Inventory for receiving, booking out and moving stock, and use Pick Lists to process orders.<\/li>\n<li>Optionally configure the warehouse email address and automatic pick-list email under BORIS Stock &gt; Settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20completing%20a%20pick%20list%20reduce%20woocommerce%20stock%3F\"><h3>Does completing a pick list reduce WooCommerce stock?<\/h3><\/dt>\n<dd><p>No. WooCommerce already owns and reduces sellable stock. Pick completion changes physical BORIS location stock only.<\/p><\/dd>\n<dt id=\"can%20i%20import%20the%20woocommerce%20catalogue%20more%20than%20once%3F\"><h3>Can I import the WooCommerce catalogue more than once?<\/h3><\/dt>\n<dd><p>Yes. The initial stock level is recorded once per product. Importing again does not duplicate or reset previously imported stock.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20products%20without%20a%20warehouse%20location%3F\"><h3>What happens to products without a warehouse location?<\/h3><\/dt>\n<dd><p>They remain valid and sellable in WooCommerce. BORIS Stock keeps related order lines visible, but does not make them executable until sufficient physical location stock has been placed.<\/p><\/dd>\n<dt id=\"are%20refunds%20physical%20returns%3F\"><h3>Are refunds physical returns?<\/h3><\/dt>\n<dd><p>No. Refunds and cancellations after completed picking create a visible return or control issue. Returned goods must be booked explicitly.<\/p><\/dd>\n<dt id=\"how%20are%20physical%20shortages%20handled%3F\"><h3>How are physical shortages handled?<\/h3><\/dt>\n<dd><p>A shortage confirmed during picking creates a BORIS backorder. New receipts resolve the oldest open BORIS backorders FIFO before any remainder becomes sellable.<\/p><\/dd>\n<dt id=\"does%20boris%20stock%20connect%20to%20a%20boris%20server%3F\"><h3>Does BORIS Stock connect to a BORIS server?<\/h3><\/dt>\n<dd><p>No. Version 1.0.2 stores its warehouse data locally in WordPress and has no BORIS Cloud or fixed external API dependency.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added an expandable BORIS photo-folder tree inside the New product media picker.<\/li>\n<li>Added exact per-folder filtering while keeping All media available.<\/li>\n<li>Added safe root-folder and subfolder creation from the media picker.<\/li>\n<li>Added automatic logical folder assignment for every successful upload to a selected BORIS folder.<\/li>\n<li>Added bulk logical moves for existing Media Library images without moving or renaming upload files.<\/li>\n<li>Added safe folder deletion that preserves WordPress attachments and prevents silent subtree changes.<\/li>\n<li>Added a preview-first WooCommerce catalogue organizer that can build logical category and product photo folders in safe batches.<\/li>\n<li>Added deterministic category choices, preservation of manual photo placements and idempotent handling of shared product images.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added creation of normal WooCommerce simple products from BORIS Stock.<\/li>\n<li>Added WordPress Media Library support for a main product image and ordered gallery.<\/li>\n<li>Added virtual hierarchical BORIS photo folders without moving or renaming WordPress upload files.<\/li>\n<li>Added multi-photo selection, main-photo choice and drag-to-order WooCommerce galleries.<\/li>\n<li>Added prices, descriptions, categories, GTIN, weight and dimensions to the new-product form.<\/li>\n<li>Added safe opening-stock allocation across one or more BORIS warehouse locations without increasing WooCommerce stock twice.<\/li>\n<li>Added recoverable drafts and duplicate-submission protection for product creation.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Added guided dashboard onboarding.<\/li>\n<li>Added warehouse locations and physical location inventory.<\/li>\n<li>Added WooCommerce product import with the existing WooCommerce stock recorded as the initial stock level.<\/li>\n<li>Added creation of normal WooCommerce simple products with Media Library images and BORIS opening-stock allocation.<\/li>\n<li>Added safe allocation of initial stock across locations without double counting.<\/li>\n<li>Kept products without a location valid and sellable while their order lines wait for a physical location.<\/li>\n<li>Added receiving, booking out and moving stock.<\/li>\n<li>Added smart location suggestions based on current and previously used locations.<\/li>\n<li>Added protected pick lists, actual picked quantities, physical-shortage handling and FIFO backorder fulfilment.<\/li>\n<li>Added security, privacy, internationalization and WordPress.org submission improvements.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Added guided onboarding, separate Locations and WooCommerce Import pages, and safe initial-stock placement.<\/li>\n<li>Added smart receiving-location suggestions and visibility for products without a physical location.<\/li>\n<li>Made pick-list views read-only and moved the READY-to-PICKING transition to an explicit, protected POST action.<\/li>\n<li>Shipped the admin stylesheet as readable source and documented operational email data.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Corrected all public BORIS Systems links to https:\/\/borissystems.com\/.<\/li>\n<li>Added the BORIS Systems logo to the warehouse administration.<\/li>\n<li>Added optional, idempotent warehouse email for complete pick lists, manual resend and visible failure handling.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial implementation with locations, full allocation, pick lists, physical shortages, FIFO backorder fulfilment, ledger, recovery and HPOS compatibility declaration.<\/li>\n<\/ul>","raw_excerpt":"Manage warehouse stock with mobile pick lists: register picked quantities, complete picking, and print or save each list as PDF.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/364445","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=364445"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/borissystems"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=364445"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=364445"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=364445"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=364445"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=364445"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=364445"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}