Website Builder

Create your stunning Website, that is Responsive & SEO friendly

Easy • No credit card required • Instant access


Goods Receipts

In Odoo, you have the choice between three ways to receive goods from suppliers.

The first method is to manually enter the information in the incoming shipment. To receive the products through this method, you have to go to Incoming Shipments section (Warehouse > Operations > All Operations > YourCompany: Receipts), click Create and then you enter the information about the receipt.

stock getting

Manual Data Entry for Product Receipt

The second method is to receive products from a generated incoming shipment. To achieve the reception using this method, you have to go to Incoming Shipments section. You will find the list of waiting incoming shipments.

The third method is to receive products by waiting products without looking at the shipment document.You can validate the reception by products in Warehouse > Operations > All Operations > YourCompany: Receipt. With this method, you will be able to receive one product, regardless of the document which is attached to this product.

Receipt of a Supplier Order by Purchase Order

If you use Purchase Orders in Odoo, product receipts are automatically generated by the system when the purchase order is confirmed. You do not have to enter any date, just confirm that the quantities ordered match the quantities received.

Incoming Shipments forms are automatically prepared by Odoo from the purchase management process. You will find a list of all the awaited receipts in the menu Warehouse > Operations > All Operations > YourCompany: Receipt. Use the order number or the supplier name to find the right goods receipt form for confirmation of a goods-in. This approach enables you to control quantities received by referring to the quantities ordered.

stock picking in tree

Incoming Shipments from Purchase management

You can also do goods-in data entry manually if there is no order, in Incoming Shipments menu by clicking the Create button.

A new goods-in data entry form opens. Enter the supplier in the Supplier field and type the reference number from your supplier in the field Source Document.

Now in Product tab, click on Add an item and select Product & quantity. In that form the source location is already completed by default because of your supplier selection. You should then give the destination location where you will place the products. For example, enter Stock. At this stage, you can set a Serial number for traceability (this function will be described later in this chapter, so leave this field empty for the moment).

Once the form has been completed, you can click on save button & close that wizard.

Now in Additional info tab, You can select the Delivery method either partial or All at once. Confirm this incoming shipment.

Next go to Incoming Products, in list view you will find your created incoming shipment, open that order, you can find buttons on that form, Process Partially and Process Entirely. (Process Partially button available only if you have select delivery method partially in Additional info tab of Incoming shipment)

If you click , the wizard open and seems like following figure, for example 18 quantity of Datacard product,

product to process

Confirm partial reception

After doing of partial process, another object will be generated with a back order reference equal to the Reference number of the incoming shipment already confirmed. Now you can find in list view of Incoming product seems like following figure.

partial shipment

Process a Partial Incoming Shipment

Once the rest of the order has arrived and has been processed, both orders will be merged.

stock picking in form

Form for Entering Goods received from a Supplier Order

The products then arrive in stock and should reflect the quantities shown on the product form.

In the Incoming Shipments form, the field Invoice Control lets you influence the way you send invoices to suppliers. If this is set to To be invoiced, a supplier invoice will now be generated automatically in the draft state, based on the goods received. Your accountant then has to confirm this pre-invoicing once the supplier's invoice is received. This enables you to verify that the invoiced quantities correspond to the quantities received.

In order to print the picking Slip of an incoming shipment, select the incoming shipment of which you need the details and click Receipt Slip from the Print button at the top center of the screen.

This Delivery Slip is available in the Internal Moves and Delivery Orders sections.

In case you received damaged or wrong products, you can return them to the supplier. In the Incoming shipment form, click the Return Products button. A window will open that lets you choose the invoicing process to follow. Once you click Process, a stock move is generated with the same reference number and return to specify that this is a return move.

return product stock move

Stock Move for Returned Products

Receipt of a Supplier Order by Product

The approach shown above is very useful if goods receipts correspond to the original orders. If your suppliers deliver items that do not necessarily coincide with the orders, however, it is easier to work by products received rather than by orders.

From this version on, you can also handle receptions by product, even from List view. Go to Warehouse > Operations > All Operations > YourCompany: Receipt.

Filters allow you to easily select receipts to be done, and so on. One way to quickly receive products is to Group by Product,`Picking`,etc and select To Do.

This is very useful functionality when your supplier sends the goods for several purchase orders at a time. You can now just receive the products, regardless of the purchase order they come from, simply by clicking the green arrow at the right side of the screen.

