You are on page 1of 171

Odoo Documentation

Modul INVENTORY
 Warehouse Management
o Products
 Use Different Units of Measure
 When Should you Use Packages, Units of Measure or Special
Packaging?
 How to select the right replenishment strategy
o Warehouses
 What is the difference between warehouses and locations?
o Inventory Adjustment
 Resupply from another Warehouse
o Delivery Orders
 How to choose the right inventory flow to handle delivery orders?
 Process Delivery Orders in one Step (Shipping)
 Process Delivery Orders in two Steps (Pick + Ship)
 Process Delivery Orders in three Steps (Pick + Pack + Ship)
 Send Products to Customers Directly from Suppliers (Drop-
shipping)
 How can I change the label type?
o Incoming Shipments
 How to choose the right flow to handle receipts?
 Process a Receipt in one step (Receipt)
 Process a Receipt in two steps (Input + Stock)
 Process a Receipt in three steps (Input + Quality + Stock)
o Miscellaneous Operations
 Manage Stock that you don’t own
 Process Batch Transfers
o Planning
 How is the Scheduled Delivery Date Computed
o Lots and Serial Numbers
 What’s the difference between lots and serial numbers?
 Work with serial numbers
 Manage lots of identical products
 Manage expiration dates
o Valuation Methods
 Inventory valuation configuration
 Using the inventory valuation
 Integrating additional costs to products (landed costs)
 Impact on the average price valuation when returning goods

 Shipping
o Shipping Setup
 How to setup a delivery method?
 How to integrate a third party shipper?
 How to get UPS credentials for integration with Odoo?
 How to get DHL credentials for integration with Odoo?
o Shipping Operations
 How to invoice the shipping cost to the customer?
 How to manage multiple packs for the same delivery order?
 How to print shipping labels?
 How to cancel a shipping request to a shipper?

 Advanced Routes
o Concepts
 Using Routes and Pull/Push Rules
 How to do inter-warehouses transfers?
 Organize a cross-dock in a warehouse
 Taking stock from different warehouses
o Putaway & Removal Strategies
 What is a Putaway Rule?
 What is a Removal Strategy (FIFO, LIFO, and FEFO)?

 Barcodes
o Setup
 Set up your barcode scanner
 Activate the Barcodes in Odoo
o Daily Operations
 Process to an Inventory Adjustment with Barcodes
 Process to Transfers
 Create a Transfer from Scratch
 Overview
 Warehouse Management
o Products
 Use Different Units of Measure
 In some cases, handling products in different units of measure is necessary. For example,
if you buy products in a country where the metric system is of application and sell in a
country where the imperial system is used, you will need to convert the units. Another
common use case is buying products in bigger packs to your supplier and selling them in
units to your customers.
 You can set up Odoo to work with different units of measure for one product.

 Configuration
 In the Inventory application, go to Configuration ‣ Settings. In the Products section,
activate Units of Measure, then Save.

 Create New Units of Measure


 In the Inventory application go to Configuration ‣ UoM. There, hit Create. As an
example, we will create a Box of 6 units that we will use for the Egg product.


 The category is important for unit conversion, you will be able to convert products from
one unit to another only if those units belong to the same category. The box of 6 is 6
times bigger than the reference unit of measure for the category which is “Units” here.

 Specify Units of Measure on your Products


 In the Inventory application ‣ Master Data ‣ Products, open the product which you would
like to change the purchase/sale unit of measure, and click on Edit.
 In the General Information tab, you can select the Unit of Measure in which the product
will be sold, which is also the unit in which internal transfers will take place. You can
also select the Purchase Unit of Measure, which is the unit in which you purchase the
product.

 Transfer from One Unit to Another


 Buy in the Pruchase UoM
 In the Purchase application, Create a new request for quotation in which you include the
product with the different Units of Measure and Confirm it.


 On the automatically generated purchase orders, the UoM used is the Box of 6, meaning
the Purchase UoM. You have of course the possibility to manually modify the UoM if
necessary. When you enter the Receipt which is linked to the purchase order, you can
observe that the 10 boxes of 6 units have been converted in 60 units. Indeed, the stock is
managed in units.


 Replenishment
 When doing a replenishment via the Replenish button on the product form, you have the
possibility to use a different unit of measure.

 Sell in bigger UoM


 You can choose the unit of measure on the sale order document and decide to sell the
eggs by the dozen. When doing so, the price is automatically computed from Units UoM
to adapt to the selected UoM.

 In the delivery order, the UoM used in the sale order is converted to the UoM used for
stock management, in our use case, the Units.

 When Should you Use Packages, Units of Measure or Special Packaging?

Units of Measure
Units of measure specify the unit used to handle a product. In Odoo, you have the possibility to
specify the unit of measure in which you manage your stock and the one which is used when
purchasing the product to your supplier.
The conversion between the different units of measure is done automatically. The only condition
is that all the units have to be in the same category (Unit, Weight, Volume, Length,…)
For example, if I have the following reordering rule for the egg and I run the scheduler, the
quantity added in the automatically generated purchase order will be in dozens but what will
enter the stock will be units.
Packages
The package is the physical container in which you put one or several products from a picking.
For example, when you deliver a product, you can decide to separate the quantity into two
different packages. It then allows you to have a report with the quantity of products for each
package.
To separate a delivery into different packages you will have to set the done quantity to the
desired package quantity then click on “PUT IN PACK”, do this for each package.
Packaging
The packaging is the physical container that protects your product. If you are selling computers,
the packaging contains the computer with the notice and the power plug.
In Odoo, packagings are used for indicative purposes on sale orders. They can be specified on
the product form, in the inventory tab.
Note
Another useful use of the packaging is for product reception. By scanning the barcode of the packaging, Odoo
adds the number of units contained in the packing on the picking.

 How to select the right replenishment strategy


 Minimum Stock rules and Make to Order have similar consequences but different rules.
They should be used depending on your manufacturing and delivery strategies.

 Terminology

 Minimum stock rule


 Minimum Stock rules are used to ensure that you always have the minimum amount of a
product in stock in order to manufacture your products and/or answer to your customer
needs. When the stock level of a product reaches its minimum the system will
automatically generate a procurement order with the quantity needed to reach the
maximum stock level.

 Make to Order
 The Make to Order function will trigger a Purchase Order of the amount of the Sales
Order related to the product. The system will not check the current stock. This means that
a draft purchase order will be generated regardless of the quantity on hand of the product.
 Configuration

 Minimum stock rules


 The Minimum Stock Rules configuration is available through your Inventory module. In
the Inventory Control menu select “Reordering Rule” in the drop down menu. There,
click on “Create” to set minimum and maximum stock values for a given product.


 Note
 Show tooltips for “minimum quantity”, “maximum quantity” and “quantity multiple” fields
 Then, click on your product to access the related product form and, on the “Inventory
submenu”, do not forget to select a supplier.

 Tip
 Don’t forget to select the right product type. A consumable can not be stocked and will thus not be
accounted for in the stock valuation.

 Make to Order
 The Make to Order configuration is available on your product form through
your Inventory ‣ Inventory control ‣ Products (or any other module where products are
available).
 On the product form, under Inventory, click on “Make To Order”.

 Choice between the two options


 The choice between the two options is thus dependent of your inventory strategy. If you
prefer to have a buffer and always have at least a minimum amount, the minimum stock
rule should be used. If you want to reorder your stocks only if your sale is confirmed it is
better to use the Make to Order.

Warehouses
 What is the difference between warehouses and locations?
In Odoo, a Warehouse is the actual building/place in which your items are stocked. You
can setup multiple warehouses and create moves between warehouses.

A Location, is a specific space within your warehouse. It can be considered as a


sublocation of your warehouse, as a shelf, a floor, an aisle, etc. Therefore, a location is
part of one warehouse only and it is not possible to link one location to multiple
warehouses. You can configure as much locations as you need under one warehouse.

There are 3 types of locations:

 The Physical Locations are internal locations that are part of the warehouses for
which you are the owner. They can be the loading and unloading area of your
warehouse, a shelf or a department, etc.
 The Partner Locations are spaces within a customer and/or vendor’s warehouse.
They work the same way as Physical Locations with the only difference being that
you are not the owner of the warehouse.
 The Virtual Locations are places that do not exist, but in which products can be
placed when they are not physically in an inventory yet (or anymore). They come
in handy when you want to place lost products out of your stock (in
the Inventory loss), or when you want to take into account products that are on
their way to your warehouse (Procurements).
In Odoo, locations are structured hierarchically. You can structure your locations as a
tree, dependent on a parent-child relationship. This gives you more detailed levels of
analysis of your stock operations and the organization of your warehouses.

Inventory Adjustment
 Resupply from another Warehouse

Configuration
In order to be able to resupply from another warehouse, you need to activate *multi-
warehouses* and *multi-step routes*. Storage locations will be automatically activated
when activating multi-warehouses.

You can then access your warehouses via Inventory ‣ Configuration ‣ Warehouses. Enter
the warehouse which should be resupplied by another one. You will have the possibility
to directly indicate through which warehouse it gets resupplied.
By activating this option, a new route will now be available on your products *Supply
Product from Second warehouse*. It can now be selected, along with either a
*reordering rule* or a *make to order*.

For the demonstration, I set a reordering rule with a minimum of 5 units in stock and a
maximum of 10 units in stock, having currently 0 units on hand. I will run the scheduler
by going to Inventory ‣ Operations ‣ Run scheduler.
The system automatically creates two pickings, one *delivery order* from my Second
Warehouse which contains the necessary products, and a receipt in my main warehouse
WH/Stock for the same products. The source document is the *reordering rule* which
triggered the route *Supply Product from Second warehouse*.
Delivery Orders
 How to choose the right inventory flow to handle delivery orders?
Depending on factors such as the type of items you sell, the size of your warehouse, the number
of orders you register everyday… the way you handle deliveries to your customers can vary a
lot.
Odoo allows you to handle shipping from your warehouse in 3 different ways:

 One step (shipping): Ship directly from stock


 Two steps (pick + ship): Bring goods to output location before shipping
 Three steps (pick + pack + ship): Make packages into a dedicated location, then bring
them to the output location for shipping
For companies having a rather small warehouse and that do not require high stock of items or
don’t sell perishable items, a one step shipping is the simplest solution, as it does not require a lot
of configuration and allows to handle orders very quickly.
Using inventory methods such as FIFO, LIFO and FEFO require to have at least two steps to
handle a shipment. The picking method will be determined by the removal strategy, and the
items removed will then be shipped to the customer. This method is also interesting if you hold
larger stocks and especially when the items you stock are big in size.
The three steps system becomes useful in more specific situations, the main one being for
handling very large stocks. The items are transferred to a packing area, where they will be
assembled by area of destination, and then set to outbound trucks for final delivery to the
customers.

Configuration

One step flow


Please read documentation on Process Delivery Orders in one Step (Shipping)

Two steps flow


Please read documentation on Process Delivery Orders in two Steps (Pick + Ship)

Three steps flow


Please read documentation on Process Delivery Orders in three Steps (Pick + Pack + Ship)

 Process Delivery Orders in one Step (Shipping)


 There is no configuration needed to deliver in one step. The default outgoing shipments
are configured to be directly delivered from the stock to the customers.
 However, if advanced routes have been activated and you set another shipping
configuration on your warehouse, you can set it back to the one-step delivery
configuration. Go to Inventory ‣ Configuration ‣ Warehouses and edit the warehouse in
question.
 Then, choose Deliver goods directly as your Outgoing Shipments strategy.

 Create a Sales Order


 In the Sales application, create a quotation with some storable products to deliver and
confirm it.
 Notice that we now see 1 delivery associated with this sales order in the stat button above
the sales order. If you click on the 1 Delivery stat button, you should now see your
delivery order.


 Process a Delivery
 You can also find the delivery order directly from the Inventory application. In the
dashboard, you can click the 1 TO PROCESS button under the Delivery Orders Kanban
card.


 Enter the picking that you want to process. You will be able to click on Validate to
complete the move if you have products in stock.


 Once you Validate the delivery order, the products leave your WH/Stock location and are
moved to the Customer location. You can easily see that the delivery took place thanks to
the status of the document which is now Done.


 Process Delivery Orders in two Steps (Pick + Ship)
 When an order goes to the shipping department for final delivery, Odoo is set up by
