=== Stock Locations for WooCommerce ===
Contributors: fahadmahmood,alexmigf,invoicepress
Tags: woocommerce, stock, stock locations, simple product, variable products
Requires at least: 4.9
Tested up to: 6.9
Requires PHP: 7.2
Stable tag: 3.1.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

This plugin will help you to manage WooCommerce Products stocks through locations.


== Description ==
Stock Locations for WooCommerce will help you manage your products stock across multiple locations easily. If you have multiple physical stores or storage locations, like warehouses, this plugin may help you.

You can print the locations inside a product page on the frontend, with this shortcodes:

= Product pages =

`[slw_product_locations show_qty="yes" show_stock_status="no" show_empty_stock="yes" collapsed="no" stock_location_status="enabled"]`
`[slw_product_variations_locations show_qty="yes" show_stock_status="no" show_empty_stock="yes" collapsed="yes" stock_location_status="all|disabled|enabled"]`
`[slw_product_message is_available="yes" only_location_available="no" location="location-slug"]Your custom product message/HTML here[/slw_product_message]`

= Cart page =

`[slw_cart_message qty_from_location="location-slug" only_location_available="no"]Your custom cart message/HTML here[/slw_cart_message]`

= REST API =

REST API endpoints (both accept `GET` and `PUT` requests):

`/wp-json/wc/v3/products/id`
`/wp-json/wc/v3/products/id/variations/id (first ID is for parent product, the second one for the variation ID)`
`/wp-json/wp/v2/location/`
`/wp-json/wp/v2/location/id`


This plugin requires at least *WooCommerce 3.4*.


= Features =

- New taxonomy for stock locations
- Works on both, simple and variable products
- Easy management of stock with multiple locations, both in product and orders
- Get and update product stock locations from the REST API
- Allow customers to select locations when purchasing
- Auto order allocation for locations stock reduction
- Send email notifications when stock is allocated for a product in a location
- Send WooCommerce New Order email copy to item location
- Compatible with WPML


= Compatibility =

- PHP 7.2+


== Installation ==

1. Upload "stock-locations-for-woocommerce" to the "/wp-content/plugins/" directory.
2. Check if you have WooCommerce 3.4+ plugin activated
3. Activate SLW plugin through the "Plugins" menu in WordPress.

**Simple Products**

1. Assign Stock Locations to the product > Update Post
2. Under Inventory Tab > Activate Manage Stock
3. Under Stock Locations Tab > Manage the stock for the locations

**Variable Products**

1. Assign Stock Locations to the product > Update Post
2. Under Inventory Tab > Deativate Manage Stock
3. Under Attributes Tab > Create attributes
4. Under Variations Tab > Create variations based on attributes
5. In each variation > Activate Manage Stock & Add Price > Update Post
6. Under Stock Locations Tab > Manage the stock for the locations for each variation


== Frequently Asked Questions ==

= Problems with wp all import? = 

**&#128073; 1.  How can we make them activate automatically during the import process?**

If you want to make them active, in Import settings check "Taxonomies (incl. Categories and Tags)",
under this chose "Update only these taxonomies, leave the rest alone" and type "location"

Use this with "custom fields: _stock_at_xxx" as warehouse number and import works perfectly.

= Stock Locations | Stock Deductions | Settings and Results =