The List view offers great flexibility and allows you to rapidly incoming products by keeping full functionality! Of course, you can handle both partial and complete receptions, and you can add information about the Serial Numbers and packs.

receive products

Incoming Products Group By Product

Internal Stock Moves

You should install the stock_location module (from the list of modules) if routing products to customers, from suppliers or in your warehouse is determined by the identity of the product itself.

product location

Managing the Paths from one Location to Another in a Product Form (In Inventory tab)

This will let you configure logistics rules individually for each product. For example, when a specific product arrives in stores, it can automatically be sent to quality control. In this case, it has to be configured as a Push Flow with rules in the Product form. The fields that make up those rules are:

  • Source Location: the rule only applies if a product comes from this location,
  • Destination Location: the rule only applies if a product ends up in this location,
  • Automatic Move: Automatic Move, Manual Operation, Automatic No Step Added,
  • Delay (days):,
  • Operation: a free text field which will be included in the automatic stock move proposed by Odoo.

There are two main logistic flows:

  • Push Flow
  • Pull Flow

Push flows are useful when the arrival of certain products in a given location should always be followed by a corresponding move to another location, optionally after a certain delay. The original Warehouse application already supports such Push flow specifications on the Locations themselves, but these cannot be refined per product. Pull flows are a bit different from Push flows, in the sense that they are not related to the processing of product moves, but rather to the processing of procurement orders. What is being pulled is a need, not directly products. You will now see some examples of using these locations and logistics by product through Pushed Flows for:

  • A rentable product,
  • A product bought in China, following its freight by ship from port to port,
  • A product that you want to send to quality control before putting it in stocks.

We will develop the third scenario: the quality control.

You can configure the system to put a given product in the Quality Control bay automatically when it arrives in your company. To do that, you just configure a rule for the product to be placed in the Quality Control location rather than the Input location when the product is received from the supplier.

Rule to Move Products manually from Input to Quality Control

Source location


Destination location

Quality Control

Automatic Move

Manual Operation

Shipping Type

Getting Goods

Delay (days)



Quality Control

Once this product has been received, Odoo will automatically manage the request for an internal movement to send it to the Quality Control location. If you want to do this automatically without having to confirm it, in the Automatic Move field, select Automatic Move or Automatic No Step Added.

With the configuration described in the table above, you will have to confirm the stock move manually once you have received the goods.

manual move

Manual Stock Move to Quality Control

If you do not want to confirm the stock move manually, but you want to see the move Suppliers --> Stock then Stock --> Quality Control, change the Automatic Move field and select Automatic Move. With this configuration, you will see the two stock moves.

stock move

Automatic Stock Move to Quality Control

If you select Automatic Move No Step Added, you will only see one stock move: Suppliers --> Quality Control

automatic move nsta

Automatic Stock Move to Quality Control (No Step Added)

Shipping of Goods

In the same way as delivering goods, you can ship goods in three different ways:

  • manually enter data,
  • deliver goods according to a sales order,
  • deliver goods by product.

Everything about goods receipt can also be done manually in the same way for a customer delivery. This time, use the automated product delivery processes based on customer orders. Install the sale module , so that you can proceed further in this section of the chapter.

Now create a new sales order from the menu Sales > Sales > Sales Orders. Enter the following data in this order:

  • Shop: Your Company
  • Customer: Agrolait
  • Order lines:
    • Product: [DC] Data Card,
    • Quantity (UoM): 3,
    • Product UoM: Unit(s),
    • Procurement Method: from stock.

You have already seen that Odoo shows the available product stock in list view. The real stock is equal to the virtual stock because you have nothing to deliver to customers and you are not waiting for any of these products to be received into stock. The salesperson then has all the information needed to take orders efficiently.

stock sale form

Entering an Order for Three Data Card

Then confirm the quotation to convert it to an order. If you return to the product form, you will see the virtual stock is now smaller than the real stock.

Start the scheduler through the menu Warehouse > Schedulers > Run Schedulers. This manages the reservation of products and places orders based on the dates promised to customers, and the various internal lead times and priorities. Three products will be reserved in the order that you created, so they cannot be sold to another customer.

Install the module mrp_jit to schedule each order in real time after it has been confirmed. This means that you do not have to start the scheduler or wait for its periodical start time.

Now have a look at the list of deliveries waiting to be carried out using the menu Warehouse > Operations > All Operations > YourCompany: Delivery Orders. You find a line there for your order representing the items to be sent. Double-click the line to see the detail of the items proposed by Odoo.