default to utilize a one-step operation: once all goods are available, they are able to be
shipped in a single delivery order.
 However, your company’s business process may have one or more steps that happen
before shipping. In the two steps process, the products which are part of the delivery
order are picked in the warehouse and brought to an output location before being
effectively shipped.

 Activate Multi-Step Routes


 The first step is to allow using multi-step routes. Indeed, routes provide a mechanism to
chain different actions together. In this case, we will chain the picking step to the
shipping step.
 To allow multi-step routes, go to Inventory ‣ Configuration ‣ Settings and activate the
option. Note that activating Multi-Step Routes will also activate Storage Locations.

 Warehouse configuration
 Once Multi-Step Routes has been activated, you can go to Inventory ‣ Configuration ‣
Warehouse and enter the warehouse which will use delivery in 2 steps. You can then
select the option Send goods in output and then deliver (2 steps) for Outgoing Shipments.

 Activating this option will lead to the creation of a new Output location. If you want to
rename it go to Inventory ‣ Configuration ‣ Locations, Select Output and update its name.

 Create a Sales Order


 In the Sales application, you can create a quotation with some storable products to
deliver. Once you confirm the quotation, two pickings will be created and automatically
linked to your sale order.

 If you click on the 2 Delivery button, you should now see two different pickings, one
with a reference PICK to designate the picking process and another one with a
reference OUT to designate the shipping process.

 Process the Picking and the Delivery


 The picking operation is the first one to be processed and has a Ready status while the
delivery operation will only become Ready once the picking operation has been marked
as done.
 You can enter the picking operation from here, or access it through the inventory
dashboard.


 In case you have the product in stock, it has automatically been reserved and you can
simply validate the picking document.

 Once the picking has been validated, the delivery order is ready to be processed. Thanks
to the fact that the documents are chained, the products which have been previously
picked are automatically reserved on the delivery order.

 Process Delivery Orders in three Steps (Pick + Pack + Ship)


When an order goes to the shipping department for final delivery, Odoo is set up by default to
utilize a one-step operation: once all goods are available, they are able to be shipped in a single
delivery order. However, that process may not reflect reality and your company could require
more steps before shipping.
With the delivery in 3 steps (Pick + Pack + Ship), the items will be picked to be transferred to a
packing area. Then, they will be moved to an output location before being effectively shipped to
the customers.
Activate Multi-Step Routes
The first step is to allow using multi-step routes. Indeed, routes provide a mechanism to chain
different actions together. In this case, we will chain the picking step to the shipping step.
To allow multi-step routes, go to Inventory ‣ Configuration ‣ Settings and activate the option.
Note that activating Multi-Step Routes will also activate Storage Locations.

Configure Warehouse for Delivery in 3 Steps


Once Multi-Step Routes has been activated, you can go to Inventory ‣ Configuration ‣
Warehouse and enter the warehouse which will use delivery in 3 steps. You can then select the
option Pack goods, send goods in output and then deliver (3 steps) for Outgoing Shipments.
Activating this option will lead to the creation of two new locations, Output and Packing Zone. If
you want to rename it go to Inventory ‣ Configuration ‣ Locations, Select the one you want to
rename and update its name.

Create a Sales Order


In the Sales application, you can create a quotation with some storable products to deliver. Once
you confirm the quotation, three pickings will be created and automatically linked to your sale
order.

If you click the button, you should now see three different pickings:

1. The first one with a reference PICK to designate the picking process,
2. The second one with the reference PACK that is the packing process,
3. The last one with a reference OUT to designate the shipping process.

Process the Picking, Packing, and Delivery


The picking operation is the first one to be processed and has a Ready status while the other ones
are Waiting Another Operation. The Packing operation will become Ready as soon as the picking
one is marked as done.
You can enter the picking operation from here, or access it through the inventory dashboard.

In case you have the product in stock, it has automatically been reserved and you can simply
validate the picking document.

Once the picking has been validated, the packing order is ready to be processed. Thanks to the
fact that the documents are chained, the products which have been previously picked are
automatically reserved on the packing order which can be directly validated.
Once the packing has been validated, the delivery order is ready to be processed. Here again, it is
directly ready to be validated in order to transfer the products to the customer location.
 Send Products to Customers Directly from Suppliers (Drop-shipping)

What is Drop-Shipping?
Drop-Shipping is a system that allows orders taken from your store to be shipped straight from
your supplier to your customer. On a usual delivery system, products are sent from your supplier
to your warehouse to be put in stock and then shipped to your customers after ordering.
With drop-shipping, no item is stocked. When a customer places an order in your shop, the item
is delivered straight from the supplier to the customer. Therefore, the product doesn’t need to get
through your warehouse.

Points to be Considered while Implementing


Drop-Shipping
 Use drop-shipping only for the products you can’t or don’t want to keep in stock.
One reason is that you’ll always make smaller margins on items that are drop-shipped, so
you should keep it only for items that take up a lot of space in your warehouse.

 Drop-shipping is best for niche products.


Chances are that products that are in high demand are being offered by large suppliers at
a fraction of the price you’ll be able to charge, so using a more costly shipping method
won’t be financially rewarding. But if your product is unique, then it makes sense!

 To protect your customers from bad experiences.


Test drop-shipping companies for yourself beforehand and list the best ones.

 Make sure time is not against you.


Drop-shipping should take a reasonable amount of time and surely not more than it would
have taken you to handle it all by yourself. It’s also nice to be able to provide your
customers with a tracking number.

 Items have to be available from your supplier.


It’s good to know if the product you’re selling is available upstream. If you don’t have
that information, inform your customers that you don’t hold the item in stock and that it’s
subject to availability from a third party.
Tip
For more information and insights about Drop-Shipping, you can read our blog: *What is drop-shipping and
how to use it*.
Configure Drop-Shipping
Activate the functionality in the Purchase application by going to Configuration ‣ Settings.

Then, go to the Inventory app, in Configuration ‣ Settings to activate the Multi-Step


Routes feature. It will allow you to make the Route field appear on the sale order lines to specify
you send a product via drop-shipping.

Now, in the Sales app, go to Products ‣ Products. Select the product you would like to drop-ship
and add a vendor pricelist which contains the right supplier, via the purchase tab.
Send Products from the Suppliers Directly to
the Customers
Create a Sales Order and add the product on which you just set the vendor. Add the Route field
thanks to the widget on the right of the sale order line. Now, you are able to specify that your
products’ route is Drop-Shipping.

Once the sale order is confirmed, Odoo automatically generates a Request for Quotation for the
supplier who will proceed to the drop-shipping. You can find it in the Purchase app, with the
sale order as Source Document.
Once this Purchase Order is confirmed, a Receipt Order is created and linked to it. The source
location is the vendor location and the destination location is the customer location. Then, the
product won’t go through your own stock when you validate the dropship document.

You can also easily access the dropship document directly from your inventory dashboard.
 How can I change the label type?

Overview
With Odoo, you can choose among different types of labels for your delivery orders. Follow the
steps below and give an appropriate label type to your delivery.

Configuration
In the Inventory module, Go to Configuration and click on Delivery methods.
Choose a delivery method and then click on Edit.

In the Pricing tab, under Fedex label stock type, you can choose one of the label types
available. The availability will vary depending on the carrier.
Once this is done, you can see the result if you go to the Sales module and you create a new sale
order.
As you confirm the sale and validate the delivery with the carrier for which you have modified
the label type, The label will appear in your history.
The default label type is paper letter, and if you choose the label type bottom half for example,
here is the difference :
Incoming Shipments
 How to choose the right flow to handle receipts?

Overview
Depending on factors such as the type of items you receive, the size of your warehouse, the
number of receipt you register everyday… the way you handle receipts to your customers can
vary a lot.
Odoo allows you to handle receipts from your warehouse in 3 different ways:

 One step: Receive goods directly in stock.


 Two steps: Unload in input location then go to stock.
 Three steps: Unload in input location, go through a quality control before being admitted
in stock.
Odoo uses routes to define exactly how you will handle the different receipt steps. The
configuration is done at the level of the warehouse. In standard, the reception is a one step
process, but changing the configuration can allow to have 2 or even 3 steps.
The principles are the following:

1. One step: You receive the goods directly in your stock.


2. Two steps: You receive the goods in an input area then transfer them from input area to
your stock. As long as the goods are not transferred in your stock, they will not be
available for further processing.
3. Three steps: In many companies, it is necessary to assess the received good. The goal is
to check that the products correspond to the quality requirements agreed with the
suppliers. Adding a quality control step in the goods receipt process can become
essential.
You receive the goods in an input area, then transfer them into quality area for quality
control. When your quality check process finishes then you can move the goods from QC
to stock. Of course, you may change the quantity and only transfer to Stock the quantity
that is valid and decide that you will return the quantity that is not good.

Configuration

One step flow


This is the default configuration in Odoo.

Two steps flow


Please read documentation on Process a Receipt in two steps (Input + Stock)

Three steps flow


Please read documentation on Process a Receipt in three steps (Input + Quality + Stock)
See also

 How to choose the right inventory flow to handle delivery orders?


Overview
Depending on factors such as the type of items you receive, the size of your warehouse, the
number of receipt you register everyday… the way you handle receipts to your customers can
vary a lot.
Odoo allows you to handle receipts from your warehouse in 3 different ways:

 One step: Receive goods directly in stock.


 Two steps: Unload in input location then go to stock.
 Three steps: Unload in input location, go through a quality control before being admitted
in stock.
Odoo uses routes to define exactly how you will handle the different receipt steps. The
configuration is done at the level of the warehouse. In standard, the reception is a one step
process, but changing the configuration can allow to have 2 or even 3 steps.
The principles are the following:

1. One step: You receive the goods directly in your stock.


2. Two steps: You receive the goods in an input area then transfer them from input area to
your stock. As long as the goods are not transferred in your stock, they will not be
available for further processing.
3. Three steps: In many companies, it is necessary to assess the received good. The goal is
to check that the products correspond to the quality requirements agreed with the
suppliers. Adding a quality control step in the goods receipt process can become
essential.
You receive the goods in an input area, then transfer them into quality area for quality
control. When your quality check process finishes then you can move the goods from QC
to stock. Of course, you may change the quantity and only transfer to Stock the quantity
that is valid and decide that you will return the quantity that is not good.

Configuration

One step flow


This is the default configuration in Odoo.

Two steps flow


Please read documentation on Process a Receipt in two steps (Input + Stock)

Three steps flow


Please read documentation on Process a Receipt in three steps (Input + Quality + Stock)
See also

 How to choose the right inventory flow to handle delivery orders?


 Analyze the performance of your purchases

 Process a Receipt in one step (Receipt)


 There is no configuration needed to receive in one step. The default incoming shipments
are configured to be directly received from the vendors to the stock.
 However, if advanced routes have been activated and you set another incoming
configuration on your warehouse, you can set it back to the one-step receipt
configuration. To do so, go to Configuration ‣ Warehouses and edit the warehouse in
question.
 Set the Incoming Shipments option to Receive goods directly (1 step).


 Create a Purchase Order
 To create a Request for Quotation, go to the Purchase application and click on Create.
Then, add some storable products to receive and confirm the RfQ.
 Notice that, now, we see 1 receipt associated with the purchase order you just created. If
you click on the button, you will see your receipt order.

 Process a Receipt
 You can also fin the receipt directly from the Inventory app. When on the dashboard, you
can click the 1 TO PROCESS button under the Receipts Kanban card. Then, you will see
your receipt.


 Now, enter the picking that you want to process. You will be able to click on Validate to
complete the move directly as products coming from suppliers are considered as being
always available.

 Once you Validate the receipt, the products leave the Supplier Location to enter
your WH/Stock Location. You can easily see that the receipt took place thanks to the
status of the document, which is now Done.

 Process a Receipt in two steps (Input + Stock)

Configuration
Odoo uses routes to define exactly how you will handle the different receipt steps. The
configuration is done at the Warehouse level. By default, the reception is a one-step process, but
changing the configuration can allow you to have 2 steps.
The 2 steps flow is like this: you receive the goods in an input area, then transfer them to your
stock. As long as the goods are not transferred in your stock, they will not be available for further
processing.
Activate Multi-Step Routes
The first step is to allow using multi-step routes. Indeed, routes provide a mechanism to chain
different actions together. In this case, we will chain the unload step in the input area to the step
entering the products in stock.
To allow multi-step routes, go to Configuration ‣ Settings and activate the feature. By default,
activating multi-step routes will also activate Storage Locations.

