Advanced Inventory for Magento 2
The Advanced Inventory extension for Magento 2 allows you to manage the stocks of different points of sale or warehouses through Magento 2 back-office.
Every time an order is placed through your website, it can be manually or automatically assigned to one or more warehouses or points of sale.
You can also follow in real-time the stock level of each point of sale or warehouse, the orders assignations, and anticipate if some restocking is needed.
With Advanced Inventory for Magento 2, any kind of scenario is possible. The module is easily configurable thanks to several setting options that correspond to the great majority of inventory management in real situations.
Advanced Inventory for Magento 2 is composed of a suite of performing tools for a better multi-stock management:
- Point of Sale: allows you to display on your Magento 2 frontend a Google Map in order to help your customers find the closest point of sale.
- Mass Stock Update: allows you to update all your Magento 2 stocks in one go via a CSV file.
The extension is also totally compatible with Pickup@Store that allows you to enhance the current features and so deliver a seamless experience across all channels.
With both extensions combined together, the orders can be fulfilled:
- from the warehouses
- from the points of sale
- from warehouses to points of sale (in the case where a POS relies on one or several warehouses)
Check how to build a strong online-to-offline retail with Pickup@Store.
Use Advanced Inventory for Magento 2 in 6 steps
Advanced Inventory for Magento 2 can be used in 6 steps defined below.
STEP 1: Configure Advanced Inventory for Magento 2 in a general way
You can start with configuring your extension in a general way and according to your needs in:
StoresSettingsConfiguratioN Wyomind Advanced Inventory
Settings
The following settings are essential to configure the Advanced Inventory extension for Magento 2 according to your needs.
- Advanced Inventory enabled
You’ll have the possibility to disable the Advanced Inventory stock management by setting this option to NO. Stocks will then be managed natively in Magento 2. This feature is useful for example when you’ve just installed the Advanced Inventory extension and you’re configuring stock management. - Multiple assignation enabled
With Advanced Inventory for Magento 2, you can assign orders to many points of sale or warehouses. - Automatic assignation enabled
If you activate the automatic assignation, your orders will be automatically assigned to one or more points of sale/warehouses according to the store view of the order, the customer group, the priority of the point of sale, the assignment rules and shipping address, the availability of the items in the stock. - Default Assignation for admin order
Define a default assignation for the orders created from the Magento admin. It can be:
AutomaticNo AssignationOne of your POS/WH
- Notifications in backend enabled
If you enable order assignation notifications, you should get a message at the top of your admin saying some orders need your attention and have to be assigned to a point of sale or a warehouse.
- Start date for order notifications
You can edit the start date for order assignation. Then only the orders placed after that date will be managed. - Order status disallowed for manual assignation
Advanced Inventory allows you to disable assignation update according to order statuses such as Complete or Canceled orders. Then it won't be possible to modify stock assignation for orders with these statuses. - Automatic stock status updated enabled
You can also enable an option to automatically update stock status when product quantities are changed from the admin panel.
- Add information tooltip in the frontend stock grid
You can add a tooltip in the frontend product page. - Tooltip text
Add the text you want including HTML.
For example:
<p>What does this inventory mean?</p> <p>Click to read our FAQ about inventory and to learn about </p> <ul> <li>Available for Shipping</li> <li>Backordered</li> <li>Out of Stock</li> </ul> <p> <a href="/faq" target="new"> <input type="button" name="button" id="button" value="Learn More"> </a> </p>
- Tooltip size
Define the size of the tooltip in pixels.
By default, it is 200px. - Tooltip position
Define the position of the tooltip according to the mouse pointer.
By default, it is left.
System
With Advanced Inventory for Magento 2, you have the possibility to use some useful tools to save all the logs and the stock movements you have made.
- Enable log file
By enabling the log file, all actions will be logged in:
var/log/advanced-inventory-dd-mm-YYYY.log - Enable the stock movement journal
The stock movement journal is a useful tool that will allow you to see what has been done and if your stock changes have been taken into account. To check your stock movements, go to:
SalesPoint of SaleStock movement journal - Stock movement journal lifetime history
You can also define the number of days you want to include in the Journal history. Any stock movement older than this value will be automatically deleted.
STEP 2: Manage your points of sale
Now, you need to create your points of sale and/or warehouses. For this, click on Create new point of sale/warehouse from:
SalesPoint of SaleManage POS/WH
General Information
In the General Information tab, you can define an internal code for your warehouse/point of sale. Give it a name and a type of display among point of sale and warehouse:
- the points of sale will be visible on the Google map
- the warehouses won’t be visible from the Magento 2 front-office
Define where the point of sale is visible on the frontend:
- on store locator
- on product page
Finally, give it a priority (the order of display is used for the point of sale display on the map and for the priority of the assignation rules) as well as a latitude and a longitude using Google map.
Address & Hours
In the Address & Hours tab, define the address of the warehouse/point of sale. Add a phone number and an email address. Finally, add an image and specify the opening hours and lunch hours if this is a point of sale. Note that if you have filled in the email field, a copy of the email sent to the customer will also be sent to the store when the order is assigned to a point of sale/warehouse.
Store Views Selection
In the Store Views Selection tab, define for which store view(s) you want this warehouse/point of sale to be available. You can also make your warehouse/point of sale available for all store views.
Customer Group Selection
In the Customer Group Selection tab, select the group(s) of customers that will be able to see that warehouse/point of sale. Here again, you can do what you want and decide to make that warehouse/point of sale available for retailers only or for all customer groups.
Frontend
You have the possibility to define a description specific to the POS/WH as well as to enable a unique frontend page.
In the Store Locator page, you can use the global store description, or use a specific one for the POS/WH.
If you choose to use a template specific to the POS/WH, you have the possibility to add variables to the description.
You can also enable a unique Store page for the POS/WH.
Define your own URL key, for example, with italy-store, you'll be able to access the store page from:
https://www.yourstore.com/italy-store
Also, add the content of your choice. Note that HTML and CSS code are supported.
You can use below variables in the templates:
- {{code}}
The point of sale code - {{name}}
The point of sale name - {{phone}}
The point of sale phone number - {{email}}
The point of sale email address - {{address_1}}, {{address_2}}, {{city}}, {{state}}, {{country}}, {{zipcode}}
The point of sale address - {{hours}}
The point of sale opening hours - {{description}}
The point of sale description - {{image}}
The point of sale image - {{link}}
Link to the point of sale page - {{google_map}}
The Google map with the targeted point of sale
Note that you can't use the Google map variable in the Store locator description template. - {{additional_attribute_code}}
All custom attributes that you have configured:
See how to configure your own attributes
Inventory Settings
In the Inventory Settings subtab, you can enable the stock management for that POS/WH.
Then, you'll be able to define the assignation method you want to use between:
- Do not assign any order
- Assign orders when product is available
- Assign orders depending on specific rules: when choosing that option, you have the possibility to fill in the rule to assign the orders to that particular point of sale (Check the following step to see how to manage assignation rules).
Advanced Inventory for Magento 2 offers you the possibility to notify by email the recipients, that is to say, the manager(s) of the point of sale. For that, you simply need to add the different email addresses separated with a comma.
You also get the link of a RSS feed that will include any product that shows low stock for that particular POS.
Finally, you can define Stock status messages to display on the product page. For example:
When the product is in stock:
Same day pickup
When the product is backorderable:
Available for Pickup in 2-3 days
When the product is out of stock:
No stock
Note that if the customer has selected a preferred store, this one will appear first in the list.
In the Default settings for products subtab, you'll also be able to define the default product settings for this stock.
You'll have the possibility to use the configuration settings for the backorder. If you don't, you'll have to define your own parameter for the backorder status between:
- No backorders: no order is allowed if the product is out of stock.
- Allow quantity below 0: the product can be ordered even if it is out of stock.
- Allow quantity below 0 and notify customer: the customers are notified that they can order even if the product is out of stock. A message will be added in the cart and in the checkout indicating the number of items in backorder.
Finally, you'll be able to save and apply stock settings to all multi-stock products for this point of sale or warehouse.
Additional information
For each store, you can define your own attributes in order to customize the store page as you want.
For this, go to:
SalesPoint Of SalePOS / WH Attributes
Click on Add a new attribute.
This works the same way than product attributes.
The attribute can be:
- text (simple input)
- textarea
- wysiwyg
Note that the attribute code will be generated automatically from the attribute label.
Once saved, a notification displays and the attribute is listed in the grid.
Once created, the attributes will be displayed in the Additional information tab of each point of sale.
Then, they can be used in the description template for the store locator and in the template for the point of sale page.
STEP 3: Manage your stocks
One of the most important features of Advanced Inventory for Magento 2 is to manage stocks.
A tool named Stock movement journal will help you to see if all your changes have been made. This includes changes made by any user, customer, or via the external API.
You should find a list of all the actions that have been made in:
SalesPoint of saleStock movement journal
For example, on the above screenshot, we can see that the Admin named Jon has edited a product page (product id = 2) and changed the quantity for the product in a point of sale/warehouse (id = 541) from 0 to 10 units.
Advanced Inventory for Magento 2 allows you to manage your stocks according to 4 different ways:
- From the grid:
ProductsInventoryStocks - From the backend product page:
ProductsInventoryCatalog - With Mass Stock Update (have a look at the Mass Stock Update extension)
- With the API (for web developers only)
Stocks for each point of sale can be visible on the Magento 2 front-office product page directly.
The display of these stocks will depend on the configuration of each point of sale (which store view and customer group is linked to it) and also from which store view the customer is looking at the product page.
To display the stocks on your product frontend page, you need to go to the file:
Magento2/vendor/magento/module-catalog/view/frontend/templates/product/view/form.phtml
And add the following script:
<?php $this->getLayout()->createBlock('\Wyomind\AdvancedInventory\Block\Catalog\Product\Stock')->output($_product); ?>
Advanced Inventory for Magento 2 allows you to manage your stocks from the product grid in:
ProductsInventoryStocks
The product grid displays the quantity available for each product.
To enable or disable multi-stock, you can either tick the products you want and choose Enable multi-stock or Disable multi-stock from the Actions dropdown or select the option you want for each product by clicking on the dropdown in the last column of the grid.
If you decide to enable multi-stocks, you will be able to enter the number of items in each point of sale or warehouse directly from the grid. The Qty column will then be adjusted according to the number of products in each point of sale and warehouse. Note that by selecting Disable multi-stock, you won't be able to manage your stocks.
Depending on your stock configuration for each product, you may see orange notifications below the quantity of a point of sale/warehouse.
- Backorders allowed: means that backorders are allowed. For example, if you type -10, it will be deducted from the total quantity.
- Qty not managed: means that the quantity is not managed for that particular point of sale/warehouse.
You can also filter by store view. For example, if you choose the FR store view, you'll see only the point(s) of sale linked to that store view and the product quantity of the FR store view.
Manage your inventory from the backend product page
You can also manage your stocks for each point of sale at the product level. To have access to the back-office product page, you can either go to:
ProductsInventoryCatalog or toProductsInventory Stocks
Choose a product and click on Edit. You will have the possibility to manage stocks directly by clicking on Advanced Inventory subtab (under the quantity of the product) then in the Wyomind Advanced Inventory section.
To manage your stocks, define Manage local stock on YES.
Now you can manage your stocks for each point of sale or warehouse:
- Stock enabled: manage the stocks for that POS/WH.
- Stock disabled: the POS/WH won't be taken into account. This is useful when some products are not available in all your POS/WH. On the frontend product page, this will be displayed as Out of Stock.
- No stock management: unlimited stock, no quantity is managed for the product.
When stock management is enabled, you can define the product stock for each point of sale. You have also the possibility not to use default settings. If you untick that box, you have the choice between 3 options:
- No backorders: when there's no stock, it's impossible to order the product
- Allow quantity below 0: even if there is no stock, the product can be ordered.
- Allow quantity below 0, and notify customer: even if there is no stock, the product can be ordered and the customer will be able to see in the front-office that backorder is allowed for that product.
You also have the possibility to filter by store view. For example, if you choose the DE store view, you'll see only the point(s) of sale linked to that store view and the product quantity of the DE store view.
Manage your inventory via the API
You may use a Web app or a software to manage your stocks. So that you can make the link between that tool and your Magento 2 instance, the Advanced Inventory extension allows you to use the RESTful API to manage your stocks.
You'll find the different methods that you can use in the webapi.xml file available in:
magento2/app/code/Wyomind/AdvancedInventory/etc
- getStockByProductId: Get stock data for one product
- getAllPointOfSaleAndWarehouse: Get all warehouses/points of sale
- getPointOfSaleAndWarehouseByStoreId: Get all warehouses/points of sale for one store view
- getStockByProductIdAndPlaceIds: Get stock data for a group of warehouses
- getStockByProductIdAndStoreIds: Get stock data for a group of store views
- updateStock: Update the stocks settings of a product for one warehouse
- updateInventory: Update the inventory settings for one warehouse
- get: Get an order only with products assigned to the warehouses visible by the user
- getList: Get orders only with products assigned to the warehouses visible by the user
You will find examples of usage for the different methods in the Advancedinventory-apicall.php file available in:
magento2/app/code/Wyomind/AdvancedInventory
STEP 4: Manage your products
With Advanced Inventory for Magento 2, you can manage the stocks of each one of your products and on different levels.
Enable multi-stock
There are several ways of enabling multi-stock for your products.
- From:Products Inventory Stocks
Select the products you want by ticking each product manually, choosing Select all or Select visible.
Then from the Actions dropdown at the top, select Enable multi-stock. Click on Submit and then don’t forget to Save all changes.
- From:Products Inventory Catalog
Choose a product and click on Edit. Under, the quantity of the product, click the Advanced Inventory link and then go to the Wyomind Advanced Inventory subtab. There, you can decide to Manage local stock.
Use the tree-view
You should see a column named Stocks in:
ProductsInventoryCatalog
In that column, you should see a link Show stock details which is displayed for all products in which multi-stock is enabled. If you click on that link, a tree-view is displayed and shows the total of items for each store view.
If the tree view is not displayed make sure the Stocks column is selected in the Columns dropdown.
Below is a concrete example:
Each point of sale or warehouse is linked to one or more store views:
- French Paris Store: US and FR Store views
- Germany Berlin Store: US and DE Store views
- United Kingdom London Store: US Store view
For a product available in 3 points of sale:
- French Paris Store: 5 items,
- Germany Berlin Store: 2 items,
- United Kingdom London Store: 4 items
You will get the following tree view:
Main Website
Main Website Store
DE Store View (6)
Germany Berlin Store (2)
United Kingdom London Store (4)
FR Store View (9)
French Paris Store (5)
United Kingdom London Store (4)
US Store View (11)
French Paris Store (5)
Germany Berlin Store (2)United Kingdom London Store (4)
STEP 5: Manage your sales
Advanced Inventory for Magento 2 allows you to assign the orders in two different ways:
- Manually
- Automatically
To manage the order assignations automatically, you need to define the Automatic assignation enabled option on Yes from:
StoresSettingsConfig Wyomind Advanced Inventory
Before anything, you must know that an order will be assigned to a pos or a warehouse according to these settings:
- the store view: which store view is assigned to the pos/wh.
- the customers group: which customer group is assigned to the pos/wh.
- the priority: does the pos/wh have priority.
- the availability of products: are all the ordered products available in the pos/warehouse.
- the assignation rules: what are the assignation rules defined for the pos/wh.
- the shipping address: what is the shipping address of the customer.
In order to manage the automatic assignations, 2 tools are essential. You can configure the assignation rules in the Inventory settings tab of a pos/wh so that the orders can be automatically assigned to a pos/wh depending on the area. Finally, you will be able to check to which pos/wh the orders have been assigned as well as to modify these assignations in the assignation table available in:
SalesOperationsOrders
Assignation table
You should see a column named Assignation if you go to:
SalesOperationsOrders
A notification is displayed in the box. It can be in a different color depending on the order assignation:
- Name(s) of the pos/wh = the order is assigned to one or more pos/wh if you enabled the multi-assignation
- No assignation required = the status of the order is disallowed for a manual assignation
- Order placed before multistock initialization = the date of the order is older than the start date for order assignation
- 1 item is partially unassigned = some products are partially assigned
- 1 item is unassigned = some products must be assigned manually to a pos/wh
The assignation table will be displayed in any Order view page, or by clicking on a green or a red notification from the Assignation column in:
SalesOperationsOrders
A popup window opens and displays an assignation table. That table will show the products of the order, the different points of sale/warehouses and the stock for each item.
Whenever you want, you can assign each product to one or more points of sale/warehouses (if you have enabled the Multiple assignation enabled option in StoresSettingsConfiguration Wyomind Advanced Inventory) or modify the automatic order assignation from that table.
You also have the possibility to automatically assign the items by clicking on Run automatic assignation. The products will then be automatically assigned to the points of sale/warehouses bringing together the more assignation criteria.
In the example above, you can see how many items must be assigned in the Qty column. The last line is in red because one item still must be assigned.
Some colors and symbols will help you to understand how the assignation table works:
- Numbers in Green: means that the pos/wh has stock
- Numbers in Red: means that there is no stock and no backorders
- Numbers in Orange: means that backorders are allowed
- X Qty not managed: multi-stock is disabled
- - Stock not managed: you don't manage stock for a product at all (the product is then available)
Assignation rules
The assignation rules allow you to automatically assign orders placed on your website to one or more points of sale. These rules allow you to define the geographical area that each one of your points of sale can cover. They are based on your customer's shipping address: code of the country and/or zip code and/or regional code.
In addition to the assignation rules, you need to have defined:
- the Automatic assignation enabled on Yes in:
StoresSettingsConfig Wyomind Advanced Inventory - the Assignation method on Assign orders depending on specific rules in the Inventory settings tab of a point of sale configuration
You need to define assignation rules for each point of sale or warehouse. For this, choose a point of sale and click on Edit from:
SalesPoint of SaleManage POS / WH
In the Inventory settings tab, make sure you have selected Assign orders depending on specific rules. Here you can write your own assignation rules using the same syntax as the Owebia Shipping extension (with their agreement).
By default, the assignation rules are defined on “*” which means that the point of sale/warehouse will manage orders from worldwide. If the field is empty, the pos/wh won't assign any order.
Below are some examples that you can use in the Assignation rules field:
By default:
*: Worldwide
For a whole country:
US(*): All United-StatesUK(*): All United-Kingdom FR(*): All France
For a specific region of a country:
US(CA): California / United-States
FR(75*): All French zip codes starting with 75 (Department of Paris)
DE(7*): All German zip codes starting with 7 (Region of Bade-Wurtemberg)
For many countries:
US,UK,CH,ES,IT: United-States, United-Kingdom, Switzerland, Spain, and Italy
You can subtract some regions. For example:
* - (CAN, US(CA,FL)): Worldwide except Canada, California and Florida
For flexible assignation rules, it is also possible to use regular expressions:
FR(/^75[0-9]+$/): Department of Paris (All French zip codes starting with 75 followed by numbers from 0 to 9)
Credit memo
With Magento 2 you can create a credit memo for any customer that wants to return products that have already been invoiced.
In that case, Advanced Inventory will allow you to return products to specific stocks directly when editing the credit memo in:
SalesOperationsOrders
For example, a customer wants to return an item. When creating the credit memo, you'll be able to choose to which stock you want to return the item.
In the case where you have many items to restock, you'll be able to choose a different point of sale or warehouse for each item.
Now, you should see that the credit memo has been taken into account and the items have been returned to the point(s) of sale/warehouse(s) you've chosen if you check-in:
SalesPoint of SaleStock movement journal
STEP 6: Manage permissions
With Advanced Inventory for Magento 2 you have the possibility to assign different rights to each admin user.
Let's imagine you have 6 points of sale managed by 3 store owners.
Each store owner manages 2 points of sale:
- Tom, the first store owner manages the German and Belgium points of sale.
- Sarah manages the Spanish and Italian points of sale.
- Jon, the third manager is in charge of the French and British points of sale.
Roles and Users
In a first time, you need to create a role in:
SystemPermissionsUser Roles
Define a name (ex: Manager) as well as the permissions associated with that role. You can choose the different permissions you want to assign to the role (for example not to allow the management of the permissions table for these users).
Then, create an admin user for each one of these managers in:
SystemPermissionsAll users
They can all be linked to the same role, for example, Manager.
Permissions table
You can assign permissions to each store manager so that they can all manage the points of sale they’re in charge of, from:
SalesPoint of SaleUsers permissions
To do so, simply tick the appropriate boxes for each manager.
By ticking the All box, the store owner will be able to manage all the points of sale and orders placed by customers.
If you tick Unassigned orders, the store owner will be able to manage all the orders that haven’t been assigned to a point of sale.
Now, if a store manager logs into the Magento 2 back-office, for example, Sarah. Among the orders placed by the customers, she'll be able to see, manage and change the number of items only assigned to the points of sale she manages: the Spanish and Italian points of sale.
Build a strong online-to-offline retail with Pickup@Store
As Advanced Inventory focuses on smart Magento stock management, it gives you many possibilities to manage your stores and drive online purchases from offline channels.
Indeed, a study from UPS revealed that nearly 40% of purchases are made through a combination of online and in-store activity, showing the importance of driving in-store users to visit the online store, and vice versa.
The main feature of Pickup@Store is to propose to your customers to come and pick up their orders from your points of sale. Using Advanced Inventory with Pickup@Store can help you to:
- propose a multi-channel distribution: from your website, from your brick and mortar stores
- let your customers pick up their orders from your own pickup stores
- manage the stocks of all your stores
If you're looking for optimizing your supply chain management, you can have a look at the different possibilities you can achieve using both extensions at the same time.
Define a fee for each pickup store
Depending on the pickup location, the fee may not be the same for all your store pickup methods. You can then define a fee for each POS. For this, edit the POS from:
SalesPoint of SaleManage POS/WH
Pickup At Store
- Handling Fee
You can use the global handling fee or define a specific one. - Fee amount
No need to add the currency as it will automatically use the one linked to the store view. Use a dot if needed.
5.5
- Minimum time required to handle an order
You can use the global time required to handle an order or define a specific one. - Minimal delay for an order
Add the time in minutes.
1440 - Minimum time required to handle a backorder
You can use the global time required to handle a backorder or define a specific one. - Minimal delay for a backorder
Add the time in minutes.
2880
Use the stocks of warehouses
When customers select the pickup method, you have several possibilities to manage your stocks:
- Fulfill the orders from your points of sale
The order is assigned to the selected point of sale
The stocks of that point of sale are decreased.
The customers pick up their orders in that pickup store. - Fulfill the orders from your warehouses to your pickup stores
The point of sale doesn't manage stocks, it's just a pickup location.
The stocks of the warehouse(s) linked to that point of sale are decreased.
The customers pick up their orders in the pickup store.
For each point of sale, you can then use the stocks of other warehouses. In that case, the selected warehouses will fulfill the orders and the point of sale will be a simple pickup location.
For this, check the Inventory Settings tab in the POS configuration from:
SalesPoint of SaleManage POS/WH
Inventory Settings
For each point of sale, you can use stocks of other warehouses instead. This is particularly useful when your pickup locations don't manage stocks.
When choosing the Use warehouses stocks, you can select the warehouses you want. In our example, when customers select the above store for picking their order (USA Los Angeles Store), then the stocks of the USA Miami Store and/or USA San Francisco Store will be decreased.
Enable the Preferred store option
Add the widget
You have the possibility to add a widget to let your customers select their preferred store.
For that, go to:
ContentElementsWidgets
Click on Add Widget.
Select Preferred Store as type and choose your theme. Click on Continue.
Configure the Storefront Properties according to your needs and Add Layout Updates as in the example below.
Finally, choose the widget options. You have the choice between:
You can also choose to automatically select the nearest store if the customer doesn't have selected a preferred store.
Select the preferred store
When the widget is added, your customers will then have the possibility to choose their preferred store by clicking on Find a store from the top bar.
A popup should be displayed and list all available stores.
If enabled, geolocation can be used to propose the closest store and customers can also select their preferred store by clicking on Choose this store.
Once the store is selected, this will be displayed in the top bar.
<p>What does this inventory mean?</p>
<p>Click to read our FAQ about inventory and to learn about </p>
<ul>
<li>Available for Shipping</li>
<li>Backordered</li>
<li>Out of Stock</li>
</ul>
<p>
<a href="/faq" target="new">
<input type="button" name="button" id="button" value="Learn More">
</a>
</p>