stock picking out form

Items on a Customer Order

You can also confirm a customer delivery from a confirmed Sales Order. When you click the Process button of Outgoing Deliveries, a window opens where you can enter the quantities actually delivered. If you enter a value less than the forecasted one, Odoo automatically generates a partial delivery note and a new order for the remaining items. For this exercise, just confirm all the products.

However, if you want to look at a partial shipping, an example will be developed at the end of this section.

If you return to the list of current orders, you will see that your order has now been marked as Done.

stock sale tree

List of Orders with their State

Stock Management is very flexible to be more effective. For example, if you forget to enter products at goods-in, this will not prevent you from sending them to customers. In Odoo, you can force all operations manually using the button Force Availability. In this case, your stocks risk to become negative. You should monitor all stocks for negative levels and carry out an inventory correction when that happens.

Partial Shipping

Should you have to process a partial delivery, you can go to Warehouse > Operations > All Operations > YourCompany: Delivery Orders, then select the order to process it. In the new window, change the quantity to ship and then confirm it.

If you go back to the list view, you will now see a new delivery order with a back order number equal to the just confirmed order. This is illustrated in the following figure.

partial shipping

Partial Shipping

In the stock moves, you will see that there are two moves. The first move is for the remaining quantities to ship and the second one is for the shipped goods. There will be more stock moves if you process partial shipping in more than two times.

stock move partial

Stock Moves in Partial Shipping

Return Products from Customers

If a customer returns damaged or wrongly delivered products, you can enter this information in Odoo via Warehouse > Operations > All Operations > YourCompany: Delivery Orders.

You have to select the order related to the returned products and click the Return Products. A new window will open and will let you choose the invoicing method.

return picking

Return Products from Customers

When the product is returned, it will go back to your stock and you will see a stock move.

return product

Stock Move for a Returned Product

Just In Time

By default, scheduling starts automatically once a day. You should make this scheduling execute overnight to ensure that the system does not slow down under a heavy load of scheduling when you are also trying to use it interactively.

To set the start time for the scheduler, go to the menu Setting > Technical > Automation > Scheduled Actions. Select the rule called Run mrp scheduler and modify the date and time of the next execution.

Some companies want to plan orders progressively as they are entered, so they do not wait until procurement orders are planned the next day. Install the module mrp_jit to handle this. Once the module is installed, each requirement (that could result in a Production or Purchase Order) will be planned in real time as soon as it has been confirmed.

Then if you make a sales order with a product that is Make To Order, the quotation request to a supplier will immediately be generated.

This mode does not always makes sense. Each order is processed immediately when confirmed. So if an order is to be delivered in three months, the scheduler will reserve goods in stock for each order once it has been confirmed. It would have been more sensible to leave these products available for other orders.

If a Purchase Order's Invoicing Control is configured From Order, the scheduler will immediately create the corresponding supplier quotation request. It might have been better to delay it for several weeks, if you could have used the lead time to group the purchase with other future orders.

So the negative effects of working with the Just in Time module are:

  • Poor priority management between orders,
  • Additionally stocked products.

Logistics Configuration through Advanced Routes

To configure your logistics for advanced push and pull, you need to install stock_location module as explained before. A complete scenario will be developed at the end of this chapter.

This module supplements the Warehouse application by adding support for location paths per product, effectively implementing Push and Pull inventory flows.

Typically this could be used to:

  • 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
    • Supplier Returns
  • Help rental management, by generating automated return moves for rented products.

Once this module is installed, an additional Logistics Flows tab appears in the Product form, allowing you to add Push and Pull flow specifications.

Push Flow

Push flows are useful when the arrival of certain products in a given location should always be followed by a corresponding move to another location, optionally after a certain delay.

The core Warehouse Management application already supports such Push Flow specifications on the Locations, but these cannot be refined per product.

A push flow specification indicates which location is chained with another location, as well as the parameters used. As soon as a given quantity of products is moved to the source location, a chained move is automatically foreseen according to the parameters set on the flow specification (destination location, delay, type of move, journal, etc.) The new move may be processed automatically, or may require a manual confirmation, according to what you have defined.

Suppose whenever the demo data product CPUi5 enters the Stock location, it first has to be moved to the Quality Control location in order to check the quality.

Look up the product CPUi5 using the menu Warehouse > Products > Products.