Configure warehouse for receipt in 2 steps


Once multi-step routes is activated, you can go to Configuration ‣ Warehouse and enter the
warehouse which will use receipt in 2 steps. Then, you can select the option Receive goods in
input and then stock (2 steps) for Incoming Shipments.
Activating this option will lead to the creation of a new Input location. If you want to rename it,
you can go to Configuration ‣ Locations ‣ Select Input and update its name.

Create a purchase order


In the Purchase application, you can create a Request for Quotation with some storable products
to receive from a supplier. Once the RfQ is confirmed, the receipt picking will be created and
automatically linked to your purchase order.
Now, by clicking on the 1 Receipt button, you will see the first picking which will allow entering
the product in the input location. Then, another picking, an internal transfer, has been created in
order to move the products to Stock.

Process the receipt and the internal transfer


The receipt is the first one to be processed and has a Ready status while the internal transfer will
only become Ready once the receipt has been marked as Done.
You can enter the receipt operation from the purchase order, or access it through the inventory
dashboard.

By default, a receipt is always considered as ready to be processed. Then, you will be able to
directly click on Validate to mark it as done.
Once the receipt has been validated, the internal transfer is ready to be processed. As documents
are chained, the products which have been received are automatically reserved on the internal
transfer. Once the transfer is validated, those products enter the stock and you will be able to use
them to fulfill customer deliveries or manufacture products.

 Process a Receipt in three steps (Input + Quality + Stock)


Quality is essential for most companies. To make sure we maintain quality throughout the supply
chain, it only makes sense that we assess the quality of the products received from suppliers. To
do so, we will add a quality control step.
Odoo uses routes to define how to handle the different receipt steps. Configuration of those
routes is done at the warehouse level. By default, the reception is a one-step process, but it can
also be configured to have two-steps or three-steps processes.
The three-steps flow works as follows: you receive the goods in your receiving area, then
transfer them into a quality area for quality control (QC). When the quality check is completed,
the goods that match the QC requirements are moved to stock

Activate Multi-Step Routes


The first step is to allow the use of Multi-Step Routes. Routes provide a mechanism to chain
different actions together. In this case, we will chain the picking step to the shipping step.
To enable Multi-Step Routes, go to Inventory ‣ Configuration ‣ Settings and activate the option.

Note
By default, activating Multi-Step Routes also activates Storage Locations.

Configure warehouse for receipt in 3-steps


Once Multi-Step Routes has been activated, go to Inventory ‣ Configuration ‣ Warehouse and
enter the warehouse which should work with the 3-steps reception. Then, select Receive goods in
input, then quality and then stock (3 steps) for Incoming Shipments.
Activating this option leads to the creation of two new locations: Input and Quality Control. To
rename them, go to Inventory ‣ Configuration ‣ Locations and select the one you want to rename.

Create a Purchase Order


To start the 3-steps reception process, create a Request for Quotation from the Purchase app, add
some storable products to it and confirm. Then, three pickings are created with your Purchase
Order as the source document:

1. The first one with a reference IN to designate the receipt process;


2. The second one with a reference INT, which is the move to the quality control zone;
3. The last one with a reference INT to designate the move to stock.

Process the receipt, quality control and entry in


stock
As the receipt operation is the first one to be processed, it has a Ready status while the others
are Waiting Another Operation.
To access the receipt operation, click on the button from the Purchase Order or go back to
the Inventory app dashboard and click on Receipts.

In the receipt order, products are always considered available because they come from the
supplier. Then, the receipt can be validated.

Once the receipt has been validated, the transfer to quality becomes Ready. And, because the
documents are chained to each other, products previously received are automatically reserved on
the transfer. Then, the transfer can be directly validated.
Now, the transfer that enters the products to stock is Ready. Here, it is again ready to be
validated in order to transfer the products to your stock location.
Miscellaneous Operations
 Manage Stock that you don’t own
 Sometimes, suppliers can offer you to store and sell products without having to buy those
items. This technique is called consignee stock.
 Consignee stock is a great way for manufacturers and suppliers to launch new products.
As resellers may be reluctant to buy a product they are not sure to be able to sell,
consignee stock will allow them to offer an item to check its market without having to
pay for it in the first place.
 Of course, Odoo has the ability to manage those consignee stocks through advanced
settings.

 Configuration
 To use this feature, go to Inventory ‣ Configuration ‣ Settings in the inventory app. Then,
enable the Consignment feature in the Traceability section. Now, hit save.

 Reception of Consignee Stock


 When in the Inventory app, open the receipts and create a new reception. On the right
side, you will see that a new line called Assign Owner has appeared. There, you can
specify the partner which owns the stock.

 Note
 If you are the owner, you can leave the field blank.
 Once the receipt is validated, the products enter your stock but still belong to the owner.
They don’t impact your inventory valuation.

 Process Batch Transfers


 Batch picking allows a single picker to handle a batch of orders, reducing the number of
times he must visit the same location. In Odoo, it means you can regroup several transfers
into the same batch transfer, then process it, either via the barcode application or in the
form view.

 Create a Batch Transfer


 To activate the batch picking option, go to Inventory ‣ Configuration ‣ Configuration and
enable Batch Pickings.

 Then, go to Inventory ‣ Operations ‣ Batch Transfers and hit the create button.


 Now, determine the batch transfer responsible and the type of transfers you want to
include in the batch. To add the types of transfers, click on Add a line.

 In the example below, a filter was applied to only see the transfers that are in
the Pick step. After that, the different transfers that needed to be included in the batch
transfer were selected.


 To see the products to pick for the different transfers, click on Select. If Multi-
locations has been activated, the document also shows the locations they have been
reserved from.

 Create a Batch Transfer from the Transfers


List View
 From the Transfers List View, select transfers that should be included in the Batch. Then,
select Add to batch from the Action list.


 Next, determine if you want to add the transfers to an existing draft batch transfer or
create a new one.

 Process a Batch Transfer


 While gathering the products, you can edit the batch transfer and update the Quantity
done for each product. Once everything has been picked, select Validate so the different
transfers contained in the batch are validated too.


 In case all the products cannot be picked, you can create backorders for each individual
transfer which couldn’t be completely processed.

 Process a Batch Transfer from the Barcode


app
 Enter the Barcode application, select the Batch Transfers menu.

 Then, you can enter the batch transfer on which you want to work. Batch transfers can
easily be grouped per responsible if necessary.


 In the batch transfer, products are classified per location. The source document is visible
on each line and a color-code helps differentiate them.

 To see the products to pick from another location, click on the Next button.


 Once all the products have been picked, click on Validate (on the last page) to mark the
batch transfer as done.

Planning
 How is the Scheduled Delivery Date Computed
Providing the best possible service to customers is vital for business. It implies planning
every move: manufacturing orders, deliveries, receptions, and so on. To do so, you need
to configure lead time properly and coordinate scheduled dates.
By using lead times, Odoo provides end dates, the Commitment Date, for each process.
On a sales order, for example, this is the date your customer will get the products he
ordered.
From the customers’ side, the commitment date is important because it gives them an
estimation of when they will receive their products. The dates take all other lead times,
such as manufacturing, delivery, or suppliers, into account.

How are Lead Times Calculated?

Lots and Serial Numbers


 What’s the difference between lots and serial numbers?

Introduction
In Odoo, lots and serial numbers have similarities in their functional system but are different in
their behavior. They are both managed within the Inventory, Purchases and Sales app.
Lots correspond to a certain number of products you received and store altogether in one single
pack.
Serial numbers are identification numbers given to one product in particular, to allow to track
the history of the item from reception to delivery and after-sales.

When to use
Lots are interesting for products you receive in great quantity and for which a lot number can
help in reportings, quality controls, or any other info. Lots will help identify a number of pieces
having for instance a production fault. It can be useful for a batch production of clothes or food.
Serial numbers are interesting for items that could require after-sales service, such as
smartphones, laptops, fridges, and any electronic devices. You could use the manufacturer’s
serial number or your own, depending on the way you manage these products

When not to use


Storing consumable products such as kitchen roll, toilet paper, pens and paper blocks in lots
would make no sense at all, as there are very few chances that you can return them for
production fault.
On the other hand, giving a serial number to every product is a time-consuming task that will
have a purpose only in the case of items that have a warranty and/or after-sales services. Putting
a serial number on bread, for instance, makes no sense at all.
See also

 Work with serial numbers


 Manage lots of identical products

 Work with serial numbers


To track products with serial numbers, you can use the serial number tracking. With them, you
can track the current location of the product and, when the products are moved from one location
to another, the system will automatically identify the current location of the product, based on its
last movement.
If you want to do it or run very advanced traceability, the Odoo double-entry management is the
feature you need.

Configurations

Application configuration
First, you need to activate the serial numbers tracking. To do so, go to Configuration ‣ Settings in
the Inventory application. Then, enable the feature and hit save.
Product configuration
Now, you have to configure the products you want to track by serial numbers. To do so, go
to Master Data ‣ Products and open the product of your choice. Edit it and select Tracking By
Unique Serial Number in the Inventory tab. Then, click on save.

Manage Serial Numbers

Receipts
To receive a product that is tracked by serial number, you have to specify its serial number. Of
course, you have several ways of doing so:

 Manual assignation
 Multi-assignation
 Copy/pasting from an Excel file
Whatever could be your favorite way to assign serial numbers, you firstly need to open the
detailed operations of your picking.

Manual assignation of the different serial numbers


When opening the detailed operations, you can click on Add a line. Then, you will be able to fill
in the serial number field. Once done, you can click again on Add a line to register a new serial
number.
Multi-assignation
By using the multi-assignation of serial numbers, Odoo will automatically create the necessary
lines. To do so, you have to enter the first serial number of your set and the number of products
you have to assign a serial number to.
Once done, click on Assign Serial Numbers and Odoo will do the rest.
Copy/pasting from an Excel file
To use copy/pasting, open the spreadsheet containing the serial numbers you received and copy
the list. Then, past them in the Lot/Serial Number Name column of the wizard. Doing so, Odoo
will automatically create the lines you need.
Operation types
You also have the possibility to define how you will manage lots for each operation type. To
define it, go to Configuration ‣ Operation Types in the Inventory app.
For each type, you can decide if you allow the creation of new lot numbers or want to use
existing ones. By default, the creation of new lots is only allowed at product reception.

Tip
If you have inter-warehouse transfers and track products by lots, it can be useful to allow using existing lot
numbers in receipts too.

Serial Number traceability


Using serial numbers allows you to keep track of where the products were received, put in stock,
to whom they were sold, and where they were shipped to.
Tracking an item is easy: open the Inventory app, and go to Master Data ‣ Lots/Serial
Numbers and click on the serial number corresponding to your search. Then, open
the Traceability information. There, you will see in which documents the serial number has been
used.

And, if you want to locate a serial number, you can do so by clicking on the Location button
available on the serial number form.

 Manage lots of identical products


Lots are useful for products you receive in great quantity and for which a lot number can help in
reporting, quality controls, or any other info. Lots will help identify a number of pieces having,
for instance, a production fault. It can be useful for a batch production of clothes or food.
Odoo has the capacity to manage lots, ensuring compliance with the traceability requirements
imposed by the majority of industries.
The double-entry management in Odoo enables you to run very advanced traceability.

Setting Up

Application Configuration
First, you need to activate the tracking of lot numbers. To do so, go to Inventory ‣ Configuration
‣ Settings and tick Lots & Serial Numbers. Then, click on save.

Product Configuration
Now, you have to configure which products you want to track by serial numbers.
Go to Master Data ‣ Products and open the product of your choice. There, click on Edit and
select Tracking by Lots in the inventory tab.
Manage Lots

Receipts
In order to receive a product tracked by lots, you have to specify its lot numbers. You have
several ways of doing so:

1. Manually assign the different lot numbers


2. Copy/paste lot numbers from an Excel file
First, you need to open the detailed operations of your picking.
Manually assign the different lot numbers
When opening the detailed operations, you can click on Add a line. Then, you will be able to fill
the lot number in. Once done, you can click on Add a line again to register a new lot number.

Copy/paste lot number from an Excel file