**&#128073; 1. How auto order allocation work with multiple stock locations?**
[youtube http://www.youtube.com/watch?v=0UbAPmZ2Kco]

**&#128073; 2. How location priority work with auto order stock allocation?**
[youtube http://www.youtube.com/watch?v=9kGVJZNNxRk]

**&#128073; 3. What if all of my locations don't have the sufficient stock ordered?**
If order quantity is within the summation of all stock locations available stock quantity, it will be simply served. If not, auto allocation will not work so admin can decide if he want to deliver the order partially or wait for stock comes in.
[youtube http://www.youtube.com/watch?v=4NXYr24OKFg]

**&#128073; 4. How location email works?**
[youtube http://www.youtube.com/watch?v=zdCdckXEbNw]

**&#128073; 5. Do you want to sell products from only one stock location?**
[youtube http://www.youtube.com/watch?v=rznc0WMbmh4]
[youtube http://www.youtube.com/watch?v=7ZIv_d7prLA]

**&#128073; 6. How to make location selection required on cart page?**
[youtube http://www.youtube.com/watch?v=64N7-b90r3E]

**&#128073; 7. How does it manage the maximum qty. to order according to the stock in a location?**
[youtube http://www.youtube.com/watch?v=gmU3cnk0LjY]

**&#128073; 8. How to allow editing location values on orders after being reduced?**
https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/90
[youtube http://www.youtube.com/watch?v=Q1Lq-cbv2hE]

= How Import/Export work with CSV files? =
[youtube http://www.youtube.com/watch?v=4KCexCuVetk]

= How to use Cron Job? =
[youtube http://www.youtube.com/watch?v=si_DUe-8ncY&t=114s]

= How to use REST API? =
[youtube http://www.youtube.com/watch?v=si_DUe-8ncY]


= How Google Map and Location Archives work in Premium Version? =
[youtube http://www.youtube.com/watch?v=ZgmNWuKFyQI]

= How to lock pre-selected location on frontend? =

Turn ON "Enable default location in frontend selection" from WooCommerce > Stock Locations for WC. This option will allow you to select default location for a product on Product Edit page. Now turn ON "Lock frontend location to default" and it will lock frontend location which is selected as default.

= I found a bug, where I can report it? =
I prefer you to use the Github issues. You can submit a new one here [GitHub](https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/new)

= How to show location stock quantity with a postfix e.g. 20+? =
On settings page you can define a number. If location stock value will be less than the given number, it will display the stock value else will not show the exact number but a plus sign "+" just after the maximum number given.

[youtube http://www.youtube.com/watch?v=nWj5MTLcPjI]




== Screenshots ==

1. Product list filter and stock locations column
2. Stock locations taxonomy
3. Manage stock locations in simple products
4. Manage stock locations in variable products
5. Deduct stock from locations manually
6. Deduct stock from location automatically
7. Allow customers to select locations in cart page
8. Allow customers to select location in variable products
9. Allow customers to select location in simple products
10. Plugin settings
11. Show location stock quantity with a postfix e.g. 20+
12. Edit Stock locations taxonomy
13. Lock default location on frontend.
14. Set price for product as per each stock location.
15. Pre-select default location on product page (frontend).
16. Stock locations for each variation.
17. How to allow editing location values on orders after being reduced?


== Changelog ==
= 3.1.4 =
* Fix: Bug with variation stock status querying (PR #171). Variations were getting their is_in_stock queried, and reporting incorrectly they were out of stock. [Thanks to kennydude / Joe Simpson][30/04/2026]

= 3.1.1 =
* Fix: Corrected stock status calculation when all locations have zero stock to prevent false "in stock" state. [Thanks to @armanuniverse][06/04/2026]
* Fix: Ensured proper handling and saving of _stock_status (instock/outofstock) in database.
* Improvement: Replaced unreliable stock status checks with aggregated per-location stock calculation.
* Improvement: Standardized return values to boolean for accurate WooCommerce compatibility.
* Props: Thanks to armanuniverse for identifying and sharing the fix.

= 3.1.0 =
* Resolved 'get_variation_default_attribute' fatal error and out-of-stock display issue caused by Stock Locations plugin update, ensuring variable and simple products now show correct stock status. [Thanks to Renzo Westenbroek | Webreturn][12/03/2026]

= 3.0.9 =
* Fixed: Including API response and optimized approach to DB writes, backorder related status and a few more improvements suggested in support threads since October 2025. [07/03/2026]
= 3.0.8 =
* Fixed: Compatibility issue with Woodmart theme where early returns in slw_wp_head() prevented closing of <style> tag, causing invalid HTML and breaking mobile viewport (meta viewport ignored, pages rendering in desktop mode on mobile). Refactored dynamic CSS output to collect rules first and only inject <style> block when content exists; bumped hook priority to 20 for safer execution after theme styles. [Thanks to Spikee] [22/02/2026]

= 3.0.7 =
* Added: JSON payload-based API for bulk updating stock and price per location for products and variations. [Thanks to Mark Boorman][12/01/2026]

= 3.0.6 =
* Added: WooCommerce variation availability now respects location stock for swatch-based themes like Woodmart. [Thanks to Renzo Westenbroek][05/01/2026]

= 3.0.4 =
* Tested: WooCommerce variation availability now respects location stock for swatch-based themes like Woodmart. [Thanks to Renzo Westenbroek][05/01/2026]

= 3.0.2 =
* Fixed: Only enabled/active stock locations will contribute in total stock value but it would still be editable. [Thanks to @josephkallinit][21/10/2025]
* Fixed: Prevented potential PHP error when `$slw_api_valid_keys` is null during API validation. [Thanks to Tushar Tajane][21/10/2025]
* New: Order notes can be turned off from the settings. [Thanks to Rob Wood][21/10/2025]
* Fixed: Incorrect price range display for variable products when location-based stock prices are higher than variation base prices. The location price now overrides confusing WooCommerce default range formatting.
* Improved: Sale price logic now fully respects location-based pricing — ensuring both range and sale indicators are hidden when local price is higher. [21/10/2025]

= 3.0.1 =
* Added: Conditional CSS injection for WooCommerce Blocks to hide sale and del elements when location price exceeds the base or sale price.
* Improved: Price hiding logic refactored for better compatibility across all product types (simple, variable, grouped). [20/10/2025]

= 3.0.0 =
* Improved: When a product is on sale and stock-location-based pricing is active, the base price is treated as the original (crossed) price, and the location price is shown as the current price. If the location price is higher than the base/sale price, the base/sale price will be hidden. [Thanks to Armando Moreira][19/10/2025]

= 2.9.9 =
Added: Location selection modal now appears automatically when visiting the website. [Thanks to Kishen Visani][16/10/2025]

Added: Product page now also supports the location selection modal when enabled from the backend. [Thanks to Kishen Visani][16/10/2025]

Improved: Once a location is selected, it is automatically applied as the default location/store across simple and variable product pages. [Thanks to Kishen Visani][16/10/2025]

Added: Each location name can now optionally include its price or stock value as an appended string via the new slw_stock_location_name filter hook. [Thanks to Armando Moreira][18/10/2025]

Fixed: Locations with zero stock now still appear when the woocommerce_hide_out_of_stock_items option is disabled (unchecked). [Thanks to Armando Moreira][18/10/2025]

Improved: woocommerce_hide_out_of_stock_items setting is now fully respected on shop, archive, and location taxonomy pages. [Thanks to Kishen Visani][17/10/2025]



= 2.9.8 =
* Fixed: fatal error with anonymous (closure) callbacks — replaced problematic closure with a named callback so hooks can be reliably added/removed. [17/09/2025]

= 2.9.6 =
* Improved version with premium widgets. [15/09/2025]

= 2.9.5 =
* Fix: Textdomain related issue resolved. [08/09/2025]

= 2.9.4 =
* Fix: Recursive function causing stock status loop. [Thanks to Claudio Lanfranchi | SYPRO][01/09/2025]

= 2.9.3 =
* Fix: PHP Warning: array_sum() https://wordpress.org/support/topic/php-warning-array_sum. [Thanks to @tushonline][31/07/2025]

= 2.9.0 =
* Fix: Textdomain related issue resolved finally through loading it under constructor. [Thanks to Yeison Quesada][31/07/2025]

= 2.8.9 =
* New: Custom function wc_slw_order_update_post_meta updated and implemented for HPOS compatibility. [Thanks to webairstudio][26/07/2025]

= 2.8.8 =
Redundant code and/or not used by WooCommerce core, https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/165 [Thanks to mvrijs][11/07/2025]
Fix: Conditional usage of PHP function slw_get_products_by_location_term_id in the free version. [Thanks to Justin Trevorrow / Ironistic  |  Technical Manager, Paras Lamba / Team Shopglu.][26/07/2025]

= 2.8.6 =
API related else case message added. [Thanks to Fawad Tiemoerie / commercebird.com][10/04/2025]

= 2.8.5 =
Products with zero stock won't appear on archive pages if you are using location taxonomy archive page. [Thanks to Anna Pantelakaki / balloon.gr][06/04/2025]

= 2.8.4 =
Archive page related improvements are made. [Thanks to Anna Pantelakaki / balloon.gr][05/04/2025]

= 2.7.8 =
Fix: slw_update_product_stock_status function has been updated to clear the product_visibility terms when stock available. [Thanks to Renzo Westenbroek & Tim Sombroek from Webreturn][26/01/2025]
New: Shortcode: [SLW-SHOW-PRODUCTS-STOCK-OVERVIEW] added to have insights about the products and the stock levels.

= 2.7.6 =
New: Logs can be enabled and disabled with a toggle button.  [Thanks to @AntOnKnee][24/10/2024]
New: High-Performance Order Storage (HPOS).
Fix: https://wordpress.org/support/topic/orders-are-not-deducting-stock-from-my-stores [Thanks to @undermix and @amyhwang][27/11/2024]

= 2.7.5 =
Fix: when metadata is missing for a stock location quantity is an empty string instead of 0 and $remainingQty - '' is causing this error. https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/161 [Thanks to @pintend][22/10/2024]

= 2.7.4 =
- Fix: Number of products to update on admin_init reduced to 25 from 50 and made it conditional with if cron is OFF. [Thanks to Simon][14/06/2024]

= 2.7.3 =
- Fix: Default stock available at notice will only display the associated locations which are enabled. [Thanks to Villa Bafo][12/06/2024]

= 2.7.2 =
Fix: PHP Fatal error: Uncaught TypeError: method_exists(): Argument #1 ($object_or_class) must be of type object|string, bool given. [Thanks to @araundu][12/06/2024]

= 2.7.1 =
- New: API and Crons are made conditional with a toggle button to turn it ON/OFF. [11/06/2024][Thanks to Nishikant Tyagi]

= 2.7.0 =
- New: API and Crons are protected/restricted with the domain and IP referrer values. [08/06/2024]

= 2.6.9 =
- New: Bulk Import/Export using CSV files explained with a video tutorial. [01/06/2024]

= 2.6.8 =
- Fix: Variable products related improvements on the products list page where stocks can be updated with one click. [Thanks to Villa Bafo][27/05/2024]

= 2.6.7 =
- New: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/90 [Thanks to pacmanito & joaoaviz][23/05/2024]

= 2.6.6 =
- Fix: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/93 [Thanks to Salvatore Messina & joaoaviz][22/05/2024]

= 2.6.5 =
- Fix: PHP Fatal error due to wp_error [Thanks to Joseph Coello][13/04/2024]
- New: Stock status will be captured during checkout and it will always remain same for the old orders, fresh stock values won't reflect for old orders. [22/05/2024] 


= 2.6.5 =
- Fix: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/154 [Thanks to coello101][01/04/2024]
- Fix: https://wordpress.org/support/topic/no-effect-when-preferred-location-is-selected/ [Thanks to @adeyinkabadmus][01/04/2024]

= 2.6.4 =
- Fix: Make STOCK_QTY available at LOCATION_NAME string translatable. [Thanks to @michaelw90][12/02/2024]

= 2.6.3 =
- Fix: Empty quantity to zero with typecasting for the variations on the variable product page. [Thanks to Philippos][24/01/2024]
- Fix: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/151 [Thanks to Chingologram][03/02/2024]

= 2.6.2 =
- Fix: Quantity always 0 - https://wordpress.org/support/topic/quantity-always-0/. [Thanks to mrmelson][21/01/2024]

= 2.6.1 =
- New: Stock location enable/disable tooltip help for stock value update with the input field. [Thanks to dennebar][07/01/2024]

= 2.6.0 =
- Fix: Sanitization ensured. [Thanks to patchstack.com / Mika][19/12/2023]
- New: Filter hook added allow_stock_allocation_notification. [Thanks to github.com / Chingologram][19/12/2023]

= 2.5.9 =
- New: Developers API updated with the price option as the item parameter. [Thanks to Tushar Tajane][22/11/2023]

= 2.5.8 =
- Fix: Location dropdown showing wrong on backorder for the variable products when actually they are not allowed for backorder. [Thanks to ŠARŪNAS RIBAKOVAS][22/11/2023]

= 2.5.7 =
- Fix: Checked the default stock value assignment from map page to cart page for the selected product with the add to cart button trigger. [Thanks to Roy Wright][04/11/2023]

= 2.5.6 =
- Fix: Product page, location selection dropdown wrapper CSS classes managed accordingly. [Thanks to Cristian][26/10/2023]

= 2.5.5 =
- Fix: CSV import related queries updated for the WooCommerce products stock status. [Thanks to Ole Straume Andersen][24/10/2023]
- New: Predefined cron job arrangements introduced for the better user experience. [Thanks to @logicinn][24/10/2023]

= 2.5.4 =
- Fix: Cron job script improved and default location required dependency removed. [Thanks to Andrew / Waterhouse][07/09/2023]

= 2.5.3 =
- Fix: CRITICAL Uncaught Error: Call to a member function get_cart() on null in. [Thanks to @faheemseedat][31/08/2023]

= 2.5.2 =
- Fix: CRITICAL Uncaught Error: Call to undefined method Automattic\WooCommerce\Admin\Overrides\OrderRefund::add_order_note(). [Thanks to Morten Hansen][10/08/2023]

= 2.5.1 =
- Fix: BlockUI related issue when selecting the location on the shop page. [Thanks to Narinder Kumar / Dfavo][01/08/2023]

= 2.5.0 =
- Fix: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/145. [Thanks to Nguyễn Minh Khôi][30/07/2023]

= 2.4.9 =
- New: slw_stock_allocation_notification_message filter hook added. [Thanks to Carlos][21/07/2023]

= 2.4.8 =
- Fix: Product page stock filter hook related function updated. [Thanks to Morten Hansen][19/06/2023]

= 2.4.7 =
- Fix: Product page stock quantity with a postfix related issue. [Thanks to Lisa Fadden][25/05/2023]
- New: Location selection popup widget option refined with the boolean type filter hook. [Thanks to Sage Stephens | Little Brand Box][17/05/2023]
- Fix: Product page price decimals related hook revised. [Thanks to Cristian][25/05/2023]

= 2.4.6 =
- New: Product price decimal value can be controlled with the filter hook available. [Thanks to Cristian][10/05/2023]
- Fix: Function update_cart_stock_locations() updated. [Thanks to michaelw90][11/05/2023]
- New: Location selection popup widget option added under widgets section/tab. [Thanks to Sage Stephens | Little Brand Box][16/05/2023]

= 2.4.5 =
- New: Product page, stock location qty. based notice added with the filter hook option. [Thanks to Cristian][09/05/2023]
- New: Product page, cart page, checkout page, store location based notice to show. [Thanks to Mircea Popa][10/05/2023]

= 2.4.4 =
- Fix: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/138 [Thanks to d2roth][01/03/2023]
- New: placement of the location selection on products page other than the standard place. [Thanks to Morten Hansen][13/03/2023]
- Fix: Make location selection in cart required option has been improved. [Thanks to Julien Villalard][18/04/2023]
- Fix: Allow backorders implemented with stock_quantity_sum for max order value input field. [Thanks to Ole Straume Andersen][19/04/2023]
- New: Assign Location with API. [Thanks to gturcalp][21/04/2023]

= 2.4.3 =
- Fix: Stock value manual update with the integer zero inclusive ensured.  [Thanks to Stefan Murawski][16/02/2023]
- Fix: Fix reduce stock automatic. https://github.com/fahadmahmood8/stock-locations-for-woocommerce/pull/141 [Thanks to arwinvdv][16/02/2023]
- Fix: Adds condition to location_id setting #142 https://github.com/fahadmahmood8/stock-locations-for-woocommerce/pull/142/ [Thanks to Liopia][01/03/2023]

= 2.4.2 =
- Fix: Variable products stock value update to the parent product too.  [Thanks to Stefan Murawski][16/02/2023]

= 2.4.1 =
- Fix: Products get put from out of stock to backorder automatically.  [Thanks to Ole Straume Andersen][23/11/2022]
- Fix: Total Stock was wrong when stock locations has negative value. [Thanks to michaelw90][27/12/2022]

= 2.4.0 =
- Improvement: Default location will be set for the recently modified/new products.  [Thanks to PHILIPP GOLOB][19/11/2022]

= 2.3.9 =
- New: Default location will be set for the recently modified/new products.  [Thanks to PHILIPP GOLOB][25/10/2022]

= 2.3.8 =
- Fix: Fixes undefined index when adding a product to your cart from an archive page #136.  [Thanks to @d2roth][13/10/2022]

= 2.3.7 =
- New: Filter hook refined as apply_filters( 'slw_output_product_locations_for_shortcode', $product, $locations, $values, $output ).  [Thanks to Ole Straume Andersen][12/10/2022]

= 2.3.6 =
- New: Filter hook added as apply_filters( 'slw_output_product_locations_for_shortcode', $product, $locations, $values, $output ).  [Thanks to privatecollection][07/10/2022]

= 2.3.5 =
- Fix: Duplicate queries due to product_id=0.  [Thanks to coronastar1][06/10/2022]

= 2.3.4 =
- Fix: Auto allocate relate improvements and fatal error due to int += string for stock value.  [Thanks to bbceg & Ole Straume Andersen][29/09/2022]

= 2.3.3 =
- New: Import products will work with just SKU as well and you may skip the columns if don't to update the stock for a location.  [Thanks to Ole Straume Andersen][27/09/2022]

= 2.3.2 =
- Fix: array_key_exists() related issue on the cart page for qty. section.  [Thanks to Elliot Fib][15/09/2022]

= 2.3.1 =
- Fix: Product page stock_location param for cart line_items.  [Thanks to Tanel][08/09/2022]

= 2.3.0 =
- Fix: WooCommerce session and get_cart using wp_loaded action hook.  [Thanks to bbceg][06/09/2022]

= 2.2.9 =
- Fix: Undefined variable $postmeta in class-slw-stock-locations-tab.php.  [Thanks to Tanel][05/09/2022]

= 2.2.8 =
- Fix: Return stock qty. as per stock_location_selected session value with the default priority 10.  [Thanks to Jeroen de Kok][02/09/2022]

= 2.2.7 =
- New: Return stock qty. as per stock_location_selected session value with the default priority 10.  [Thanks to bbceg][02/09/2022]

= 2.2.6 =
- Fix: Stock max qty. allowed on product page synchronized with the selected location from the archive page(s). [Thanks to bbceg][01/09/2022]

= 2.2.5 =
- Fix: Stock status instock/outofstock/onbackorder to instock when stock is positive. [Thanks to Mario Kremser][31/08/2022]

= 2.2.4 =
- New: Google map shortcoded improved with two new attributes as diameter-range="100" and distance-unit="km/mi". [Thanks to bbceg][31/08/2022]

= 2.2.3 =
- New: Google map related action and filter hooks are updated on settings page under widgets tab. [30/08/2022]

= 2.2.2 =
- New: Google map will focus on the nearest location automatically if allowed access location. [Thanks to bbceg][30/08/2022]

= 2.2.1 =
- New: Google map will filter the location items on bounds_changed event. [Thanks to bbceg][30/08/2022]

= 2.2.0 =
- New: js/archive.js added to separate the JavaScript functions for archive pages. [Thanks to bbceg][26/08/2022]
- New: Map page, search field will filter the list items according to the diameter-in-kilometers, a numeric value, provided in the shortcode. [Thanks to bbceg][27/08/2022]

= 2.1.9 =
- Fix: https://github.com/fahadmahmood8/stock-locations-for-woocommerce/pull/133 [Thanks to Daniel/d2roth][25/08/2022]

= 2.1.8 =
- New: Different location per cart item selection as "No" will give two more options as remove the item or continue shopping. [Thanks to bbceg][25/08/2022]

= 2.1.7 =
- Fix: _manage_stock value to "yes" on import CSV. [Thanks to Ole Straume Andersen][24/08/2022]

= 2.1.6 =
- Fix: Translatable strings are updated. [Thanks to Ole Straume Andersen][23/08/2022]

= 2.1.5 =
- Fix: Variable Product: out of stock and quantity is 0 when accessing the product page. [Thanks to chalisoft][23/08/2022]

= 2.1.4 =
- Fix: The total stock does not match the sum of the locations stock conditioned with the location enabled/disabled status. [Thanks to Jesus Gonzalez][19/08/2022]
- New: Action hooks added for map page locations list, before and after shop this location button. [Thanks to Roy Wright][20/08/2022]

= 2.1.3 =
- Fix: Refresh page message on the product page for the stock update. [Thanks to Chalisoft][17/08/2022]

= 2.1.2 =
- New: Archives related shortcode added and zoom attributed for map shortcode. [Thanks to Zeeshan Sadiq & Mika Pietrus][29/07/2022]

= 2.1.1 =
- New: Compatibility ensured for another Wordpress plugin "Variation Swatches for WooCommerce".  [Thanks to Andrew Gortchacow][13/07/2022]
- Fix: Stock values update on shifting between simple and variable products on edit product page.  [Thanks to Stefan Murawski und Helene Umiker][20/07/2022]

= 2.1.0 =
- Fix:  Variations and add to cart not shown on product page for variable products #131  [Thanks to Github/keesheddes][07/07/2022]

= 2.0.9 =
- New: Import CSV will automatically turn ON stock locations where _stock_at_location-id column will be found as positive. [Thanks to Ole Straume Andersen][01/07/2022]

= 2.0.8 =
- Fix: Translation text-domain for Out of stock and in stock strings. [Thanks to stalstadens/henriksstalstadens][30/06/2022]


= 2.0.7 =
- Fix: Fatal error: Uncaught Error: Using $this when not in object context. [Thanks to stalstadens/henriksstalstadens][28/06/2022]

= 2.0.6 =
- New: Major changes regarding stock location and quantity check on archive pages and product page. [Thanks to Tanel][14/06/2022]
- New: Major changes regarding archive pages so category pages can enable location selection under the product titles. [Thanks to Tanel][13/06/2022]

= 2.0.5 =
- New: Stock locations with RadioBoxes, another option added in the dropdown. [Thanks to Tanel][10/06/2022]

= 2.0.4 =
- Fix: Select location empty index option enabled for variable product stock locations as well. [Thanks to chalisoft][06/06/2022]
- New: Stock locations column can be turned off/on from the settings page. [Thanks to bbceg][06/06/2022]

= 2.0.3 =
- Fix: Availability fitler implemented woocommerce_get_availability_text. [Thanks to Niconectado][04/06/2022]

= 2.0.2 =
- Fix: Location price units different than dollar. [Thanks to Niconectado][03/06/2022]

= 2.0.1 =
- New: Product page shortcodes improved and added a new attribute status with "enabled|disabled|all" options. [Thanks to Mik/mikmikmik][03/06/2022]

= 2.0.0 =
- New: Product page shortcodes improved and added two new attributes product_id and collapsed. [Thanks to Mik/mikmikmik][30/05/2022]

= 1.9.9 =
- Fix: wp desk omnibus related currency symbol issue resolved. [Thanks to tomkolp][30/05/2022]

= 1.9.8 =
- Fix: wp desk omnibus related currency symbol issue resolved. [Thanks to tomkolp][30/05/2022]

= 1.9.7 =
- Fix: Location price units different than dollar. [Thanks to Niconectado][28/05/2022]

= 1.9.6 =
- Fix: Location related updates on cart page interrupting other locations selection. [Thanks to Justyn Thomas][23/05/2022]
- New: Product page shortcode output improved using variation labels instead of separate attributes. [Thanks to Mik/mikmikmik][28/05/2022]

= 1.9.5 =
- Fix: Stock in/out statuses on product page logic refined, auto allocation as priority number. [Thanks to Fady Ilias][19/05/2022]
- New: There is a conflict with font awesome icons, on settings page ON/OFF option provided. [Thanks to Michal Paull][21/05/2022]

= 1.9.4 =
- Fix: Error 500 when upgrading to the latest version. Fatal error: Uncaught Error: Unsupported operand types: int + string. [Thanks to chalisoft & siriusnode][17/05/2022]

= 1.9.3 =
- Fix: Product page related improvements for stock location qty. value in the dropdown. [Thanks to Tanel][16/05/2022]

= 1.9.2 =
- Fix: Location based map page UI tweaks and location related email issue. [Thanks to Justyn Thomas][12/05/2022]
- Fix: Stock deduction from multiple stock locations if auto allocation is ON. [Thanks to fdeww & jwink123][15/05/2022]

= 1.9.1 =
- Fix: Request-URI Too Long. [Thanks to @jarvistran and @beeloudglade][12/04/2022]

= 1.9.0 =
- New: Geo Location related improvements. [Thanks to Justyn Thomas][30/04/2022]
- Fix: Location based archive page, default location selection tested. [Thanks to Justyn Thomas][07/05/2022]

= 1.8.9 =
- New: Map page related improvements. [Thanks to Justyn Thomas][29/04/2022]

= 1.8.8 =
- New: Compatibility for "PowerPack Pro for Elementor" added. [Thanks to Fady Ilias][27/04/2022]

= 1.8.7 =
- Fix: Priority based locaiton selection when default location as zero stock on product page, improved. [Thanks to Mario Kremser][26/04/2022]
- New: Everything stock status to instock option added for product page. [Thanks to Darren Lew][26/04/2022]

= 1.8.6 =
- New features are in progress. [Thanks to Roland Steinmasdl][08/04/2022]
- New: Stock location Enabled/Disabled column added on stock locations list. [Thanks to Andrew Gortchacow][21/04/2022]
- New: Stock quantity can be updated from the products list as well. [Thanks to Andrew Gortchacow][23/04/2022]

= 1.8.5 =
- Fix: Removed the extra/empty stock location qty. brackets on products list page in admin panel. [Thanks to Fady Ilias][20/04/2022]

= 1.8.4 =
- Fix: API will accept the zero qty. as well for the stock. [Thanks to kastiell93][25/03/2022]
- Fix: https://www.youtube.com/embed/HIo9X5M8A5U [Thanks to Daniel Sieff][08/04/2022]

= 1.8.3 =
- New: Stock locations tab, enable/disable feature added. [Thanks to Paul Eagles][24/03/2022]

= 1.8.2 =
- Fix: The total stock does not match the sum of the locations stock. [Thanks to Jere Seppä][24/03/2022]

= 1.8.1 =
- New: Sell products from only one stock location. [Thanks to Paul][23/03/2022]

= 1.8.0 =
- Fix: Cron job query updated for the products with recently changed timestamp. [Thanks to Riley Pollard][22/03/2022]

= 1.7.9 =
- Fix: Product page, backorder status will contribute in stock status and product availability for sale. [Thanks to Mario Kremser][22/03/2022]

= 1.7.8 =
- Fix: https://wordpress.org/support/topic/error-after-activating-the-plugin-6 [Thanks to johnmunez1][05/03/2022]
- Fix: Product page, elementor, backorder status, in stock status, out of stock status transitions ensured. [Thanks to Mario Kremser][21/03/2022]

= 1.7.7 =
- Fix: Locations map with a popup with useful information about the location/pickup. [Thanks to Justyn Thomas][04/03/2022]
- Fix: Notice: Undefined property: stdClass::$slw_backorder_location. [Thanks to Shaun Hopkins][05/03/2022]

= 1.7.6 =
- New: Locations can be turned ON/OFF for Google Map. [Thanks to Justyn Thomas][02/03/2022]
- New: Locations can be turned ON/OFF everywhere. [Thanks to Elika][02/03/2022]
- New: Action hooks added to manage archive page template.
- Fix: Issue #124 resolved on github repository. [Thanks to Wandavasquez95][02/03/2022]


= 1.7.5 =
- Fix: In stock / Out stock issue for zero value in both simple and variable products. [Thanks to Russell Field][01/03/2022]

= 1.7.4 =
- New: Locations map with a popup with useful information about the location/pickup. [Thanks to Justyn Thomas][28/02/2022]

= 1.7.3 =
- New: Crons tabs added. [Thanks to Dennis Broers - susNL][24/02/2022]
- Fix: Stock not updated correctly - https://wordpress.org/support/topic/stock-not-updated-correctly. [Thanks to Dennis Broers - susNL][24/02/2022]

= 1.7.2 =
- New: Different prices according to the inventory locations. [Thanks to Justyn Thomas][01/02/2022]
- Fix: In stock / Out stock issue for zero value in both simple and variable products. [Thanks to Petri Mustanoja][17/02/2022]

= 1.7.1 =
- New: Different prices according to the inventory locations. [Thanks to Justyn Thomas][20/01/2022]

= 1.7.0 =
- Fix: https://wordpress.org/support/topic/variation-design-issue/ [Thanks to harute125][20/01/2022]

= 1.6.9 =
- Fix: Cancelled order location was staying with -1 stock. [Thanks to Phannaline Khemdy][19/12/2021]

= 1.6.8 =
- Fix: Out of stock status not being displayed, showing 0 availabilty instead. https://wordpress.org/support/topic/out-of-stock-status-not-being-displayed-showing-0-availabilty-instead/ [Thanks to Donny Tejeda][15/12/2021]
- New: Visibility section for stock location under cart items with checkbox options. [Thanks to Phannaline Khemdy][16/12/2021]
- Fix: Show location selection in cart will not effect the user selected items. [17/12/2021]
- New: Price for different warehouse on same product? https://github.com/fahadmahmood8/stock-locations-for-woocommerce/issues/110 [Thanks to IHEnan99, Puigdemunt & oppssssss][17/12/2021]

= 1.6.7 =
- Fix: Variable product locations are empty, stock was not appearing as it was dependent on location selection. https://wordpress.org/support/topic/availability-not-displaying-after-upgrade-to-1-6-6/ [Thanks to Donny Tejeda][14/12/2021]
- Fix: Product and Varitons stock values should be editable if locations are not yet selected. [14/12/2021]

= 1.6.6 =
- New: Settings page option for restore stock for failed order status tested with the user on Google meeting. [Thanks to Jere][12/12/2021]

= 1.6.5 =
- New: Settings page updated with one more option, restore stock for failed order status. [Thanks to Jere Seppä][12/12/2021]

= 1.6.4 =
- New: Added urgent help link to help section for better support. [12/12/2021]

= 1.6.3 =
- New: Settings page updated with two more options, restore stock for cancelled and pending order statuses. [Thanks to Phannaline Khemdy][11/12/2021]

= 1.6.2 =
- Fix: Stock is not automatically allocated. https://wordpress.org/support/topic/stock-is-not-automatically-allocated/ [Thanks to weertman & freshwebno][09/12/2021]

= 1.6.1 =
- Fix: Critical error after installation. https://wordpress.org/support/topic/critical-error-after-installation-2/ [Thanks to martinnijkamp][08/12/2021]

= 1.6.0 =
- Fix: Bug on cart page - https://wordpress.org/support/topic/bug-on-cart-page/ [Thanks to designfin][08/12/2021]

= 1.5.9 =
- New: Assets updated.

= 1.5.8 =
- New: (Name change and old orders for customers) - Hide location information from old orders, solution provided on support ticket thread. [Thanks to Petri Mustanoja / pemu.se][07/12/2021]
- Fix: Can't manage my stock anymore. [Thanks to Jelle Tempelman][07/12/2021]
- Fix: Stock at Locations set but Stock still shows 0. [Thanks to andrehlprr & leax] [07/12/2021]
- New: Change Text for quantity value - new feature added. https://wordpress.org/support/topic/change-text-for-quantity-value/ [Thanks to Gina Pelli/mediih] [07/12/2021]
- Fix: Make it possible to change location in cart #116. [Thanks to screenpartner & Michael Wilhelmsen][08/12/2021]

= 1.5.7 =
- New: Bootstrap and FontAwesome added. Assets are rearranged and simplified.
- Fix: Fatal error fixed. [Thanks to kentakofot][07/12/2021]
 
= 1.5.6 =
- New: Debug log tab added for better troubleshooting. [Thanks to nickdill, rivalink and tomkolp][07/12/2021]
- Fix: Infinite redirection replaced with a notice so customers can be saved from inconvenience.


= 1.5.5 =
- Fix: Update suggest by pacmanito. [20/11/2021]

= 1.5.4 =
- New: First revised commit through github. [19/11/2021]
- New: Updated authors info and removed email address. [19/11/2021]

= 1.5.3 =
- New: Plugin support team extended and repositories are relocated. [Thanks to Alexandre Faustino][08/11/2021]
- Fix: PHP warning fixed. [Thanks to dsl225/John & mustanoja][09/11/2021]

= 1.5.2 =
- New: updated compatibility for WooCommerce 5.3
- Fix: bug on order item manual stock reduction on order save

= 1.5.1 =
- Fix: bug that triggers fatal error

= 1.5.0 =
- New: stock locations table in settings with each location ID
- New: setting to define a default location to be locked in frontend
- New: locations stocks reduction on pair with WooCommerce reduce actions
- New: WPML compatibility
- New: bumps Import/Export add-on version to 1.1.0
- Fix: frontend selector style issues on variable products
- Fix: if rest location is provided with an empty array we now clear the previous allocations as you would expect to happen. Thanks to @shanerutter
- Fix: order item view, show previous stock locations when stock was allocated against a location but the location is no longer valid for that item. Thanks to @shanerutter
- Fix: showing allocate stock message, if the product no longer has stock allocations and the order line has previous stock location allocations. Thanks to @shanerutter
- Fix: missing stock or stock status in frontend selection 
- Fix: bug on showing 'outofstock' when adding new products with stock available

= 1.4.5 =
- Fix: updates stock status on stock reduction
- Fix: marking product 'instock' if has stock instead of backorder 
- Fix: bug that crashes WP

= 1.4.4 =
- New: branding
- New: allow third party functions to deduct WC stock on the main variation product with new hook 'slw_allow_variation_product_stock_reduce'
- Fix: restriction on manual stock allocation if the order has stock reduced meta
- Fix: same location per cart item not being respected 
- Fix: cart page location selection required not working 

= 1.4.3 =
- Fix: bug of product variation WC stock not being updated when locations stock is deducted (updated)

= 1.4.2 =
- New: setting to show location stock quantities on product and cart pages on location selectors
- Fix: bug of product variation WC stock not being updated when locations stock is deducted

= 1.4.1 =
- New: POT file for languages
- New: settings tabs
- Fix: issue on WC reducing product stock on line item save

= 1.4.0 =
- New: removed barcodes feature from plugin to focus only on stock locations
- New: plugin settings moved to the WooCommerce menu 
- New: restore order items stock locations on WooCommerce order restore
- New: setting to make locations selection in cart required 
- New: filter 'slw_disallow_third_party_allocate_order_item_stock' to allow third party plugins to allocate item locations stock
- Fix: to prevent product WC stock decrease below zero 
- Fix: undefined index error for plugin setting 'location_email_notifications'
- Fix: to prevent reducing the stock twice for the product if the order was already reduced
- Fix: replace post parent_id property by get_parent_id() method stopping warnings thrown by woocommerce
- Fix: adding callable check for product method get_id() in stock allocation helper

= 1.3.2 =
- Fix: jQuery request returning 404 because of missing hook

= 1.3.1 =
- New: include 'Out of stock' and 'On backorder' locations in frontend selections
- New: filter 'slw_allow_wc_stock_reduce' to allow third party plugins to prevent WC stock reduction
- Fix: jQuery error for variants without locations
- Fix: jQuery bug on clearing location selection on variation in product page
- Fix: jQuery error when frontend settings not enabled
- Fix: meta '_slw_data' not beeing saved correctly

= 1.3.0 =
- New: filter 'slw_stock_allocation_notification_message' to customize the email notification message
- New: send email copy of New Order WC email to location registered address
- New: send email notification when stock is allocated for a product in some location
- New: show location taxonomy in REST API
- New: setting to enable/disable the barcodes tab
- Fix: stock allocation when customer selects or not a location
- Fix: bug preventing stock deduction when using in conjugation with Point of Sale for WooCommerce plugin

= 1.2.4 =
- New: setting to include location data in formatted item meta
- Fix: several bugs showing warnings

= 1.2.3 =
- New: setting to auto delete unused product stock locations meta
- New: filter 'slw_shortcode_product_location_stock' for shortcodes 'slw_product_locations' and 'slw_product_variations_locations'
- New: CSS classes for shortcodes 'slw_product_locations' and 'slw_product_variations_locations'
- Fix: 'outofstock' taxonomy on product save/update
- Fix: setting 'Different location per cart item', values were exchanged

= 1.2.2 =
- Fix: helper 'view' function call, preventing colision with other plugins with the same function name

= 1.2.1 =
- New: plugin setting to lock selected location in cart for every cart item
- Fix: check if location stock is enough for the cart item, if not hide from select option
- Fix: if auto allocation exist for the location disable WC hold stock

= 1.2.0 =
- New: stock locations select in cart page
- New: settings page
- New: auto order allocation for stock
- New: shortcode 'slw_cart_message' to display a custom message in the cart page
- New: shortcode 'slw_product_message' to displaying a custom message on product page
- New: options for stock locations: Default for New Products, Backorder Location, Auto Order Allocate and Stock Location Priority
- Fix: several bugs and PHP legacy compatibilities

= 1.1.5 =
- Fixes bug on shortcodes method

= 1.1.4 =
- Improved stock locations levels products listing
- Locations added to REST API products and variations endpoints for GET and PUT requests, thanks to @shanerutter

= 1.1.3 =
- Remove flush rewrite rules, should be avoided for now

= 1.1.2 =
- Add variations stock levels to products listing column
- New shortcode 'slw_product_variations_locations'
- Fixes on shortcode 'slw_product_locations'

= 1.1.1 =
- New filter 'slw_shortcode_product_location_name'
- New shortcode 'slw_product_locations'

= 1.1.0 =
- New column in product listing with stock locations imventory
- Fix bug on getting barcodes data for shortcodes
- Fix bug reported by @sebtoombs
- Plugin structure refactoring

= 1.0.3 =
- Tested up to WordPress 5.4
- Fix - Removed condition that prevent other roles beyond the admin from accessing the plugin functionality
- Added Capabilities to the location taxonomy
- Fix - Some actions priorities and arguments number were missing

= 1.0.2 =
- Fix - Bug creating new order, trying to get items on nonexistent order

= 1.0.1 =
- Tested up to WooCommerce 4.0.1
- Fix - Added condition to check variation products in hide meta function
- Fix - Check if order item product exists before trying to hide meta
- Fix - Check if order has items before trying to hide meta

= 1.0.0 =
- Initial release

== Upgrade Notice ==
= 3.0.0 =
This update introduces a more dynamic and consistent behavior for stock-location pricing and visibility across all pages.
If you've customized templates or location display logic, please review your hooks — especially slw_stock_location_name — to ensure compatibility with the new pricing and modal features.