To have Odoo accomplish this move automatically, you have to configure the Push flow as follows:

  • Operation: Receptions to Quality Control
  • Source Location: Stock
  • Destination Location: Quality Control
  • Automatic Move: Automatic No Step Added
  • Delay (days): 1
  • Shipping Type: Getting Goods
  • Invoice Status: Not Applicable

stock pushed flow

Push Flow Specification for Product CPUi5

A push flow is related to how stock moves should be generated in order to increase or decrease inventory.

Pull Flow

Pull flows are a bit different from Push flows, in the sense that they are not related to the processing of product moves, but rather to the processing of procurement orders. What is being pulled is a need, not directly products.

A classical example of a Pull flow is when you have an Outlet company, with a parent Company that is responsible for the supplies of the Outlet.

[ Customer ] <- A - [ Outlet ] <- B - [ Holding ] <- C - [ Supplier ]

When a new procurement order A (resulting from the confirmation of a Sales Order, for example) is created in the Outlet (Your Company, Chicago shop), it is converted into another procurement B (through a Pull flow of the 'move' type) requested from the Holding. When procurement order B is processed by the Holding company (Your Company), and if the product is out of stock, it may be converted into a Purchase Order (C) from the Supplier (Push flow of the 'Buy' type). The result is that the procurement order, the need, is pushed all the way between the Customer and Supplier.

Technically, Pull flows allow to process procurement orders differently, not only depending on the product being considered, but also depending on which location holds the "need" for that product (i.e. the destination location of that procurement order).

To explain a pull flow for the product CPUa8, we first have to configure the Reordering rules of CPUa8 for the company Your Company and Your Company, Chicago shop using the menu Warehouse > Configuration > Reordering Rules.

Reordering Rules

For the company Your Company:

  • Min Quantity: 10
  • Max Quantity: 50

For the company Your Company Chicago shop;

  • Min Quantity: 10
  • Max Quantity: 20

Look up the product CPUa8 using menu Warehouse > Products > Products in order to define the configuration of the pulled flow.

stock pulled flow

Pull Flow Specification for Product CPUa8

There are two specifications of a pull flow for product CPUa8.

Specification 1:

  • Name: Receive from Warehouse
  • Destination Location: Shop 1
  • Type of Procurement: Move
  • Source Location: Internal Shippings
  • Partner Address: OpenERP S.A., Belgium Gerompont Chaussee de Namur 40
  • Shipping Type: Getting Goods
  • Procure Method: Make to Order
  • Invoice Status: Not Applicable

Specification 2:

  • Name: Deliver Shop
  • Destination Location: Internal Shippings
  • Type of Procurement: Move
  • Source Location: Stock
  • Partner Address: Fabien
  • Shipping Type: Sending Goods
  • Procure Method: Make to Stock
  • Invoice Status: Not Applicable

Now sell 1 unit of product CPUa8 from the Your Company Chicago shop (do not forget to confirm your sales order) and run the scheduler using the menu Warehouse > Schedulers > Run Schedulers. Then check the stock moves for product CPUa8 from the menu Warehouse > Traceability > Stock Moves.

stock move pull flow

Stock Move of CPUa8 related to Pull Flow Specification

These moves can be explained like this:

[ Customer ] <-- [ Your Company Chicago shop ] <-- Internal Shippings <-- Stock <-- [ Your Company ]

When the company Your Company Chicago shop sells one unit of CPUa8 to a customer, its stock decreases to 10 units. According to the minimum stock rule of the product CPUa8, Odoo generates a procurement order of 21 units of CPUa8 for the company Your Company Chicago shop (OUT/00020, or another number if you have added extra data). So 21 units of CPUa8 move from Your Company Stock to Your Company Chicago shop according to their internal configuration of Source and Destination Locations.

A pull flow is related to how the procurement process runs in order to find products to increase or decrease inventory.

Procurement Methods – Make to Stock and Make to Order

The procurement method determines how the product will be replenished:

  • Make to Stock: your customers are supplied from available stock. If the quantities in stock are too low to fulfil the order, a Purchase Order (according the minimum stock rules) will be generated in order to get the products required. Example: a classic distributor.
  • Make to Order: when a customer order is confirmed, you procure or manufacture the products for this order. A customer order 'Make to Order' will not modify stock in the medium term because you restock with the exact amount that was ordered. Example: computers from a large supplier assembled on demand.

You find a mix of these two modes used for the different final and intermediate products in most industries. The procurement method shown on the product form is a default value for the order, enabling the salesperson to choose the best mode for fulfilling a particular order by varying the sales order parameters as needed.