Once the spreadsheet containing the lot numbers you received from your supplier and copy the
list. Then, you can paste them in the Lot/Serial Number Name column for Odoo to automatically
create the necessary lines. After that, you will have to manually enter the number of products that
are contained in each one of the lots.
Operation Types
Of course, you also have the possibility to define how you will manage lots for each operation
type. To do so, open the Inventory app and go to Configuration ‣ Operation Types.
For each type (receipts, internal transfers, deliveries, …), you can decide if you allow to create
new lot numbers or only use existing ones. By default, the creation of new lots is only allowed at
product reception, and using existing lot numbers isn’t allowed in this operation. If you have
inter-warehouse transfers and track products by lots, it can be useful to allow using existing lot
numbers in receipts too.

Lots traceability
The lot number given to the products allows you to keep track of where they were received, put
in stock, to whom they were sold and where they were shipped to.
To track an item, open the Inventory module and, in Master Data ‣ Lots/Serial Numbers, click on
the lot number corresponding to your search.

When you open the Traceability information, you see in which documents the lot number has
been used.
Now, if you want to locate the lot number, you can do so by clicking on the Location stat button.

 Manage expiration dates


In many companies, products have expiration dates and they should be tracked based on those
dates. In the food industry, for example, tracking stocks based on expiration dates is mandatory
to avoid selling expired products to customers.
With Odoo, you can track your products based on their expiration dates, even if they are already
tracked by lots or serial numbers.

Configurations

Application configuration
To use expiration dates tracking, open the Inventory application and go to Configuration ‣
Settings and activate the Lots & Serial Numbers and Expiration Dates features.
Product configuration
Now, you have the possibility to define different dates in the inventory tab of the product form:

 Product Use Time: it’s the number of days before the goods start deteriorating, without
being dangerous yet. It will be computed using the lot/serial number;
 Product Life Time: refers to the number of days before the goods may become dangerous
and must not be consumed. It will be computed on the lot/serial number;
 Product Removal Time: shows the number of days before the goods should be removed
from the stock. It will be computed on the lot/serial number;
 Product Alert Time: refers to the number of days before an alert should be raised on the
lot/serial number.

Expiration Date on Lots/Serial Numbers


When receiving a product in stock, the dates will automatically be updated on the corresponding
lot/serial number. This update will be based on the reception date of the product and the times set
on the product form.
Expiration Alerts
You can access all your expiration alerts from the inventory app. To do so, go to Master Data ‣
Lots/Serial Numbers. There, you can use the pre-existing filter that shows all the lots/serial
numbers that exceeded their alert date.

Valuation Methods
 Inventory valuation configuration
Inventory valuation refers to how you value your stock. It’s a very important aspect of a business
as the inventory can be the biggest asset of a company.
Inventory valuation implies two main choices:
 The cost method you use to value your goods (standard, fifo, avco)
 The way you record this value into your accounting books (manually or automatically)
Those two concepts are explained in the sections below.

Costing Methods: Standard, FIFO, AVCO


The costing method is defined in the product category. There are three options available. Each of
them is explained in detail below.

Standard Price Average Price FIFO


Unit Qty On Delta Inventory
Operation Cost Hand Value Value

€10 0 €0

Receive 8 Products €10 8 +8*€10 €80


at €10

Receive 4 Products €10 12 +4*€10 €120


at €16

Deliver 10 Products €10 2 -10*€10 €20

Receive 2 Products €10 4 +2*€10 €40


at €9

In Standard Price, any product will be valued at the cost that you defined manually on the product
form. Usually, this cost is an estimation based on the material and labor needed to obtain the product.
This cost must be reviewed periodically.

Inventory valuation refers to how you value your stock. It’s a very important aspect of a business
as the inventory can be the biggest asset of a company.
Inventory valuation implies two main choices:
 The cost method you use to value your goods (standard, fifo, avco)
 The way you record this value into your accounting books (manually or automatically)
Those two concepts are explained in the sections below.

Costing Methods: Standard, FIFO, AVCO


The costing method is defined in the product category. There are three options available. Each of
them is explained in detail below.

Standard Price Average Price FIFO


Unit Qty On Delta Inventory
Operation Cost Hand Value Value

€10 0 €0

Receive 8 Products €10 8 +8*€10 €80


at €10

Receive 4 Products €10 12 +4*€10 €120


at €16

Deliver 10 Products €10 2 -10*€10 €20

Receive 2 Products €10 4 +2*€10 €40


at €9

In Standard Price, any product will be valued at the cost that you defined manually on the product
form. Usually, this cost is an estimation based on the material and labor needed to obtain the product.
This cost must be reviewed periodically.

Inventory Valuation: Manual or Automated


There are two ways to record your inventory valuation in your accounting books. As the costing
method, this is defined in your product category. Those two methods are detailed below.
It is important to also note that the accounting entries will depend on your accounting mode: it
can be continental or anglo-saxon. In continental accounting, the cost of a good is taken into
account as soon as the product is received in stock. In anglo-saxon accounting, the cost of a good
is only recorded as an expense when this good is invoiced to a final customer. In the tables
below, you can easily compare those two accounting modes.
Usually, based on your country, the correct accounting mode will be chosen by default. If you
want to verify your accounting mode, activate the Developer mode and open your accounting
settings.

Manual Inventory Valuation


In this case, goods receipts and deliveries won’t have any direct impact on your accounting
books. Periodically, you create a manual journal entry representing the value of what you have in
stock. To know that value, go in Inventory ‣ Reporting ‣ Inventory Valuation.
This is the default configuration in Odoo and it works out-of-the-box. Check following
operations and find out how Odoo is managing the accounting postings.

Continental Accounting
Vendor Bill Goods Receptions Customer Invoice Customer Shipping
Manufacturing Orders
Debit Credit

Assets: Inventory 50

Assets: Deferred Tax Assets 4.68

Liabilities: Accounts Payable 54.68

Configuration:

 Purchased Goods: defined on the product or on the internal category of related product
(Expense Account field)

 Deferred Tax Assets: defined on the tax used on the purchase order line
 Accounts Payable: defined on the vendor related to the bill

At the end of the month/year, your company does a physical inventory or just relies on the
inventory in Odoo to value the stock into your books.
Create a journal entry to move the stock variation value from your Profit&Loss section to your
assets.

Debit Credit

Assets: Inventory X

Expenses: Inventory Variations X

If the stock value decreased, the Inventory account is credited and te Inventory Variations debited.

Anglo-Saxon Accounting
Vendor Bill Goods Receptions Customer Invoice Customer Shipping
Manufacturing Orders
Debit Credit

Assets: Inventory 50

Assets: Deferred Tax Assets 4.68

Liabilities: Accounts Payable 54.68

Configuration:

 Purchased Goods: defined on the product or on the internal category of related product
(Expense Account field)

 Deferred Tax Assets: defined on the tax used on the purchase order line

 Accounts Payable: defined on the vendor related to the bill


At the end of the month/year, your company does a physical inventory or just relies on the
inventory in Odoo to value the stock into your books.
Then you need to break down the purchase balance into both the inventory and the cost of goods
sold using the following formula:
Cost of goods sold (COGS) = Starting inventory value + Purchases – Closing inventory value
To update the stock valuation in your books, record such an entry:

Debit Credit

Assets: Inventory (closing value) X

Expenses: Cost of Good Sold X

Expenses: Purchased Goods X

Assets: Inventory (starting value) X

Automated Inventory Valuation


In that case, when a product enters or leaves your stock, an accounting entry will be
automatically created. This means your accounting books are always up-to-date. This mode is
dedicated to expert accountants and advanced users only. As opposed to periodic valuation, it
requires some extra configuration & testing.
First, you need to define the accounts that will be used for those accounting entries. This is done
on the product category.

Continental Accounting
Vendor Invoice (PO €50, Invoice €50) Vendor Goods Reception (PO €50, Invoice €50)
Vendor Invoice (PO €48, Invoice €50) Vendor Goods Reception (PO €48, Invoice €50)
Customer Invoice (€100 + 9% tax) Customer Shipping
Debit Credit Balance

1 Assets

  11000 Cash

  13100 Accounts Receivable

  14000 Inventory

  14100 Raw Materials Inventory

  19000 Deferred Tax Assets

2 Liabilities

  21000 Accounts Payable

  26200 Deferred Tax Liabilities

3 Equity

  31000 Common Stock

4 Revenue

  41000 Goods

5 Expenses

  51000 Purchased Goods

  52000 Purchased Services


Debit Credit Balance

  58000 Inventory Variations

  59000 Other Operating Expenses

Configuration:

 Accounts Receivable/Payable: defined on the partner (Accounting tab)

 Deferred Tax Assets/Liabilities: defined on the tax used on the invoice line

 Revenues/Expenses: defined by default on product’s internal category; can be also set in product form
(Accounting tab) as a replacement value.

 Inventory Variations: to set as Stock Input/Output Account in product’s internal category

 Inventory: to set as Stock Valuation Account in product’s internal category

Anglo-Saxon Accounting
Vendor Bill (PO $50, Invoice $50) Supplier Goods Reception (PO $50, Invoice $50)
Vendor Bill (PO $48, Invoice $50) Supplier Goods Reception (PO $48, Invoice $50)
Customer Invoice Customer Shipping Production Order
Debit Credit Balance

1 Assets

  11000 Cash

  13100 Accounts Receivable

  14000 Inventory

  14100 Raw Materials Inventory


Debit Credit Balance

  14600 Goods Issued Not Invoiced

  19000 Deferred Tax Assets

2 Liabilities

  21000 Accounts Payable

  23000 Goods Received Not Purchased

  26200 Deferred Tax Liabilities

3 Equity

  31000 Common Stock

4 Revenue

  41000 Goods

5 Expenses

  51100 Cost of Goods Sold

  52000 Manufacturing Overhead

  53000 Price Difference

Configuration:

 Accounts Receivable/Payable: defined on the partner (Accounting tab)

 Deferred Tax Assets/Liabilities: defined on the tax used on the invoice line
 Revenues: defined on the product category as a default, or specifically to a specific product.

 Expenses: this is where you should set the “Cost of Goods Sold” account. Defined on the product
category as a default value, or specifically on the product form.

 Goods Received Not Purchased: to set as Stock Input Account in product’s internal category

 Goods Issued Not Invoiced: to set as Stock Output Account in product’s internal category

 Inventory: to set as Stock Valuation Account in product’s internal category

 Price Difference: to set in product’s internal category or in product form as a specific replacement
value

 Using the inventory valuation


 Inventory valuation refers to how you value your stock. It’s a very important aspect of a
business as the inventory can be the biggest asset of a company.
 In this documentation, we will explain how the inventory valuation works in Odoo.

 Inventory valuation: the basics

 Receive a product
 Each time a product enters or leaves your stock, the value of your inventory is impacted.
The way it is impacted depends on the configuration of your product (more info here).
 Let’s take an example with a product - a table - configured with a FIFO costing
method and an automated inventory valuation.
 I purchase 10 tables at a cost of $10.

 When I’ll confirm the receipt of the products, the value of my inventory will be impacted.
If I want to know what this impact is, I can click on the valuation stat button.
 Tip
 The consignment feature allows you to set owners on your stock (discover more about the
consignment feature). When you receive products that are owned by another company, they are not
taken into account in your inventory valuation.


 Note
 You need access rights on the accounting module to see that button.
 In this case, I can see that the 10 tables entered the stock for a total value of $100.


 I can also easily access the accounting entry that has been generated (in case of
automated inventory valuation).

 Deliver a product
 In the same logic, when a table will be delivered, the stock valuation will be impacted
and you will have access to a similar information.

 The inventory valuation report


 The summary of this is accessible via the inventory valuation report (accessible
from Inventory ‣ Reporting ‣ Inventory Valuation). It gives you, product per product, the
value of your stock. By clicking on the button Inventory At Date, you can have the same
information for a past date.

 Integrating additional costs to products (landed costs)


 The landed cost feature in Odoo allows to include additional costs (shipment, insurance,
customs duties, etc.) into the cost of the product.
 Note
 Landed costs can only be applied to products with a FIFO or AVCO costing method and an automated
inventory valuation (which requires the accounting application to be installed).

 Configuration
 First, you need to go in Inventory ‣ Configuration ‣ Settings and activate the landed costs
feature. You can also determine the default journal in which the landed cost accounting
entries will be recorded.

 Add costs to products


 Receive the vendor bill
 Let’s imagine I receive a bill from custom duties for a shipment. I’ll tick the box Landed
