Advanced Stock Management
Version 1.5 of PrestaShop features a new stock management menu: more than just merely listing how much of a specific product you have currently available, this menu enables you to list warehouses and get a proper view of your stock, its movement, your coverage, your stock orders, etc.
Not all merchants will have a need for this feature. It is therefore optional, and the available quantity management tool from 1.4 is still available, and has been rethought.
You can enable the advanced management menu by going to the "Products" preferences page, at the bottom of which is the "Products stock" section. Select "Yes" for the "Enable advanced stock management" option.
In order to avoid confusion with the stock management feature from version 1.4 and see the possibilities offered by the advanced management feature of v1.5, you should picture two distinct concepts: product quantity available for sale, and physical products.
Product quantity available for sale
This is the same as the stock management feature from PrestaShop 1.4.x. It is the product quantity that is displayed in the shop for each product and product combination. This is the quantity that defines whether the product can be ordered or not (unless the "Allow ordering of out-of-stock products" option is enabled). That quantity can be manually changed for each product and product combination.
In PrestaShop 1.5.x, that quantity can be automatically set according to the physical stock of the affected product. In a multistore scenario, the quantity is to be defined for each shop.
Consequently, what used to be called "stock" in PrestaShop 1.4.x is now called "quantity of product available for sale" in PrestaShop 1.5.x.
Product stocks (physically stored)
This is the physical management of the stored products from a warehouse (or more). This is the new concept introduced as "stock" in PrestaShop 1.5.x.
This new stock management feature includes stock movement, stock valuation, stock transfer between warehouses, integration in the multistore feature and supply order management.
It also makes it possible to take into account the notion of actual stock. At a given time, a product can be available as a physical stock, but not available for sale because some client orders are still waiting for shipping. That same product can also have a supply order in progress, and thus not yet accounted for in the physical stock.
Real stock is therefore made of stock that is physically available in a warehouse, to which we add the quantity presently ordered from suppliers, and from which we subtract the quantity presently ordered by clients and which have not yet been shipped.
Using the new stock management feature
Do I have to use the new stock management feature?
There is no obligation to use the new stock management feature, just as there is no obligation to use the "quantity available for sale" management feature.
To activate both the "quantity available for sale" management feature and the stock management feature, go to the "Products" preference page, scroll down to the "Products stock" section, and choose "Yes" for the two stock management options. You have to first enable basic stock management in order to enable advanced stock management.
The advanced stock management feature, or even the standard stock management feature and your warehouses, is independent from the multistore feature. Consequently, no matter which shop you are administrating in the PrestaShop back-office, when you use the "Stock" menu, you are always managing the stock in a global way.
I do not want to change anything to my settings in PrestaShop 1.4.x. What should I do?
If you would rather not use the new advanced stock management feature from PrestaShop 1.5, and simply are satisfied with the way PrestaShop 1.4 handles product quantity management, you just have to enable the old-style stock management manager, and not the advanced stock management feature: go to the "Products" preference page, scroll down to the "Products stock" section, and choose "Yes" for the "Enable stock management" option, leaving the "Enable advanced stock management" option set to "No".
The "available for sale quantity" management feature is now centralized in the "Quantities" tab from the product sheet: create a new product or edit an existing one, and the tab is available on the left, among the other tabs.
Does the new stock management feature apply to my needs?
The new stock management feature enables you to manage a stock of products. This feature applies to your business if:
- You manage a stock of products which you sell on your shop(s).
- You use at least on storage place (warehouse) which you manage yourself.
- You order most or all of your products to one or more suppliers.
- You need statistics about the state of your stock and of your warehouse(s).
This feature does not apply to your business if:
- You do not manage your stock of products yourself.
- You already use a stock management system/tool/program that you are satisfied with, and you wish to keep using it without changing anything.
Presenting the back-office interface for the stock management
Improvement to the product sheet
In PrestaShop 1.4, you could manually set the quantity of product available for sale.
In PrestaShop 1.5, you can still set the quantity manually for each product. But once advanced stock management is also enabled, you can also automatically set the quantity depending on the current quantity status of the physical product. Note that it is possible to enable advanced stock management globally, yet only use it for one product or just a few.
When the "Enable stock management" option is enabled, all the products get a new tab in their administration page, called "Quantities". This clear and simple interface enables you to manage the available quantities for sale on your shop(s) for a given product, and any potential combination.
This page opens with an explanatory section, which we urge you to fully read. That section is followed by the quantities management interface itself, which opens with three options:
- I want to use the advanced stock management system for this product.
- Available quantities for current product and its combinations are based on stock in the warehouses.
- I want to specify available quantities manually.
By default, the third option is ("I want to specify available quantities manually") is enabled. As long as you haven't check the first option ("I want to use the advanced stock management system for this product"), quantities are managed the same way they were in version 1.4 of PrestaShop, which means that you have add the quantities manually, and PrestaShop will remove quantities for each sale.
If you'd rather synchronize the available quantities with your warehouse stock, you have to change the quantities management method:
- Check the "I want to use the advanced stock management system for this product" box in order the change method.
- This makes the second option, "Available quantities for current product and its combinations are based on stock in the warehouses", finally available. Select it in order to synchronize the available quantity for this product with your warehouse stock.
As soon as you have selected the second option, the table's "Quantity" column cannot be edited anymore: quantities are now directly handled from your stock.
Product packs are a special case. Since it is not yet possible to add product combinations to a pack, the PrestaShop developers have decided that when necessary, PrestaShop would use the default combination when decrementing the physical stock.
Also, a notice indicates the recommended maximal number of packs.
The rest of the page is explained in the "Adding Products and Product Categories" chapter of this guide.
You can now set more than one supplier for a given product. For each supplier associated to a product, you can set the supplier's reference number and a default purchase price for that product as well as its combination. This information is used when making an order to the supplier.
If advanced stock management is enabled, a "Warehouses" tab appears in the product sheet, where you can indicate which warehouse(s) the product and each of its combinations can be stored in. You can even indicate the location for the product and its combinations.
You must first create at least one warehouse (see below) before associating a product to it and setting the product location in it. This step is essential: it is important to at least set one warehouse in which a product can be stored. This will have considerable impact on the order preparation in the multi-shipping context.
In version 1.4.x, stock management was strictly tied to the quantity of product available for sale, which was set once then varied according to stock movement without taking any warehouse issue into account.
The advanced stock management feature makes it possible to create one or more warehouses. In order to create one, go to the "Warehouse" page under the "Stock" menu.
Once you start creating a new warehouse, you must fill in the following fields:
- Reference and Name. The warehouse's unique reference identifier and name. Make sure to use something recognizable: you must be able to easily differentiate to warehouses from a drop-down list.
- Address, Postcode/Zip Code, City and Country. The warehouse's physical address. This information will be used on the purchase order to suppliers.
- Manager. A person in charge of the warehouse, chosen among your shop's registered employees. If the employee's account is not yet created, you must create it first.
- Carriers. The carriers who you authorize for orders shipping from this warehouse. Maintain the "Shift" key pressed while clicking to select more than one carrier.
- Management type. A method of accounting valuation, based on your country's regulations. See the "Stock management rules" part of this chapter for more information.
- Stock valuation currency. A valuation currency for this warehouse's stock (among the registered currencies).
It is not possible to change a warehouse's valuation method and currency once it has been set. If you need to change that information, you will have to recreate the warehouse, and delete the wrong one. You can only delete a warehouse if it does not contain any product anymore.
Be careful of the carriers you choose to authorize, as this will a huge impact on the order preparation in the multishipping scenario.
In the situation where you manage more than one shop, you will also have to associate each shop to one or more warehouses. This enables you to set from which warehouse the client orders for a given shop can be sent.
Once the warehouse has been created, you are taken back to the list of warehouses. Click the "View" icon on the right of its row to access a bird's eye view of its information, including the references of all the products stored in it, the sum of all the available quantities, a global accounting valuation, details of the stored products, and the history of the stock movements for that warehouse.
Each warehouse page also contains two links at the bottom:
- Click here if you want details on products in this warehouse. Takes you to the warehouse's "Instant Stock Status" page.
- Click here if you want details on what happened in this warehouse. Takes you to the warehouse's "Stock Movement" page.
Now that you have created one or more warehouses, you have to set stock for each of them. To that end, go to the "Stock Management" page under the "Stock" menu.
All available products from your catalog are listed in this interface. If you have any combination of product, you can manage them from the "Details" action (the "+" icon).
In your daily activities, you can use this interface in order to manually:
- "Up arrow" icon. Add stock for a specific product in a given warehouse.
- "Down arrow" icon. Remove stock for a specific product in a given warehouse.
- "Sideways arrows" icon. Transfer stock from one warehouse to another.
The two last icons only appear if there already is some stock of the chosen product in any warehouse.
Adding stock to a warehouse
To add more stock to a product, use the "Add stock" action (up arrow) for said product or product combination. A new page opens, containing a form where the most important information is displayed in order to help you identify a product with certainty (reference, EAN13 and UPC code, and name). This information cannot be changed from this form, therefore it is grayed out.
You must then set:
- Quantity to add. This must be a positive number. You cannot remove stock by using a negative number.
- Usable for sale?. Whether that quantity of stock is usable for sale, or simply stored until you make a decision about it. In the second case, it is considered "reserved".
- Warehouse. The warehouse where the stock is to be added. The form lets you add product stock to only one warehouse at a time. If you need to add stock for this product in more than one warehouse, you must make the entire adding process again for each warehouse.
- Unit price (tax excl.). The unit price for the product at the time of the addition. This is for valuation purpose.
- Currency. The currency of the unit price. If the currency is not available, you can create one from the "Currencies" page, under the "Localization" menu, or import from the "Localization" page under the "Localization" menu, by importing the localization pack of the country whose currency you want to use.
- Label. A label for the stock movement that you are generating, for future reference. This is purely informational.
When hovering the "Quantity to add" and "Unit price (tax excl.)" fields with the mouse cursor, the interface will display a reminder of their values the last time you added some stock.
Removing stock from a warehouse
When you want to remove a certain quantity of product stock, you must use the "Remove stock" action (down arrow, available only when there already are products in stock). A new page opens, containing a form where the most important information is displayed in order to help you identify a product with certainty (reference, EAN13 and UPC code, and name). This information cannot be changed from this form, therefore it is grayed out.
You must then set:
- Quantity to remove. This must be a positive number. You cannot add stock by using a negative number.
- Usable for sale. Whether this quantity should be removed from the usable quantity or from the whole physical quantity (including the reserved one).
- Warehouse. From which warehouse that quantity should be removed. The form lets you remove product stock from only one warehouse at a time. If you need to remove stock for this product in more than one warehouse, you must make the entire removing process again for each warehouse.
- Label. A label for the stock movement that you are generating, for future reference. This is purely informational.
Transferring stock from one warehouse to another
The stock transfer enables you to transfer stock from one warehouse to another, or from one status to another (usable in store / reserved) within a single warehouse. Click on the "Transfer stock" action (sideways arrows, available only when there already are products in stock). A new page opens, containing a form where the most important information is displayed in order to help you identify a product with certainty (reference, EAN13 and UPC code, and name). This information cannot be changed from this form, therefore it is grayed out.
You must then set:
- Quantity to transfer. This must be a positive number.
- Source Warehouse. The warehouse from which you want to transfer some products, or where you want to change the status of some of the stock.
- Usable for sale in source warehouse?. Whether the quantity to remove from the "source" warehouse should be from the "usable for sale" stock or the "reserved" stock.
- Destination Warehouse. The warehouse to which you want to transfer some products. If you simply want to change the status of some of the stock from your source warehouse, make sure to select the same warehouse in this form.
- Usable for sale in destination warehouse?. Whether the quantity to add to the "destination" warehouse is usable for sale or reserved. This is also the option to use when you simply want to change the status of some of the stock in the source warehouse:
- If you do not want to change status while moving warehouses: make sure both "Use for sale?" option are set alike.
- If you do want to change status, whether within the same warehouse or while moving warehouses: make sure both "Use for sale?" option are set differently.
For these operations, all that is related to valuations is run automatically according to the management method chosen for each warehouse. Currency conversions work the same.
This interface enables you to view the stock movement history. You can display all of the stock movements, or only those tied to one warehouse. Filters can be applied to refine your search.
When the "Filter movements by warehouse" drop-down list is set to a warehouse, you can make a CSV export of the obtained list.
Stock instant status
This interface enables you to have an instant overview of your stock, either globally or per warehouse. The numbers are current.
For each product or product combination in stock, the following indicators are available:
- Physically available stock.
- Stock that is usable for sale.
- Actual quantity (as explained previously).
- Unit price (tax excluded).
- Product valuation depending on the physical quantity of stock.
As appropriate, and depending on the chosen valuation method, the breakdown of the unit prices and of the associated valuations is available by clicking on the "Details" action (the "+" icon).
Moreover, for a given warehouse, you have two ways to export the current list in CSV format:
- Export the indicators tied to the quantities.
- Export the indicators tied to the valuation.
This interface enables you to overview the coverage of your stock. The coverage indicates how many days your current stock can last. This information is very useful, as it helps you predict the necessary restocking. Coverage is calculated according to previously registered stock movements.
You can get the stock coverage for all the warehouses, or for a single warehouse.
You can also set the time period (one week, two weeks, three weeks, one month, six months, a year) of registered stock movement which is to be taken into account when calculating the coverage.
Finally, you can highlight the stock coverage which is below a given number of days. This will highlight the relevant products, helping you identify them quicker.
In order to view the stock coverage of product combinations, you have to click the "Details" action of the product (the "+" icon).
It is possible de receive notifications of the stock coverage for a product. The e-mail notification module (mail alerts) has been updated in order to take product stock coverage into account. It is thus possible to set a number of coverage days below which you will receive a notification. See the configuration for this module.
One of the major features of the stock manager is the ability to place orders to suppliers so as to better manage your restocking.
This interface enables you to manage all your supplier orders, as well as reusable order templates.
The order template creation process is the same as the order creation process (except for the "Expected delivery date" field). We will therefore only explain the order creation process.
Creating a new order
The creation of an order for a supplier can be broken down in two steps: creating the order, then adding products to it.
So, the first step is to define the order's headers:
- Set the unique reference number. This is an administrative number; do not put any seemingly unique number.
- Select the supplier. If the supplier you want is not in the drop-down list, you must create it in the "Suppliers" page, under the "Catalog" menu.
- Select the warehouse which will take delivery of the order. You must have created at least one warehouse.
- Select the currency in which the order will be formalized. If needed, you can create or import a currency using, respectively, the "Currencies" or "Localization" page under the "Localization" menu.
- Select the language in which the order will be formalized. If needed, you can create or import a language using, respectively, the "Languages" or "Localization" page under the "Localization" menu.
- If needed, set the global discount on the order (in percentage). You can just leave it at "0" if you do not have a discount on this order.
- If needed, set the physical quantity of a product below which all the products have to be restocked, and are therefore to be added to the order automatically. Each pre-added product will be ordered with a quantity equal to the entered quantity, minus the already available quantity.
- Set the planned delivery date.
The second step consists of adding actual products to the order. To make that second step, you can either:
- Click on the "Save order and stay" button.
- Click on the "Save" button. You are taken back to the list of supply orders: click on the "Edit" action for the order you just created.
The interface of the order creation form has been updated with a second form below the previously-filled fields. You must use that second form to add products to your order, using the integrated search engine. The products that you add appear in a new list.
For each product, you must set or update the unit purchase price (tax excluded), the quantity to order, any applicable tax rate, and any product-specific discount.
Once the order is created, it appears in the list with the "Creation in progress" status. This status enables you to view and edit the information that were previously entered as well as add products to the order. You will not be able to change the order once you change its status to "Order validated".
You can never delete a supply order: you can only cancel it.
You need to follow through for the whole order process, always indicating its status change in PrestaShop's interface. This is what the first action button of the list ("Change state") is for: click on it to reach the status changing form. See the "Changing the status of a supplier order" section below for more information on the available statuses, and see the "Registering the reception of products" to understand how to follow through on a supply order.
The "+" icon in the supply order list displays the order's history, which enables you to see who did what and when.
Order template creation
The whole point of creating a template is to serve as a basis for new orders.
The supply order template creation process is the same as the one for a real order, except that:
- You do not have to set a planned delivery date.
- The "Automatically load products" value will be the quantity to order for the loaded products, not the stock/typed value difference.
Moreover, contrary to an ordinary supply order:
- A template does not have a status.
- A template can be deleted.
- A template has no edit history.
Once you have created your template, you only need to use the "Use this template to create a supply order" action from the template list (the "two windows" icon) to start creating an order.
Changing the status of a supply order
Each order has many available actions (in the "Actions" column of the order list). One of them enables you to edit the status: the "Change state" one. There are six possible default statuses, but you can add your own (see the "Configuration" section of this chapter).
An order's status helps you understand your stock movements at a glance thanks to their color code. Here is the significance of the six default statuses:
- Creation in progress. This is when you are in the first step of the creation step, where you can edit everything.
- Order validated. This status validates the order and freezes the information it contains (purchase prices, quantities, etc.). At this step, a new action appears in the "Actions" column, which enables you to edit the invoice that is sent to the supplier in PDF format.
- Pending receipt. As soon as the supplier has received and validated your invoice, you have to change the supply order's status to "Pending receipt".
- Order received in part. As soon as a delivery is made, you must switch the order to this status. There can be multiple deliveries, and a delivery history is logged for each product. The restocking is made with each delivery.
- Order received completely. Once an order is completely delivered, or partially because of a partial cancellation, it should be switched to this status. Stocks are unaffected in this case, and it is possible to perform actions on the order.
- Order canceled. This status is to be given to canceled orders, whatever the reason. Stocks are unaffected in this case, and it is not possible to perform actions on the order.
With each status change, the status drop-down selector evolves in order to present only the possible status changes, in regard to the current status. The unavailable statuses are grayed out.
Details of a supplier order
Clicking the "View" icon from the list of supply orders enables you to get a synthetic view of your order.
You can also download the invoice generated as a PDF file (provided the order is validated by you) from the list of orders or from the status change page.
The "Details" action (the "+" icon) enables you to display the status change history for the current order.
Registering the reception of products
You must change the status of your supply order within PrestaShop as soon as actions are taken in the real world. This is done using the "Change state" icon in the "Actions" column from the list of orders. The form in this page always pre-selects the next logical status, but you are free to choose any of the other statuses available.
While you are preparing the supply order, keep its status to "Creation in progress". Once you are done preparing the order, switch it to "Order validated", then print the invoice PDF and send it to your supplier. As soon as your supplier confirms the reception of the invoice, change the status to "Pending receipt".
During the "Pending receipt" and "Order received in part" statuses, a new action is available in the "Actions" column. Using the "truck" icon, the "Update ongoing receipt of products" action enables you to register the reception of products for a given order during the current day.
The form that opens after clicking that "truck" action enables you to see how many items were expected, and to indicate the quantity of product delivered for each product that day. Click the "Update selected" button to mark the selected products as received with the number of items you indicated in the "Quantity received today?" field. The checkbox on the left of each row must be checked for PrestaShop to take that line into account.
This step can be done as many times as necessary, and it is possible to receive and incorporate more stock than planned.
If you receive less stock than expected, PrestaShop automatically changes the order's status to "Order received in part".
For each product, a reception history is available ("+" action), as well as an indication of the received quantity, the expected quantity, and the remaining quantity. If the "received quantity" is equal to the "expected quantity", the corresponding row is highlighted in green. If you received more than expected, it is in red.
When all the products from the order have been received, you must manually change the supply order's status to "Order received completely". This ends the supply order process, and a new action appears: "Export" (with a Microsoft Excel icon), which you can use to download a CSV file of all the information pertaining to that order.
Using the supply orders interface, you can filter the list of orders or the details of these orders so that you may export it, according to the current filters (reference, supplier, etc.).
Moreover, you can choose not to display the orders that are completed or canceled, using the appropriate checkbox.
The configuration page enables you to customize the way certain parts of the advanced stock manager work:
- The available statuses for a supplier order.
- The labels for the stock movements.
- The default statuses for some stock movements which are used throughout the solution.
Adding a new default order status
You can add custom statuses corresponding to your business line. You cannot delete a default status.
The list on the main page enables you to get a better perspective of the available statuses, and how they can impact an order.
Click the "Add new" button to reach the creation form.
A status has a label, a color, and enables you to define whether:
- The order can be edited. As long as the order is editable, it cannot be sent to the supplier.
- The order delivery note can be generated.
- Product reception is ongoing, meaning that you have not yet received all the ordered products.
- Product delivery is still pending, meaning that you are still waiting for any product to arrive.
Adding a stock movement label
It is possible to add more labels to stock movements. Click the "Add new" button from the "Stock movement labels" section to access the creation form.
You simply have to set a name for the label, and indicate whether it pertains to stock increase or decrease. Those labels can be used when adding/removing/transferring stock manually (as explained earlier).
Changing default supply order labels
It is possible to choose the default stock movement labels in the following standard cases:
- Increasing stock (manually).
- Decreasing stock (manually).
- Decreasing stock following the shipment of a client order.
- Increasing stock following the delivery of products from a supplier's order.
Stock management rules
In this section, we will explain the management rules that are automatically applied to stock management.
Each stock entry and exit must be valued. That is why each unit product stock must be associated with a tax-excluded unit price (either purchase price or production cost), whether through supplier order, or manual entry. Each product exit must also be valued.
There are three main valuation methods that you can choose, depending on your business activity or on the tax laws of each warehouse's country or origin:
- FIFO (first in, first out).
- LIFO (last in, first out).
- AVCO (Average Cost, or Weighted Average Cost per Unit).
With the FIFO and LIFO methods, each unit product from the stock has a purchase price that has been fixed when it entered the stock. This way, for a given reference available in 100 units, 40 units can have a purchase price of X, and 60 can have a purchase price of Y. When an order is made, and depending on the chosen method, you know which product to use and with which purchase price, which enables you to precisely manage a potential order return and put the products back into stock with their original purchase price.
The table below gives you an example of the FIFO method of stock valuation. In this example, you have a two-input table (price and quantity per type of stock movement). You add more columns as we receive new products with new prices.
The stock value during the instant state in this case is 6,900.
The table below illustrates how the FIFO method can be used to value stock. We use the same entry and exit values as in the previous example. The principle remains the same as in the FIFO example, except that during exits, we primarily use the units that were the last to be entered in the stock.
The stock value during the instant state in this case is of 6,700.
The third most frequently used method for stock valuation is Weighted Average Cost (AVCO). The AVCO calculation is done after each new entry in the stock.
For a given product, the AVCO calculation is done using this formula:
AVCO = (QS * previous AVCO + QA * UP) / (QS + QA)
Unless QS is negative or null, in which case AVCO = UP.
- QS = Quantity of products currently in stock, or initial stock.
- QA = Quantity of products to be added to stock.
- UP = Unit Price (tax-excluded purchase price, or production cost).
The table below illustrates the evolution of the AVCO with the example of a product initially with 20 units in stock, and purchased at a price of 2. The new entry/exit will be valued as follows:
*: Calculation details: ((8 remaining product in stock * 2) + (20 products to add * 3.4)) / 28 total products = 3.
At the Y date, we calculated the AVCO according to the number of products added in the stock their unit prices. Therefore, all products in stock now have a reassigned unit value, which depends on the new AVCO.