The figures Change in Stock for a Make to Stock Product and Change in Stock for a Make to Order Product show the change of stock levels for one product managed as Make to Order and another managed as Make to Stock.

These figures are taken from, product view (In product go to More -> Future Stock Moves)

stock from stock

Change in Stock for a Make to Stock Product

stock from order

Change in Stock for a Make to Order Product

The Make to Stock logistical approach is usually used for high volumes and when the demand is seasonal or otherwise easy to forecast. The Make to Order approach is used for products that are measured, or very expensive to stock or have a short restocking time.

Choosing Supply Methods

Odoo supports two supply methods:

  • Manufacture: when the product is manufactured or the service is supplied from internal resources.
  • Buy: when the product is bought from a supplier.

These are just the default settings used by the system during automated replenishment. The same product can be either manufactured internally or bought from a supplier.

These three fields (Supply Method, Procurement Method, Product Type) determine the system's behaviour when a product is required. The system will generate different documents depending on the configuration of these three fields when satisfying an order, a price quotation to a supplier or a manufacturing order.

Odoo manages both stockable products and services. A service bought from a supplier in Make to Order mode, will generate a subcontract order from the supplier in question.

The table below shows all possible cases for Procurement.

Consequences of Procurement Methods Make to Stock (MTS) and Make To Order (MTO)
Procurement MethodProduceBuy


Wait for availability

Wait for availability


Production Order

Purchase Order

Consequences of Procurement Methods when using Services
Procurement MethodProduceBuy





Create task


Packaging with Various Logistics Units of Measure

Units of Measure

Odoo supports several units of measure. Quantities of the same product can be expressed in several units of measure at once. For example, you can buy grain by the tonne and resell it by kg. You just have to make sure that all the units of measure used for a product are in the same units of measure category.

All units of measure in the same category are convertible from one unit to another.

The table below shows some examples of units of measure and their category. The factor is used to convert from one unit of measure to another as long as they are in the same category.

Example Units of Measure
UoMCategoryRatioUoM Type














Working time




Working time




Working time







100 Items




Depending on the table above, you have 1Kg = 1000g = 0.001 Tonnes. A product in the Weight category could be expressed in Kg, Tonnes or Grammes. You cannot express it in hours or pieces, for example.

Use the menu Warehouse > Configuration > Units of Measure to define a new unit of measure.

In the definition of a Unit of Measure, you have a Rounding precision factor which shows how amounts are rounded after the conversion. A value of 1 gives rounding to the level of one unit. 0.01 gives rounding to one hundredth.

Odoo supports double units of measure. Notice however that the default unit of measure and the purchase unit of measure have to be in the same category. Only the sales unit of measure may be in a different category.

This is very useful in the agro-food industry, for example: you sell ham by the piece, but invoice by the Kg. A weighing operation is needed before invoicing the customer.

To activate the management options for double units of measure, you have to change configuration from Settings > Configuration > Warehouse.

In this case, the same product can be expressed in two units of measure belonging to different categories for sales and stock/purchase. You can then distinguish between the unit of stock management (the piece) and the unit of invoicing or sales (kg) in the Sales tab of Product form.


Secondary Unit of Measure

In the product form you can set one unit of measure for sales and stock management, and one unit of measure for purchases (in Procrument tab of Product form).

For each operation on a product, you can use another unit of measure, as long as it can be found in the same category as the two units already defined. If you use another unit of measure, Odoo automatically handles the conversion of prices and quantities.

So if you have 430 Kg of carrots at 5.30 EUR/Kg, Odoo will automatically make the conversion if you want to sell in tonnes – 0.43 tonnes at 5300 EUR / tonne. If you had set a rounding factor of 0.1 for the tonne unit of measure, Odoo will tell you that you have only 0.4 tonnes available.


The packaging allows you to ship products in several ways. For example, you can ship goods by boxes or by pallets.

At first, you have to define possible packaging. To define the packaging, go to Warehouse > Configuration > Products > Packaging and click Create.


Packaging definition

To complete the creation of a new packaging, you have to give it a name and a type. Different types are available in Odoo: Box, Pack, Pallet and Unit.

Once all packaging is defined, you can attach the packaging to your products through the following menu: Warehouse > Products > Products. (Open Product Form view and go to Sales tab in the last you will find line of packing)

product packaging

Defining the Packaging for the Product


Odoo has more than 4,500 open source business apps.

Launch Odoo and make your company a better place.