Costs on the vendor bill line.


 Note
 The landed cost product must be of type service.
 If this product is always a landed cost, you can also define it on the product and avoid
having to tick the box on each vendor bill.


 At the top of my vendor bill, I’ll see a button create landed costs. I click on this button
and a landed cost is automatically created. I can now decide on which picking those
additional costs should apply.

 I can now click on Compute and go in the tab Valuation Adjustments to see the impact on
my products costs. The last step is to validate the landed cost.
 I can access the journal entry that has been created by the landed cost by clicking on the
journal entry.

 Impact on the average price valuation when returning goods


As stated in the *inventory valuation page*, one of the possible costing method you can use in
perpetual stock valuation, is the average cost.
This document answers to one recurrent question for companies using that method to make their
stock valuation: how does a shipping returned to its supplier impact the average cost and the
accounting entries? This document is only for the specific use case of a perpetual valuation (as
opposed to the periodic one) and in average price costing method (as opposed to standard of
FIFO).

Definition of average cost


The average cost method calculates the cost of ending inventory and cost of goods sold on the
basis of weighted average cost per unit of inventory.
The weighted average cost per unit is calculated using the following formula:

 When new products arrive in a warehouse, the new average cost is recomputed as:

 When products leave the warehouse: the average cost does not change
Defining the purchase price
The purchase price is estimated at the reception of the products (you might not have received the
vendor bill yet) and reevaluated at the reception of the vendor bill. The purchase price includes
the cost you pay for the products, but it may also includes additional costs, like landed costs.

Average cost example


Operation Delta Value Inventory Value Qty On Hand Avg Cost

$0 0 $0

Receive 8 Products at $10 +8*$10 $80 8 $10

Receive 4 Products at $16 +4*$16 $144 12 $12

Deliver 10 Products -10*$12 $24 2 $12

At the beginning, the Avg Cost is set to 0 set as there is no product in the inventory. When the
first reception is made, the average cost becomes logically the purchase price.
At the second reception, the average cost is updated because the total inventory value is now $80
+ 4*$16 = $144. As we have 12 units on hand, the average price per unit is $144 / 12 = $12.

By definition, the delivery of 10 products does not change the average cost. Indeed, the inventory
value is now $24 as we have only 2 units remaining of each $24 / 2 = $12.

Purchase return use case


In case of a product returned to its supplier after reception, the inventory value is reduced using
the average cost formulae (not at the initial price of these products!).
Which means that the above table will be updated as follow:
Delta Inventory Qty On Avg
Operation Value Value Hand Cost

$24 2 $12

Return of 1 Product initially bought at -1*$12 $12 1 $12


$10

Explanation: counter example


Remember the definition of Average Cost, saying that we do not update the average cost of a
product leaving the inventory. If you break this rule, you may lead to inconsistencies in your
inventory.
As an example, here is the scenario when you deliver one piece to the customer and return the
other one to your supplier (at the cost you purchased it). Here is the operation:

Delta Inventory Qty On Avg


Operation Value Value Hand Cost

$24 2 $12

Customer Shipping 1 product -1*$12 $12 1 $12

Return of 1 Product initially bought at -1*$10 $2 0 $12


$10

As you can see in this example, this is not correct: an inventory valuation of $2 for 0 pieces in
the warehouse.
The correct scenario should be to return the goods at the current average cost:

Delta Inventory Qty On Avg


Operation Value Value Hand Cost

$24 2 $12

Customer Shipping 1 product -1*$12 $12 1 $12


Delta Inventory Qty On Avg
Operation Value Value Hand Cost

Return of 1 Product initially bought at -1*$12 $0 0 $12


$10

On the other hand, using the average cost to value the return ensure a correct inventory value at
all times.

Further thoughts on anglo saxon mode


For people in using the anglo saxon accounting principles, there is another concept to take into
account: the stock input account of the product, which is intended to hold at any time the value
of vendor bills to receive. So the stock input account will increase on reception of incoming
shipments and will decrease when receiving the related vendor bills.
Back to our example, we see that when the return is valued at the average price, the amount
booked in the stock input account is the original purchase price:

stock price Inventory Qty On Avg


Operation input diff Value Hand Cost

$0 0 $0

Receive 8 Products at $10 ($80) $80 8 $10

Receive vendor bill $80 $0 $80 8 $10

Receive 4 Products at $16 ($64) $144 12 $12

Receive vendor bill $64 $0 $144 12 $12

Deliver 10 Products $0 $24 2 $12


stock price Inventory Qty On Avg
Operation input diff Value Hand Cost

Return of 1 Product initially bought $10 $2 $12 1 $12


at $10

Receive vendor refund $10 $0 $2 $12 1 $12

This is because the vendor refund will be made using the original purchase price, so to zero out
the effect of the return in the stock input in last operation, we need to reuse the original price.
The price difference account located on the product category is used to book the difference
between the average cost and the original purchase price.


 Note
 You are not forced to start from the vendor bill, you can also go in Inventory ‣ Operations ‣ Landed
Costs and directly create the landed cost from there.

Shipping
 Shipping Setup
How to setup a delivery method?

Overview
Odoo can handle various delivery methods, but it is not activated by default. Delivery methods
can be used for your sale orders, your deliveries but also on your e-commerce.
Delivery methods allow you to manage the transport company, the price and the destination. You
can even integrate Odoo with external shippers to compute the real price and the packagings.

Configuration

Install the inventory module


Delivery methods are handled by the Delivery costs module. Go to Apps and search for the
module. You should remove the Apps filter in order to see it :

Note
If you want to integrate delivery methods in your e-commerce, you’ll have to install the eCommerce
Delivery module.

Configure the delivery method


To configure your delivery methods, go to the Inventory module, click on Configuration ‣
Delivery Methods.
First set a name and a transporter company.

Then you’ll have to set the pricing. It can be fixed or based on rules.
 If the price is fixed, tick Fixed price. You’ll just have to define the price. If you want the
delivery to be free above a certain amount, tick the option Free if Order total is more
than and set a price.

 If the price varies according to rules, tick Based on Rules. Click on add an item to a
pricing rule. Choose a condition based on either the weight, the volume, the price or the
quantity.

Finally you can limit the delivery method to a few destinations. The limit can be applied to some
countries, states or even zip codes. This feature limits the list of countries on your e-commerce.

Note
You can integrate Odoo with external shippers in order to compute the real price and packagings, and handle
the printing the shipping labels. See How to integrate a third party shipper?

Delivery process
Sale order

You can now choose the Delivery Method on your sale order. If you want to invoice the price of
the delivery charge on the sale order, click on Set price, it will add a line with the name of the
delivery method as a product.

Delivery
You can add or change the delivery method on the delivery itself.

On the delivery, check the Carrier Information. The carrier is the chosen delivery method.
See also

 How to integrate a third party shipper?


 How to invoice the shipping cost to the customer?

 How to integrate a third party shipper?

Overview
Odoo can handle various delivery methods, including third party shippers. Odoo can be linked
with the transportation company tracking system. It will allow you to manage the transport
company, the real prices and the destination.
Configuration

Install the shipper company connector module


In the inventory module, click on Configuration ‣ Settings. Under Shipping Connectors, flag
the transportation companies you want to integrate :

Then click on Apply.


Note
If you want to integrate delivery methods in your e-commerce, you’ll have to install the eCommerce
Delivery module.

Configure the delivery method


To configure your delivery methods, go to the Inventory module, click on Configuration ‣
Delivery Methods.
The delivery methods for the chosen shippers have been automatically created. Most of the time,
there will be 2 delivery methods for the same provider: one for international shipping and the
other for domestic shipping.
You can create other methods with the same provider with other configuration, for example
the Packaging Type.
You can change the Name of the delivery method. This is the name that will appear on your
ecommerce.
Flag Shipping enabled when you are ready to use it.
In the pricing tab, the name of the provider chosen under the Price computation means that the
pricing will be computed by the shipper system.
The configuration of the shipper is split into two columns:

 The first one is linked to your account (developer key, password,…). For more
information, please refer to the provider website.
 The second column varies according to the provider. You can choose the packaging
type, the service type, the weight unit…
 Uncheck Test Mode when you are done with the testings.
Finally you can limit the delivery method to a few destinations. You can limit it to some
countries, states or even zip codes. This feature limits the list of countries on your e-commerce.
It is useful for the domestic providers. For example, USPS US only delivers from the United
States to the United States.

Company configuration
In order to compute the right price, the provider needs your company information. Be sure your
address and phone number are correctly encoded.
To check your information, go to the Settings application and click on General Settings. Click
on the first link Configure your company data.

Product configuration
The shipper companies need the weight of your product, otherwise the price computation cannot
be done.
Go the menu Sales ‣ Sales ‣ Products. Open the products you want to ship and set a weight on it.

Tip
The weight on the product form is expressed in kilograms. Don’t forget to make the conversion if you are used
to the imperial measurement system.

Sale process
Sale order

You can now choose the carrier on your sale order. Click on Delivery method to choose the
right one.
The price is computed when you save the sale order or when you click on Set price.
If you want to invoice the price of the delivery charge on the sale order, click on Set price, it will
add a line with the name of the delivery method as a product. It may vary from the real price.
Otherwise, the real price (computed when the delivery is validated) will automatically be added
to the invoice. For more information, please read the document How to invoice the shipping cost
to the customer?

Delivery
The delivery created from the sale order will take the shipping information from it. You can
change the carrier if you want to.
If you create a delivery transfer from the inventory module, you can add the third party shipper
in the additional info tab.
The weight is computed based on the products weights. The shipping cost will be computed once
the transfer is validated.
Click on Validate to receive the tracking number. The Carrier Tracking ref field will
automatically be filled. Click on the Tracking button to check your delivery on the provider
website.

The label to stick on your package is available in the history underneath :

See also

 How to invoice the shipping cost to the customer?


 How to print shipping labels?

 How to get UPS credentials for integration with Odoo?


In order to use the Odoo UPS API, you will need:

 A UPS.com user ID and password


 A UPS account number
 An Access Key
An Access Key is a 16 character alpha-numeric code that allows access to the UPS Developer
Kit API Development and Production servers.
Create a UPS Account
Note that only customers located in the US can open a UPS account online. If you are located
outside the US, you will need to contact UPS Customer Service in order to to open an account.
You can read additional information about opening a UPS account on the their website, on the
page, How to Open a UPS Account Online
If you don’t already have a UPS account, you can create one along with your online profile by
following these steps:
1. Access the UPS.com web site at www.ups.com, and click the New User link at the top of the
page.
2. Click the Register for MyUPS button, and follow the prompts to complete the registration
process.
If you already have a UPS account, you can add it to your online profile as follows:

1. Log in to the UPS.com website) using your UPS.com User ID and Password.
2. Click the My UPS tab.
3. Click the Account Summary link.
4. Click the Add an Existing UPS Account link in the UPS Account Details section of the
page.
5. In the Add New Account screen, enter the UPS Account Number, Account Name,
and Postal Code fields. The country defaults to United States.q

1. Click the Next button to continue.

Get an Access Key


After you have added your UPS account number to your user profile you can request an Access
Key from UPS using the steps below:

1. Go to the UPS Developer Kit web page


2. Log into UPS.com with your user ID and password
3. Click on the link Request an access key.
4. Verify your contact information
5. Click the Request Access Key button.
The Access Key will be provided to you on the web page, and an email with the Access Key will
be sent to the email address of the primary contact.

In order to use the Odoo DHL API, you will need:

 A DHL.com SiteID
 A DHL Password
 A DHL Account Number

Getting SiteID and password for countries


other than United States (UK and Rest of the
world)
You should contact DHL account manager and request integration for XML Express API. The
presales should provide you live credentials.

Getting SiteID and Password for United States


You need to write to xmlrequests@dhl.com along with your full Account details like account
number, region, address, etc. to get API Access.

Shipping Operations
 How to invoice the shipping cost to the customer?

Overview
There are two ways to invoice the shipping costs:

1. Agree with the customer over a cost and seal it down in the sale order
2. Invoice the real cost of the shipping.

Configuration
To configure the price of your delivery methods, go to the Inventory app, click on Configuration
‣ Delivery ‣ Delivery Methods.
You can manually set a price for the shipping: It can be fixed or based on rules.
Or you can use the transportation company computation system. Read the document How to
integrate a third party shipper?

How to invoice the shipping costs to the


customer?

Invoice the price set on the sale order


On your sale order, choose the carrier that will be used. Click on Delivery Method to choose the
right one.

The price is computed when you save the sale order or when you click on Set price.
To invoice the price of the delivery charge on the sale order, click on Set price, it will add a line
with the name of the delivery method as a product. It may vary from the real price.
When you create the invoice, it will take the price set on the sale order.
Invoice the real shipping costs
On your sale order, choose the carrier that will be used. Click on Delivery Method to choose the
right one.

The price is computed when you save the sale order. Confirm the sale order and proceed to
deliver the product.
The real shipping cost is computed when the delivery order is validated, you can see the real cost
in the chatter of the delivery order.
Go back to the sale order, the real cost is now added to the sale order.

When you create the invoice, it will take the price computed by the carrier.

Note
If you split the delivery and make several ones, each delivery order will add a line to the sale order.
See also
 How to integrate a third party shipper?
 How to print shipping labels?

 How to manage multiple packs for the same delivery order?

Overview
By default, Odoo considers that your delivery is composed of one package. But you can easily
ship your deliveries with more than one package. It is fully integrated with the third-party
shippers.

Configuration
To configure the use of packages, go to the menu Inventory ‣ Configuration ‣ Settings. Locate
the Packages section and tick Record packages used on packing: pallets, boxes,…

Click on Apply when you are done.

Sale process

Sale order
Click on a Delivery Method to choose the right one.
The price is computed when you save the sale order or when you click on Set price.

Multi-packages Delivery
The delivery created from the sale order will take the shipping information from it.

From here, you can split your delivery into multiple packages.
Choose the quantity you want to put in the first pack in the Done column, then click on the
link Put in Pack.

It will automatically create a pack with the requested quantity.


Do the same steps for the other pieces you want to pack in.

Click on Validate when you are done.


Multi-packages with a 3rd party-shipper
Once the delivery order is validated, you will receive the tracking number. The carrier
Tracking ref field will automatically be filled. Click on the Tracking button to check your
delivery on the provider website.

The labels to stick on your packages are available in the history underneath:

See also

 How to invoice the shipping cost to the customer?


 How to print shipping labels?

 How to print shipping labels?


Overview
Odoo can handle various delivery methods, including third party shippers linked with the
transportation company tracking system. It allows you to manage the transport company, the real
prices and the destination. And finally, you will be able to print the shipping labels directly from
Odoo.

Configuration

Install the shipper company connector module


In the Inventory module, click on Configuration ‣ Settings. Under Shipping Connectors, flag
the transportation companies you want to integrate :

Then click on Apply.

Configure the delivery method


To configure your delivery methods, go to the Inventory module, click on Configuration ‣
Delivery Methods.
The delivery methods for the chosen shippers have been automatically created.
In the Pricing tab, the name of the provider means that the delivery will be handled and
computed by the shipper system.
The configuration of the shipper is split into two columns :

 The first one is linked to your account (develop key, password,…). For more
information, please refer to the provider website.
 The second column varies according to the provider. You can choose the packaging
type, the service type, the weight unit…
 Uncheck Test Mode when you are done with the testings.

Company configuration
In order to compute the right price, the provider needs your company information. Be sure your
address and phone number are correctly encoded.

To check your information, go to the Settings application and click on General Settings. Click
on the first link Configure your company data.
Product configuration
The shipper companies need the weight of your product, otherwise the price computation cannot
be done.
Go the Sales module, click on Sales ‣ Products. Open the products you want to ship and set a
weight on it.

Tip
The weight on the product form is expressed in kilograms. Don’t forget to do the conversion if you are used to
the imperial measurement system.

How to print shipping labels ?


The delivery order created from the sale order will take the shipping information from it, but you
can change the carrier if you want to.
If you create a delivery transfer from the inventory module, you can add the third party shipper
in the additional info tab.
Click on Validate to receive the tracking number and the label(s).
The label to stick on your package is available in the history underneath :

Click on it to open the document and print it :

Note
If you are doing multi-packages shippings, most of the time, there will be one label per package. Each label
will appear in the delivery history.
See also

 How to invoice the shipping cost to the customer?


 How to manage multiple packs for the same delivery order?
 How to cancel a shipping request to a shipper?

Overview
Odoo can handle various delivery methods, including third party shippers. Odoo will be linked
with the transportation company tracking system.
It will allow you to manage the transport company, the real prices and the destination.
You can easily cancel the request made to the carrier system.

How to cancel a shipping request?


 If the delivery order is not Validated, then the request hasn’t been made. You can choose
to cancel the delivery or to change the carrier.
 If you have clicked on Validate, the request has been made and you should have received
the tracking number and the label. You can still cancel the request. Simply click on
the Cancel button next to the Carrier Tracking Ref:

You will now see that the shipment has been cancelled.
You can now change the carrier if you wish.

How to send a shipping request after


cancelling one?
After cancelling the shipping request, you can change the carrier you want to use. Confirm it by
clicking on the Send to shipper button. You will get a new tracking number and a new label.
See also

 How to invoice the shipping cost to the customer?


 How to manage multiple packs for the same delivery order?

Advanced Routes
 Concepts
o Using Routes and Pull/Push Rules
In inventory management, the supply chain strategy determines when products should be
fabricated, delivered to distribution centers, and made available in the retail channel.
This kind of strategic process can be configured using Routes, featuring Pull and Push Rules.
Once everything is properly configured, the inventory app can automatically generate transfers
following the instructions given by the rules. Yes, Odoo simplifies your life.

Inside the warehouse


Let’s imagine a generic warehouse plan, where you can find receiving docks, a quality control
area, storage locations, picking and packing areas, and shipping docks. All products go through
all these locations, which also trigger all the route’s rules.

In this example, vendor trucks unload pallets of ordered goods at receiving docks. Operators then
scan the products in the receiving area. Some of these products are sent to a quality control area
(those devoted to being used during the manufacturing process, for example), while others are
directly stored in their respective locations.
Here is an example of a fulfillment route. In the morning, items are picked for all the orders that
need to be prepared during the day. These items are picked from storage locations and moved to
the picking area, close to where the orders are packed. Then, the orders are packed in their
respective boxes and conveyors bring them close to the shipping docks, ready to be delivered to
customers.

How does it work?

Pull Rules
With Pull Rules, a demand for some products triggers procurements, while Push Rules are
triggered by products arriving in a specific location.
We can say that Pull Rules are used to fulfill a customer order, a sale order. So, Odoo generates a
need at the Customer Location for each product in the order. Because Pull Rules are triggered by
a need, Odoo looks for a Pull Rule defined on the Customer Location. In our case, a delivery
order pull rule that transfers products from the Shipping Area to the Customer Location is found,
and a transfer between the two locations is created.
Then, Odoo finds another pull rule that tries to fulfill the need for the Shipping Area: the Packing
Rule that transfers products from the Packing Area to the Shipping Area. And, finally, other rules
are triggered until a transfer between the Stock and the Picking Area is created.
Note
All theses transfers are pre-generated by Odoo, starting from the end and going backwards. While working, the
operator process these transfers in the opposite order: first the picking, then the packing, then the delivery
order.

Push Rules
On the other hand, Push Rules are much easier to understand. Instead of pre-generating
documents based on needs, they are live-triggered when products arrive in a specific
location. Push Rules basically say: “when a product arrives at a specific location, move it to
another location.”
A simple example would be: when a product arrives in the Receipt Area, move them to
the Storage Location. As different rules can be applied to different products, you can assign
different storage locations for different products.
Another rule could be: when products arrive at a location, move them to the Quality Control
Area. Then, once the quality check is done, move them to their Storage Location.
Note
Push Rules can be triggered only if no Pull Rule pre-generated the upstream transfers.
Important
Sets of rules like those are called routes. The grouping on the rule defines how products are grouped in the
same transfer or not. For example, during the picking operation, all orders are grouped in one transfer, whereas
the packing operation respects the grouping per customer order.

Use Routes and Rules


Since Routes are a collection of Push and Pull Rules, Odoo helps you manage advanced routes
configuration such as:

 Manage product manufacturing chains;


 Manage default locations per product;
 Define routes within your warehouse according to business needs, such as quality control,
after-sales services, or supplier returns;
 Help rental management by generating automated return moves for rented products.
To configure a route such as one of those above, open the Inventory Application and go
to Configuration ‣ Settings. Then, enable the Multi-Step Routes feature.
Note
The Storage Locations feature is automatically activated with the Multi-Step Routes.
Once this first step is completed, you have the choice between pre-configured routes or custom
ones. Both are explained below.

Pre-configured Routes
Odoo’s pre-configured routes are available in the warehouses’ menu. To find it, go to Inventory ‣
Configuration ‣ Warehouses. There, open your warehouse and edit it to see the pre-configured
routes for incoming and outgoing shipments.

Some more advanced routes, such as pick-pack-ship, are already configured to make your life
easier. Those are based on your choice for shipments. Once you made your choice, head
to Inventory ‣ Configuration ‣ Routes to see the routes Odoo generated for you.
Opening one of those routes allows you to see on what you can apply the route. Here, all the
selected product categories in the YourCompany warehouse are set up to follow the 3-steps route.

Easier for many businesses, this process might not fit yours. Thus, you can configure custom
routes in which you can define your own rules, but also the source and destination location of
each action. As an example, here are the rules for the pre-configured route.
Custom Routes
To create a custom route, go to Inventory ‣ Configuration ‣ Routes, click on create, and choose
the places where this route can be selected. Of course, combinations are available.

Each place has a different behavior, so it is important to tick only the useful ones and adapt each
route accordingly.
When applying the route on a product category (Inventory ‣ Configuration ‣ Product Categories),
all the rules configured in the route are applied to every product of the category. For example,
this can be useful if you use the dropshipping process for all the products from the same
category.

The same behavior applies to the warehouses. If you tick Warehouses, all the transfers occurring
inside the chosen warehouse, and meeting the conditions of the linked rules, then follow that
route.
For the Sales Order Lines, it is more or less the opposite. You have to choose the route yourself
when creating a quotation. This is pretty useful if some products go through different routes.

If you work with this kind of route, it is important to keep in mind that it must be selected on the
sales order, such as below.

Then, the route can be chosen on each line of the document.

Finally, there are routes that can be applied to products. Those work more or less like the product
categories: once selected, you have to manually set on which product it must be applied.
To do so, go to Inventory ‣ Master Data ‣ Products and open the one on which you want to apply
the route. Then go to the Inventory tab and select the route you’ve created.

If, prima facie, the routes’ configuration can appear quite easy, don’t forget that we haven’t set
up any rule yet. If not harder to set up, those are vital to have working routings.

Rules
The rules are to be defined on the routes. To do so, go to Inventory ‣ Configuration ‣ Routes,
then to the Rules section, and click on Add a line button.

The available rules trigger various actions. If Odoo offers Push and Pull rules, others are also
available. Here are some explanations for all of them:

 Pull From: this rule is triggered by a need for the product in a specific stock location.
The need can come from a sale order which has been validated or for a manufacturing
order which requires a specific component. When the need appears in the source location,
Odoo generates a picking to fulfill this need.
 Push To: this rule is triggered by the arrival of some products in the defined source
location. In case you move products to the source location, Odoo generates a picking to
move those products to the destination location.
 Push & Pull: it allows to generate pickings in the two different situations explained
above. It means that when products are required at a specific location, a transfer is
created from the previous location to fulfill that need. Then, a need is created in the
previous location and a rule is triggered to fulfill it. Once the second need fulfilled, the
products are pushed to the first location and all the needs are fulfilled.
 Buy: when products are needed at the destination location, a request for quotation is
created to fulfill the need.
 Manufacture: when products are needed in the source location, a manufacturing order is
created to fulfill the need.

You must also define the Operation Type. This operation allows defining which kind of picking
is created from the rule. With our above screenshot, the created picking is, for example, an
internal transfer.
On the other hand, the Supply Method, allows defining what happens at the source location:

 Take From Stock: the products are taken from the available stock of the source location;
 Trigger Another Rule: the system tries to find a stock rule to bring the products to the
source location. The available stock is ignored.
 Take From Stock, if Unavailable, Trigger Another Rule: the products are taken from
the available stock of the source location. If there is no stock available, the system tries to
find a rule to bring the products to the source location.
In the Scheduling section, you can determine how Odoo behaves when one of the chain’s
pickings is rescheduled. In case you decide to Propagate Rescheduling, the next move is also to
be rescheduled. If you prefer having the choice to reschedule the next move, you can decide to
receive an alert in the form of a next activity.
What about a full flow?
Do you remember our Pick - Pack - Ship custom route? Let’s use it to try a full flow with an
advanced custom route.
First, a quick look at our rules and their supply methods: we have three rules, all Pull
From rules. The supply methods are the following:

 Take From Stock: When products are needed in WH/Packing Zone, Picks (internal
transfers from WH/Stock to WH/Packing Zone) are created from WH/Stock to fulfill the
need.
 Trigger Another Rule: When products are needed in WH/Output, Packs (internal
transfers from WH/Packing Zone to WH/Output) are created from WH/Packing Zone to
fulfill the need.
 Trigger Another Rule: When products are needed in Partner Locations/Customers,
Delivery Orders are created from WH/Output to fulfill the need.

This means that, when a customer orders products, a delivery order is created to fulfill the order.

Note
If the source document is the same sale order, the status is not the same. In fact, the status is Waiting Another
Operation if the previous transfer in the list is not done yet.
To prepare the order, conveyors need products packed at the output area, so an internal transfer is
requested from the packing zone.

Obviously, the packing zone needs products ready to be packed. So, an internal transfer is
requested to the stock and employees can gather the required products from the warehouse.

As explained in this documentation introduction, the last step in the process (here the delivery
order) is the first to be triggered, which then triggers other rules until we reach the first step in
the process (here, the internal transfer from to stock to the packing area). Now, everything is
ready to be processed so the customer can get the ordered items.
In our case, the product is delivered to the customer when all the rules have been triggered and
the transfers done.
 How to do inter-warehouses transfers?
If you own different warehouses you might want to transfer goods from one warehouse to the
other. This is very easy thanks to the inventory application in Odoo.

Configuration
First of all you have to select the multi locations option. Go to Configuration ‣ Settings in
the Inventory application. Then tick the Manage several locations per warehouse option.
Please don’t forget to apply your changes.
Tip
This option should also be ticked if you wish to manage different locations and routes in your warehouse.

Creating a new warehouse


The next step is to create your new warehouse. In the Inventory application click
on Configuration ‣ Warehouse Management ‣ Warehouses. You are now able to create your
warehouse by clicking on Create.
Fill in a Warehouse Name and a Short Name. The short name is 5 characters maximum.
Tip
Please note that the Short Name is very important as it will appear on your transfer orders and other
warehouse documents. It might be smart to use an understandable one (e.g.: WH/[first letters of location]).
If you go back to your dashboard, new operations will automatically have been generated for
your new warehouse.

Creating a new inventory


If you create a new warehouse you might already have an existing physical inventory in it. In
that case you should create an inventory in Odoo, if not you can skip this step.
Go into the inventory application, select Inventory Control ‣ Inventory Adjustment. You can then
create a new inventory by clicking on Create. Fill in the Inventory Reference, Date and be sure
to select the right warehouse and location.

Next, click on Start Inventory. A new window will open where you will be able to input your
existing products. Select add an item and indicate the Real Quantity available in the warehouse.
The theoretical quantity can not be changed as it represents a computed quantity from purchase
and sales orders.

Don’t forget to validate your inventory once you have recorder the state of all yours product.

Create an internal transfer


The final step is to create your internal transfer. If you want to tranfer 2 units of a product from
your first warehouse to another one in Brussels, proceed as follows:
From your dashboard, select a internal movement of one of the two warehouses. To do so, click
on More ‣ Transfer.

A new window will open where you will be able to select the source location zone (in this case
our “old warehouse”) and the destination location zone (in this case our “new” warehouse
located in Brussels).
Add the products you want to transfer by clicking on Add an Item and don’t forget
to Validate or Mark as TODO once you are done.
If you select Validate, Odoo will process all quantities to transfer.
If you select Mark as TODO, Odoo will put the transfer in Waiting Availability status. Click
on Reserve to reserve the amount of products in your source warehouse.
It is also possible to manually transfer each product:

1. Via your dashboard, select the transfer order in the source location.

2. Select the right transfer order

3. Click on the little pencil logo in the lower right corner in order to open the operation details
window. In this new window you can manually indicate how much products you process
Tip
If you decide to partially process the transfer order (e.g. a part of the products can’t be shipped yet due to an
unexpected event), Odoo will automatically ask if you wish to create a backorder. Create a backorder if you
expect to process the remaining products later, do not create a backorder if you will not supply/receive the
remaining products.

 Organize a cross-dock in a warehouse


 Cross-docking is the process of sending products that are received directly to the
customers, without making them enter the stock. The trucks are simply unloaded in
a Cross-Dock area in order to reorganize products and load another truck.


 Note
 For more information on how to organize your warehouse, read our blog: What is cross-docking and
is it for me?

 Configuration
 In the Inventory app, open Configuration ‣ Settings and activate the Multi-Step Routes.


 Note
 Doing so will also enable the Storage Locations feature.
 Now, both Incoming and Outgoing shipments should be configured to work with 2 steps.
To adapt the configuration, go to Inventory ‣ Configuration ‣ Warehouses and edit your
warehouse.


 This modification will lead to the creation of a Cross-Docking route that can be found
in Inventory ‣ Configuration ‣ Routes.

 Configure products with Cross-Dock Route


 Create the product that uses the Cross-Dock Route and then, in the inventory tab, select
the routes Buy and Cross-Dock. Now, in the purchase tab, specify the vendor to who you
buy the product and set a price for it.

 Once done, create a sale order for the product and confirm it. Odoo will automatically
create two transfers which will be linked to the sale order. The first one is the transfer
from the Input Location to the Output Location, corresponding to the move of the product
in the Cross-Dock area. The second one is the delivery order from the Output Location to
your Customer Location. Both are in state *Waiting Another Operation because we still
need to order the product to our supplier.

 Now, go to the Purchase app. There, you will find the purchase order that has been
automatically triggered by the system. Validate it and receive the products in the Input
Location.

 When the products have been received from the supplier, you can go back to your initial
sale order and validate the internal transfer from Input to Output.

 The delivery order is now ready to be processed and can be validated too.

 Taking stock from different warehouses


 When you plan to deliver a customer, you don’t know in advance if the products will
come from Warehouse A or Warehouse B. You may, in some cases, need to take stock
from different warehouses. With Odoo, you can configure this by using the concept of
virtual warehouses. Let us show you how to set those virtual warehouses.

 Set up virtual warehouses


 Let’s say you have two warehouses: Warehouse A and Warehouse B. Create a new
warehouse, that will be a virtual one. It will allow you to take the stock from A or B. To
do so, go to your inventory app settings and enable the multi-warehouses feature. Then,
go to the warehouses menu and click on create.


 Note
 The Storage Location feature will be automatically enabled. Good news, because you will need it later
in the process.
 Now, you have to make sure that the main stock locations of warehouse A and warehouse
B are children locations of the main stock location of warehouse A + B. Go to the
locations menu, and edit the main location of your two warehouses. Then, change their
parent location to main location of warehouse A+B.

 Sell a product from the virtual warehouse


 Let’s say you have two products, one stored in warehouse A and one stored in warehouse
B. Now, you can create a new quotation for one of each product. Go to other information
and choose Warehouse A+B in the shipping information.


 Once you have done it, you can convert it to a sales order. Then, a delivery order will be
automatically generated, with a product reserved in warehouse A and one in warehouse
B.

Putaway & Removal Strategies
 What is a Putaway Rule?
 A good warehouse implementation takes care that products automatically move to their
appropriate destination location. To make that process easier, Odoo uses Putaway rules.
But what is a putaway rule? Putaway is the process of taking products off the receiving
shipments and directly putting them into the most appropriate location.
 If, for example, a warehouse contains volatile substances, it is important to make sure
that certain products are not stored close to each other because of a potential chemical
reaction. That’s where putaway rules intervene, to avoid storing products wrongly.

 Configuration
 In the Inventory app, go to Configuration ‣ Settings and activate the Multi-Step Routes.
By doing so, the Storage Locations will be automatically activated.

 Setting up a Putaway Rule


 In some cases, like for a retail shop storing vegetables and fruits, we have to store
products in different locations to maintain product quality.
 Let’s suppose there are one warehouse location WH/Stock and two sub-
locations WH/Stock/Vegatable and WH/Stock/Fruits.
 To manage those locations, we will create putaway rules. To do so, open
the Inventory app and go to Configuration ‣ Putaway Rules. Then, click on create and
configure your first rule indicating the main location the product will enter before being
redirected to the right location.
 Note
 The putaway rules can be defined either per product or per product category.


 Now, if I purchase apples and carrots to my supplier, they will be grouped in the same
receipt but redirected to the right location automatically, thanks to putaway rules. This
information is available from Inventory Report, under the reporting menu.
 What is a Removal Strategy (FIFO, LIFO, and FEFO)?
 Usually, Removal Strategies are defined in picking operations to select the best products
to optimize the distance for the worker, for quality control purposes, or to first move the
products with the closest expiration date.
 When a product movement needs to be done, Odoo finds available products that can be
assigned to the transfer. The way Odoo assigns these products depends on the Removal
Strategy defined in the Product Category or on the Location.

 What happens inside the warehouse?


 Imagine a generic warehouse plan, with receiving docks and area, storage locations,
picking and packing areas, and shipping docks. All products go through all these
locations, but some rules, such as removal strategies, can have an effect on which
products are taken for the pickings.


 Here, vendor trucks unload pallets of goods at the docks. Then, operators scan the
products in the receiving area, with the receiving date and, if the product has an
expiration date, the expiration date. After that, products are stored in their respective
locations.

 Next, several orders for the same product are made, but you didn’t receive the goods the
same day and they don’t have the same expiration date. In that situation, you logically
prefer sending those with the closest date first. Depending on the removal strategy you
chose, Odoo generates a transfer with the products fitting your settings the best.


 Note
 On the transfer form, you can find the product’s lot/serial number to pick for delivery.
 How does it work?

 First In, First Out (FIFO)


 When using a First In, First Out strategy, a demand for some products triggers a
removal rule which requests a transfer for the lot/serial number that has entered your
stock the first.
 To be clearer, let’s imagine that you have three lots of nails in your warehouse. Those
three have the following lot numbers: 00001, 00002, 00003, each with 5 nails boxes in it.
00001 entered the stock on the 23rd of May, 00002 on the 25th of May, and 00003 on the
1st of June. A customer orders you 6 boxes on the 11th of June. With the FIFO strategy
selected, a transfer is requested for the five boxes of 00001 and one of the boxes in 00002
because 00001 has entered your stock before the others. The box from 00002 is taken
because it has the oldest enter date after 00001.
 So, for every order of a product with the FIFO strategy selected, Odoo requests a transfer
for the good that has been in your stock for the longest period.

 Last In, First Out (LIFO)


 The same way as for FIFO, the Last In, First Out strategy is based on moving products
based on the date they entered the stock. Here, a demand for some products triggers a
removal rule that requests a transfer for the lot/serial number that has entered your stock
the last.
 To better understand, let’s imagine three lots of screws in your warehouse. Those three
have the following numbers: 10001, 10002, 10003, each with 10 screw boxes in it. 10001
has entered the stock on the 1st of June, 10002 on the 3rd of June, and 10003 on the 6th
of June. A customer orders 7 boxes on the 8th of June. With the LIFO strategy selected, a
transfer is requested for seven boxes of 10003 because that lot is the last one to have
entered the stock.
 So, basically, for every order of a product with the LIFO strategy used, a transfer for the
last one to have entered the stock is requested.
 Note
 This strategy is banned in many countries and can lead to only have old or obsolete products in your
stock.
 First Expire, First Out (FEFO)
 The First Expire, First Out strategy is a bit different from the two others. Here, it is the
expiration date that is important and not the date the product entered the stock.
 Let’s imagine three lots of 6-eggs boxes (in this specific case, don’t forget to use units of
measure). Those three have the following numbers: 20001, 20002, and 20003, each with
5 boxes in it. 20001 has entered the stock on the 1st of July and expires on the 15th of
July, 20002 on the 2nd and expires on the 14th of July, and 20003 on the 4th and expires
on the 21st of July. A customer orders 6 boxes on the 5th of July. With
the FEFO strategy selected, a transfer is requested for the five boxes of 20002 and one
from 20001. The transfer for all the boxes of the lot 20002 is because they have the
closest expiration date. The transfer also requests one box from 20001 because it’s the lot
that expires the sooner after 20002.
 Then, you can remember that for every order of a product with the FEFO strategy, a
transfer is requested for the product that has the nearest expiration date from the order
date.

 Use Removal Strategies


 To identify some units from other ones, you need to track them, either by lot or by serial
number. To do so, go to Configuration ‣ Settings. Then, activate Storage Location, Multi-
Steps Routes, and Lots & Serial Numbers.


 Note
 To work with the FEFO strategy, activate the Expiration Dates feature.
 Next, you need to define your removal strategy, on Product Categories via Inventory ‣
Configuration ‣ Product Categories.

 FIFO (First In, First Out)


 As said, a FIFO strategy implies that products stocked first move out first. Companies
should use that method if they are selling products with short demand cycles, such as
clothes, and to ensure they are not stuck with outdated styles in stock.
 For this example, we created three lots of white shirts. Those are from the All/Clothes
category, where we put FIFO as the removal strategy. In our stock location (WH/Stock),
we now find the three lots available.


 The lot 000001 contains 5 shirts, 000002 contains 3 shirts, and 000003 contains 2. As it
can be seen above, 000001 has entered the stock first. Let’s create a sale order of six
white shirts to check that products from that lot are the first ones to move out.
 On the delivery order linked to the picking, you can see that the oldest lot numbers have
been reserved thanks to the FIFO strategy.

 LIFO (Last In, First Out)


 With a LIFO strategy, that’s quite the opposite. In fact, the products that are brought the
last move out the first. It is mostly used in case of products without a shelf life.
 Even if our white shirts are clothes, we can say that they are timeless. So, let’s use them
to test our LIFO strategy. Once again, open the product category via Inventory ‣
Configuration ‣ Product Categories and change the removal strategy to LIFO.


 Now, create a sale order for 4 white shirts and check that the reserved products are from
lots 000003 and 000002.


 Important
 Don’t forget that the LIFO strategy is banned in many countries!

 FEFO (First Expiry, First Out)


 With the FEFO strategy, the way products are picked is not based on the reception date.
In this particular case, they are dispatched according to their expiration date.
 Note
 To have more information about Expiration date, please have a look at the related doc.
 By activating Expiration Dates, it becomes possible to define different dates on the
serial/lot numbers to be used in FEFO. These dates can be set by going to Inventory ‣
Master Data ‣ Lots/Serial Numbers.

 Lots are picked based on their removal date, from earliest to latest. Lots without a
removal date defined are picked after lots with removal dates.
 Note
 Other dates are for informational and reporting purposes only. If not removed from the stock, lots that
are past the expiration dates may still be picked for delivery orders!
 To use the FEFO strategy, once again go to Inventory ‣ Configuration ‣ Product
Categories and choose FEFO as the Force Removal Strategy.


 For this particular case, let’s use hand cream. As usual, we have three lots of them.

Lot / Serial No Product Expiration Date

0000001 Hand Cream 09/30/2019

0000002 Hand Cream 11/30/2019

0000003 Hand Cream 10/31/2019


When we realize a sale for 25 units of Hand Cream, we can see that the lot numbers
which have been automatically reserved by Odoo are the ones with the closest expiration
date, meaning 0000001 and 0000003.

Barcodes
 Setup
o Set up your barcode scanner
Getting started with barcode scanning in Odoo is fairly easy. Yet, a good user experience relies
on an appropriate hardware setup. This guide will help you through the task of choosing and
configuring the barcode scanner.

Find the barcode scanner that suits your needs


The 3 recommended type of barcode scanners to work with the Odoo Inventory and Barcode
Scanning apps are the USB scanner, the bluetooth scanner and the mobile computer scanner.
 If you scan products at a computer location, the USB scanner is the way to go. Simply
plug it in the computer to start scanning. Just make sure when you buy it that the scanner
is compatible with your keyboard layout or can be configured to be so.
 The bluetooth scanner can be paired with a smartphone or a tablet and is a good choice
if you want to be mobile but don’t need a big investment. An approach is to log in Odoo
on you smartphone, pair the bluetooth scanner with the smartphone and work in the
warehouse with the possibility to check your smartphone from time to time and use the
software ‘manually’.
 For heavy use, the mobile computer scanner is the handiest solution. It consists of a
small computer with a built-in barcode scanner. This one can turn out to be a very
productive solution, however you need to make sure that is is capable of running Odoo
smoothly. The most recent models using Android + Google Chrome or Windows +
Internet Explorer Mobile should do the job. However, due to the variety of models and
configurations on the market, it is essential to test it first.

Configure your barcode scanner


Keyboard layout

An USB barcode scanner needs to be configured to use the same keyboard layout as your
operating system. Otherwise, your scanner won’t translate characters correctly (replacing a ‘A’
with a ‘Q’ for example). Most scanners are configured by scanning the appropriate barcode in
the user manual.
Automatic carriage return
By default, Odoo has a 50 milliseconds delay between each successive scan (it helps avoid
accidental double scanning). If you want to suppress this delay, you can configure your scanner
to insert a carriage return at the end of each barcode. This is usually the default configuration and
can be explicitly configured by scanning a specific barcode in the user manual (‘CR suffix ON’,
‘Apply Enter for suffix’, etc.).

 Activate the Barcodes in Odoo


 The barcode scanning features can save you a lot of time usually lost switching between
the keyboard, the mouse and the scanner. Properly attributing barcodes to products,
pickings locations, etc. allows you to work more efficiently by controlling the software
almost exclusively with the barcode scanner.

 Configuration
 To use this feature, you first need to activate the Barcode functionality via Inventory ‣
Settings ‣ Barcode Scanner. Once you have ticked the feature, you can hit save.

 Set Product Barcodes


 You can easily assign barcodes to your different products via the Inventory app. To do so,
go to Settings ‣ Configure Products Barcodes.


 Then, you have the possibility to assign barcodes to your products directly at creation on
the product form.

 Note
 Be careful to add barcodes directly on the product variants and not on the template product.
Otherwise, you won’t be able to differentiate them.

 Set Locations Barcodes


 If you manage multiple locations, you will find useful to attribute a barcode to each
location and stick it on the location. You can configure the locations barcodes
in Inventory ‣ Configuration ‣ Locations.


 Note
 You can easily print the barcode you allocate to the locations via the Print menu.

 Barcode Formats
 Most retail products use EAN-13 barcodes. They cannot be made up without proper
authorization. You must pay the International Article Numbering Association a fee in
exchange for an EAN code sequence.
 Still, as Odoo supports any string as a barcode, you can always define your own barcode
format for internal use.

Daily Operations
 Process to an Inventory Adjustment with Barcodes
 To process an inventory adjustment by using barcodes, you first need to open
the Barcode app. Then, from the application, click on Inventory Adjustments.

 Note
 If you want to fully work with barcodes, you can download the sheet Commands for
Inventory.
 Once you have clicked on Inventory Adjustments, Odoo will automatically create
one. Note that, if you work with multi-location, you first need to specify in which
location the inventory adjustment takes place.

 If you don’t work with multi-location, you will be able to scan the different
products you want to include in the inventory adjustment.


 Note
 If you have 5 identical articles, scan it 5 times or use the keyboard to set the quantity.
 Besides using the barcode scanner, you can also manually add a product if
necessary. To do so, click on Add Product and fill the information in manually.

 When you have scanned all the items of the location, validate the inventory
manually or scan the Validate barcode.
 Process to Transfers

Simple Transfers
To process a transfer from the Barcode app, the first step is to go to Operations.
Then, you have the choice to either enter an existing transfer, by going to the corresponding
operation type and manually selecting the one you want to enter, or by scanning the barcode of
the transfer.

From there, you will be able to scan the products that are part of the existing transfer and/or add
new products to this transfer. Once all the products have been scanned, you can validate the
transfer to proceed with the stock moves.
Note
If you have different storage locations in your warehouse, you can add additional steps for the different
operation types.

Receipts
When receiving a product in stock, you need to scan its barcode in order to identify it in the
system. Once done, you can either make it enter the main location of the transfer, for example
WH/Stock, or scan a location barcode to make it enter a sub-location of the main location.

Note
If you want the product to enter WH/Stock in our example, you can simply scan the next product.

Delivery Orders
When delivering a product, you have to scan the source location if it is different than the one
initially set on the transfer. Then, you can start scanning the products that are delivered from this
specific location.

Once the different products have been scanned, you have the possibility to scan another location,
such as WH/Stock, and another page will be added to your delivery order. You can move from
one to the other thanks to the Previous and Next buttons.
Now, you can validate your transfer. To do so, click on Next until you reach the last page of the
transfer. There, you will be able to validate it.

Internal Transfers
When realizing an internal transfer with multi-location, you first have to scan the source location
of the product. Then, you can scan the product in itself, before having to scan the barcode of the
destination location.
If the source and destination of the internal transfers are already correct, you don’t need to scan
them.

Transfers with Tracked Products


If you work with products tracked by lot/serial numbers, you have two ways of working:

 If you work with serial/lot numbers taking all products into consideration, you can scan
the barcode of the lot/serial number and Odoo will increase the quantity of the product,
setting its lot/serial number.
 If you have the same lot/serial number for different products, you can work by scanning
the product barcode first, and then the barcode of the lot/serial number.

 Create a Transfer from Scratch


 To create a transfer from the Barcode application, you first need to print the
operation type barcodes. To do so, you can download the Stock barcode
sheet from the home page of the app.

 Once done, you can scan the one for which you want to create a new document.
Then, an empty document will be created and you will be able to scan your
products to populate it.
 Overview
There are different situations in which barcode nomenclatures can be useful. A well-known use
case is the one of a point of sale which sells products in bulk, in which the customers will scale
their products themselves and get the printed barcode to stick on the product. This barcode will
contain the weight of the product and help compute the price accordingly.

Create a Barcode Nomenclature


Odoo supports Barcode Nomenclatures, which determine the mapping and interpretation of the
encoded information. You can configure your barcode nomenclature being in Developer mode.
To do so, go to Inventory ‣ Configuration ‣ Barcode Nomenclature.
You can create a barcode nomenclature from there, and then add a line to create your first rule.

The first step is to specify the rule name, for example Weight Barcode with 3 Decimals. You
then have to specify the type for barcode nomenclature, in our case it will be Weighted Product.
The Barcode Pattern is a regular expression that defines the structure of the barcode. In this
example 21 defines the products on which the rule will be applied, those are the numbers by
which the product barcode should start. The 5 “dots” are the following numbers of the product
barcode and are there simply to identify the product in question. The “N” define a number and
the “D” define the decimals.
The encoding allows to specify the barcode encoding on which the rule should be applied.
Note
You can define different rules and order their priority thanks to the sequence. The first rule which matches the
scanned barcode will be applied.

Configure your Product


1. The barcode of the product should start by “21”;
2. The 5 “dots” are the other numbers of your product barcode, allowing to identify the
product;
3. The barcode should contain 0’s where you did defined D’s or N’s. In our case we need to
set 5 zeros because we configured “21…..{NNDDD}”;
4. In EAN-13, the last number is a check number, use an EAN13 generator to know which
digit it should be in your case.
In case you weight 1,5 Kg of pasta, the balance will print you the following barcode
2112345015002. If you scan this barcode in your POS or when receiving products in your
barcode application, Odoo will automatically create a new line for the Pasta product for a
quantity of 1.5 Kg. For the point of sale, a price depending on the quantity will also be
computed.

Rule Types
 Priced Product: allows you to identify the product and specify its price, used in POS.
 Discounted Product: allows you to create one barcode per applied discount. You can
then scan your product in the POS and then scan the discount barcode, discount will be
applied on the normal price of the product.
 Weighted Product: allows you to identify the product and specify its weight, used in
both POS (in which the price is computed based on the weight) and in inventory.
 Client: allows you to identify the customer, for example used with loyalty program.
 Cashier: allows you to identify the cashier when entering the POS.
 Location: allows you to identify the location on a transfer when multi-location is
activated.
 Package: allows you to identify packages on a transfer when packages are activated.
 Credit Card: doesn’t need manual modification, exists for data from the Mercury
module.
 Unit Product: allows you to identify a product for both POS and transfers.
Note
When the barcode pattern contains .*, it means that it can contain any number of characters, those characters
being any number.

You might also like