Three-step receipt

# Three-step receipt

Some companies require a quality control process before receiving goods from suppliers. To
accomplish this, Odoo has a three-step process for receiving goods.
In the three-step receipt process, products are received in an input area, then transferred to a
quality area for inspection. Products that pass the quality inspection are then transferred into
stock. The products are not available for further processing until they are transferred out of the
quality area and into stock.

## Configuration

Odoo is configured by default to receive and deliver goods in one step , so the settings need to be changed in order to utilize three-step
receipts. First, make sure the Multi-Step Routes option is enabled in Inventory
â£ Configuration â£ Settings â£ Warehouse . Note that activating Multi-Step Routes will also activate Storage Locations .
Next, the warehouse needs to be configured for three-step receipts. To do that, go to Inventory app â£ Configuration â£ Warehouses , and select the desired warehouse to
be edited. Doing so reveals the detail form for that specific warehouse.
On that Warehouse detail form page, select Receive goods in input, then
quality and then stock (3 steps) for Incoming Shipments .
Activating three-step receipts and deliveries creates two new internal locations: Input (WH/Input), and Quality Control (WH/Quality Control). To rename these locations, go to Inventory app â£ Configuration â£ Locations , then click on the desired location
to change (or update) the name.

## Receive in three steps (input + quality + stock)

### Create a purchase order

To create a new RfQ , navigate to Purchase app â£
New , which reveals a blank RfQ form page. On this page, select a Vendor , add a storable Product , and click Confirm Order .
A Receipt smart button will appear in the top right, and the receipt will be associated
with the purchase order. Clicking on the Receipt smart button will show the receipt
order.

### Process a receipt

Once the purchase order (PO) is confirmed, a receipt ( WH/IN ) operation is generated and ready to
process.
`WH/IN`
The receipt can be confirmed from the original purchase order form, or it can be accessed by
navigating to the Inventory app , and locating the Receipts task card.
Click the # To Process button to reveal all incoming receipts to process. Click the
receipt associated with the previous purchase order.
Click Validate to validate the receipt, and move the product to the destination
location, WH/Input .

### Process a transfer to Quality Control

Once the receipt has been validated, an internal transfer operation to move the product to quality
control is ready to process.
Click Inventory Overview in the breadcrumbs to navigate back to the dashboard, and
locate the Internal Transfers task card.
Select the # To Process button to reveal all internal transfers to process. Then, choose
the internal transfer associated with the validated receipt.
Once ready, click Validate to complete the transfer, and move the product from WH/Input to WH/Quality Control .

## Process a transfer to stock

Once the internal transfer to move the product to quality control has been validated, another
internal transfer operation to move the product into warehouse stock is ready to process.
Click YourCompany: Internal Transfers in the breadcrumbs to reveal the list of all
internal transfers to process. Then, select the new internal transfer to move the product from WH/Quality Control to WH/Stock .
`WH/QualityControl`
`WH/Stock`
Once ready, click Validate to complete the transfer, and move the product from WH/Quality Control to WH/Stock .


# Sell stock from multiple warehouses using virtual locations

While keeping stock and selling inventory from one warehouse might work for smaller companies,
bigger companies might need to keep stock in, or sell from, multiple warehouses in multiple
locations.
Sometimes products included in a single sales order might take stock from two (or more) warehouses;
in Odoo, pulling products from multiple warehouses to satisfy sales demands can be done using virtual locations .
The solution in this document, describing the use of a virtual warehouse to fulfill orders for
multiple warehouses, has some limitations. Consider the following before proceeding:
- When the Warehouse field is set to a virtual warehouse on a sales order, the
virtual warehouseâs address is indicated on the picking, packing, and delivery forms, not the actual warehouseâs address.
When the Warehouse field is set to a virtual warehouse on a sales order, the
virtual warehouseâs address is indicated on the picking, packing, and delivery forms, not the actual warehouseâs address.
- Each location has a warehouse_id (hidden field). This means that the stock in the virtual
warehouse will not be the sum of the stock of the real warehouses, but rather the sum of
the stock in the locations whose warehouse ID is the virtual warehouse.
Each location has a warehouse_id (hidden field). This means that the stock in the virtual
warehouse will not be the sum of the stock of the real warehouses, but rather the sum of
the stock in the locations whose warehouse ID is the virtual warehouse.
`warehouse_id`
Potential limitation for those using two or three-step
delivery :
- The output or packing zone on the various forms is incorrectly listed as the virtual
warehouseâs address.
The output or packing zone on the various forms is incorrectly listed as the virtual
warehouseâs address.
- There is no workaround for two or three-step deliveries.
There is no workaround for two or three-step deliveries.
- Proceed only if setting a virtual warehouseâs address as the output or packing zone makes
sense for the companyâs workflow.
Proceed only if setting a virtual warehouseâs address as the output or packing zone makes
sense for the companyâs workflow.
In order to create virtual locations in warehouses, and proceed to the following steps, the Storage Locations and Multi-Step Routes features must be enabled.
To do so, go to Inventory app â£ Configuration â£ Settings , scroll down to the Warehouse section, and enable the Storage Locations and Multi-Step Routes options. Then, Save the changes to finish.

## Create virtual parent location

Before creating any virtual stock locations, create a new warehouse that acts as a virtual warehouse â the parent location of other physical warehouses.
Virtual warehouses are great for companies with multiple physical warehouses. This is because a
situation might arise when one warehouse runs out of stock of a particular product, but another
warehouse still has stock on-hand. In this case, stock from these two (or more) warehouses could
be used to fulfill a single sales order.
The âvirtualâ warehouse acts as a single aggregator of all the inventory stored in a companyâs
physical warehouses, and is used (for traceability purposes) to create a hierarchy of locations
in Odoo.
To create a new warehouse, go to Inventory app â£ Configuration â£ Warehouses ,
and click Create . From here, the warehouse Name and Short Name can be changed, and other warehouse details can be changed under the Warehouse
Configuration tab.
Lastly, click Save to finish creating a regular warehouse. Continue following the
steps below to finish configuring the virtual parent warehouse.
- Warehouse configurations
Warehouse configurations
- Incoming and outgoing shipments
Incoming and outgoing shipments
- Inter-warehouse replenishment
Inter-warehouse replenishment

## Create child warehouses

Create at least two child warehouses to link to the virtual warehouse.
In order to take stock from multiple warehouses to fulfill a sales order, there needs to be at
least two warehouses acting as child locations of the virtual parent location warehouse.
To do that, navigate to Inventory app â£ Configuration â£ Warehouses , click Create , and follow the preceding instructions to
configure the physical stock locations.
`VirtualWarehouse`
`VWH/Stock`
`WarehouseA`
`WarehouseB`
`WHA`
`WHB`
While the virtual stock location will be changed to âViewâ later, the Location Type must be Internal Location at this point to link the child warehouses in the next section.

## Link child warehouses to virtual stock

To set physical warehouses as child locations of the virtual location configured in the previous step , navigate to Inventory app â£
Configuration â£ Locations .
Remove any filters from the search bar. Then, click the physical warehouse Location that
was previously created to be a child location (e.g. WHA ), and click Edit .
`WHA`
Change the Parent Location field from Physical Locations to the virtual
warehouseâs stock location (e.g. VWH/Stock ) from the drop-down menu, and click Save .
`VWH/Stock`
To select the virtual warehouseâs stock location in the Parent Location drop-down
menu, the parent warehouse stock location (e.g. VWH/Stock ) must have its Location Type set to Internal Location .
`VWH/Stock`
Repeat the preceding steps to configure two or more child warehouses.
Once complete, the virtual, parent warehouse (e.g. VWH/Stock ) fulfills orders using stock from
child warehouses (e.g. WHA and WHB ), if there is insufficient stock in any one location.
`VWH/Stock`
`WHA`
`WHB`

## Set virtual stock location as âviewâ

Set the virtual stock locationâs Location Type to View , as it is a
non-existent location used to group various physical warehouses together.
To do that, navigate to Inventory app â£ Configuration â£ Locations .
Click the virtual warehouseâs stock location (e.g. VWH/Stock ) that was previously created , from the Locations list.
`VWH/Stock`
On the location form, under the Additional Information heading, set the Location Type to View . Save the changes.
To view the total quantity across all linked child warehouses, go to the product form and
click the On Hand smart button.

## Example: sell products from a virtual warehouse

To sell products from multiple warehouses using a virtual parent location, the database must have at
least two warehouses configured â with at least one product, with quantity on-hand in each
warehouse, respectively.
The following product, Toy soldier , is available at each location with the quantities:
`Toysoldier`
- WHA/Stock : 1
`WHA/Stock`
- WHB/Stock : 2
`WHB/Stock`
- Warehouses WHA and WHB are child warehouses of the virtual warehouse VWH .
Warehouses WHA and WHB are child warehouses of the virtual warehouse VWH .
`WHA`
`WHB`
`VWH`
Create a quotation for the product by navigating to the Sales app and clicking Create . On the quote, add a Customer , and click Add a product to
add the two products stored in the two warehouses.
Then, click the Other Info tab on the sales order form. Under the Delivery section, change the Warehouse field value to the virtual warehouse that was previously created . Next, Confirm the sales order.
Then, click the Delivery smart button. From the warehouse delivery form, confirm that
the Source Location value matches the Warehouse field value from the sales
order. Both should list the virtual warehouse location.
Finally, on the warehouse delivery form, under the Detailed Operations tab, confirm that
the Locations in the From column for each product match the child locations
that are tied to the virtual parent location.
The Source Location on the warehouse delivery form, and the Warehouse under the Other Info tab on the sales order, must match for products in the sales
order to be pulled from different warehouses.
- If the virtual warehouse is not in the Source Location field on the warehouse
delivery form, retry product reservation by: Running the scheduler: turn on developer mode , and then go to Inventory app â£ Operations â£ Run Scheduler . Clicking Check Availability on the delivery order.
If the virtual warehouse is not in the Source Location field on the warehouse
delivery form, retry product reservation by:
- Running the scheduler: turn on developer mode , and then go to Inventory app â£ Operations â£ Run Scheduler .
Running the scheduler: turn on developer mode , and then go to Inventory app â£ Operations â£ Run Scheduler .
- Clicking Check Availability on the delivery order.
Clicking Check Availability on the delivery order.
- If the virtual warehouse is not assigned to the Warehouse field on the sales
order, then cancel it, and create a new sales order with the virtual warehouse set in the Warehouse field.
If the virtual warehouse is not assigned to the Warehouse field on the sales
order, then cancel it, and create a new sales order with the virtual warehouse set in the Warehouse field.
- If the Warehouse field is missing on the sales order form, then the multiple child
warehouses may not have been set up correctly. Review the previous section to ensure the correct settings.
If the Warehouse field is missing on the sales order form, then the multiple child
warehouses may not have been set up correctly. Review the previous section to ensure the correct settings.
To use a virtual parent location as the default warehouse for sales orders, each salesperson
should have the virtual warehouse assigned to them from the drop-down menu next to Default Warehouse on their employee form.


Storage categories

# Storage categories

A storage category is used with putaway rules to assign a storage location to
incoming products while accounting for the capacity of that location. Assigning categories to
storage locations tells Odoo these locations meet specific requirements, such as temperature or
accessibility. Odoo then evaluates these locations, based on defined capacity, and recommends the
best one on the warehouse transfer form.
Follow these steps to complete the setup:
- Enable features in the settings
Enable features in the settings
- Define capacity limitations
Define capacity limitations
- Assign a category to storage locations
Assign a category to storage locations
- Add the storage category as an attribute to a putaway rule
Add the storage category as an attribute to a putaway rule

## Enable storage categories

To enable storage categories, go to Inventory app â£ Configuration â£ Settings .
Then, in the Warehouse section, ensure the Storage Locations and Multi-Step Routes features are enabled.
To set capacities by package type , also
make sure Packages is enabled in the Operations section. Click Save .

## Storage location setup

Set up storage locations to work with the storage category. A parent location must be set up, with
child locations (or sublocations ) assigned to it. This is because the putaway ruleâs Store
to location will be set to the parent location, and the storage category will be set to the child location.
Go to Inventory app â£ Configuration â£ Locations .
First, set up a parent location. This can be as simple as the default WH/Stock location.
Alternatively, create a new parent location by clicking the New button on the Locations page. On this parent location form, specify a Location Name and Parent Location . Select Internal Location as the Location Type .
`WH/Stock`
Then, create sublocations of this parent location by clicking the New button. On the
location form, specify a Location Name , and set the Parent Location to the
parent location that was just created.
A beverage company stores all of its cans of lemonade on pallets in one section of its warehouse.
First, they create a location named Pallets in the WH/Stock location. Then, they create two
sublocations, named PAL1 and PAL2 . Both have WH/Stock/Pallets set as the parent location.
`Pallets`
`WH/Stock`
`PAL1`
`PAL2`
`WH/Stock/Pallets`

## Define storage category limitations

A storage category with specific limitations must be created first, before it is applied to
Before a storage category is applied to locations, it must be configured with specific limitations
in order to decide the optimal storage location. Capacity can be limited by weight, product, and
package type.
To create a storage category, go to Inventory app â£ Configuration â£ Storage
Categories , and click New .
On the storage category form, type a name for the category in the Storage Category field.
Weight limits can be combined with capacity by package or product (e.g. a maximum of one hundred
products with a total weight of two hundred kilograms).
While it is possible to limit capacity by product and package type at the same location, it may
be more practical to store items in different amounts across various locations, as shown in the limit capacity by package example.
The Allow New Product field defines when the location is considered available to store a
product:
- If location is empty : a product can be added there only if the location is empty.
If location is empty : a product can be added there only if the location is empty.
- If products are the same : a product can be added there only if the same product is
already there.
If products are the same : a product can be added there only if the same product is
already there.
- Allow mixed products : several different products can be stored in this location at the
same time.
Allow mixed products : several different products can be stored in this location at the
same time.
Odoo does not automatically split quantities across multiple storage locations. If an
incoming receipt contains several units or packages and the first recommended location exceeds
its capacity, Odoo still routes all items to that same location instead of selecting another one
with available space.
(Example: If a location can hold 10 units and 12 units arrive, all 12 are still assigned to that
location.)

### Limit capacity by weight

On a storage category form ( Inventory app â£ Configuration â£ Storage
Categories ), set a maximum product weight in the Max Weight field. This limit applies
to each location assigned this storage category.
A maximum product weight can be set in the Max Weight field. This limit applies
to each location assigned this storage category. If a product weight is defined, the value must be
set to greater than 0 .
`0`

### Limit capacity by product

In the Capacity by Product tab, click Add a Line to input items, and enter
In the Capacity by Product tab, click Add a Line to enter a product, and set
the maximum capacity that should be stored at each location in the Quantity field.
Ensure only a maximum of five Large Cabinets and two Corner Desk Right Sit are stored at a
single storage location by specifying those amounts in the Capacity by Product tab.
To ensure only a maximum of five Large Cabinets and two Corner Desk Right Sit are stored at a
single storage location, specify those amounts in the Capacity by Product tab.
`LargeCabinets`
`CornerDeskRightSit`
`LargeCabinets`
`CornerDeskRightSit`

### Limit capacity by package type

For companies using packages , it becomes
possible to ensure real-time storage capacity checks, based on package types (e.g., crates, bins,
Limiting capacity by package makes it
possible to enforce real-time storage capacity checks based on package type (e.g., crates, bins,
boxes, etc.).
Create the package type before assigning it to a
storage category. Create it on the Inventory tab of the product form (in the Packaging section), or create it from the Product Packagings page. Be sure
Click Add a line to add a package type to the storage category. Alternatively, create a
new package type on the Inventory tab of the product form (in the Packaging section), or from the Product Packagings page.
To help create putaway rules for pallet-stored items, create the High frequency pallets storage
category.
`Highfrequencypallets`
In the Capacity by Package tab, specify the number of packages for the designated Package Type , and set a maximum of 2.00 Pallets for a specific location.
`2.00`
`Pallets`
Odoo does not automatically split quantities across multiple storage locations. If an
incoming receipt contains several units or packages and the first recommended location exceeds
its capacity, Odoo still routes all items to that same location instead of selecting another one
with available space.
(Example: If a location can hold 10 units and 12 units arrive, all 12 are still assigned to that
location.)

## Assign storage locations

After the storage category is created, it can be assigned to the sublocations. Go to Inventory app â£ Configuration â£ Locations , and open the desired sublocation.
Then, select the created category in the Storage Category field.
Assign the High frequency pallets storage category (which limits pallets stored at any location
to two pallets) to the WH/Stock/Pallets/PAL1 sublocation.
`Highfrequencypallets`
`WH/Stock/Pallets/PAL1`
Repeat this step for all sublocations to which the storage category should apply.
On the storage category form, the Locations smart button shows
which storage locations the category has been assigned to.

## Create a putaway rule

With the storage category and locations set up, create the putaway rule by navigating
to Inventory app â£ Configuration â£ Putaway Rules .
Click the New button to create the putaway rule. Specify a location in the Store to field.
Use the Sublocation field to specify that you want to use a storage category on the
sublocations of the Store to field:
- Last Used : The last location that had a move associated with it for that product or
product category is used. If there is no last location used, the destination is whatever is
specified in the Store to field.
Last Used : The last location that had a move associated with it for that product or
product category is used. If there is no last location used, the destination is whatever is
specified in the Store to field.
- Closest Location : The locations specified as part of the storage category are used. A
storage category is mandatory in the Having Category field. The locations in the
storage category must be sublocations of the location in the Store to field. If the
closest locations in the storage category are full, the Store to location is used.
Closest Location : The locations specified as part of the storage category are used. A
storage category is mandatory in the Having Category field. The locations in the
storage category must be sublocations of the location in the Store to field. If the
closest locations in the storage category are full, the Store to location is used.
Continuing the example from above, the High frequency pallets storage category is assigned to
the putaway rule directing pallets of lemonade to locations with the High frequency pallets storage category assigned to them .
`Highfrequencypallets`
`Highfrequencypallets`
If products are not routing to secondary locations for a storage category and a product weight is
defined, verify that the storage categoryâs Max Weight value is set to a number
greater than 0 .
`0`

## Use case: limit capacity by package

To limit the capacity of a storage location by a specific number of packages, create a storage
category with a Capacity By Package .
Continuing the examples from above, the High frequency pallets storage category is assigned to the PAL1 and PAL2 locations.
`Highfrequencypallets`
`PAL1`
`PAL2`
Then, putaway rules are set, so that any pallets received in
the warehouse are directed to be stored in PAL1 and PAL2 locations.
`PAL1`
`PAL2`
Depending on the number of pallets on-hand at each of the storage locations, when two pallets of
lemonade cans is received, the following scenarios happen:
- If PAL1 and PAL2 are empty, the pallet is redirected to WH/Stock/Pallets/PAL1 .
If PAL1 and PAL2 are empty, the pallet is redirected to WH/Stock/Pallets/PAL1 .
`PAL1`
`PAL2`
`WH/Stock/Pallets/PAL1`
- If PAL1 is full, the pallet is redirected to WH/Stock/Pallets/PAL2 .
If PAL1 is full, the pallet is redirected to WH/Stock/Pallets/PAL2 .
`PAL1`
`WH/Stock/Pallets/PAL2`
- If PAL1 and PAL2 are full, the pallet is redirected to WH/Stock/Pallets .
If PAL1 and PAL2 are full, the pallet is redirected to WH/Stock/Pallets .
`PAL1`
`PAL2`
`WH/Stock/Pallets`
- If PAL1 is partially full (for example, with one pallet), Odoo treats more than one received
pallet as a single pallet on the receipt. You must manually separate the two pallets into separate
storage locations. Click the Open Move icon to the right of the Units field, and then in the Open: Stock move box, click Add a
line . Finally, split the receipt by quantity into separate locations, then click Save .
If PAL1 is partially full (for example, with one pallet), Odoo treats more than one received
pallet as a single pallet on the receipt. You must manually separate the two pallets into separate
storage locations. Click the Open Move icon to the right of the Units field, and then in the Open: Stock move box, click Add a
line . Finally, split the receipt by quantity into separate locations, then click Save .
`PAL1`

Enable storage categories
Storage location setup
Define storage category limitations
Limit capacity by weight
Limit capacity by product
Limit capacity by package type
Assign storage locations
Create a putaway rule
Use case: limit capacity by package


Routes and push/pull rules

# Routes and push/pull rules

Routes in Odoo control the movement of products between different locations, whether internal or
external, using push and pull rules. Once set up, these rules help automate the logistics of product
movement based on specific conditions.
- Odoo Tutorials: Routes
Odoo Tutorials: Routes
- Standard routes in Odoo
Standard routes in Odoo
Routes are applicable on products, product categories, shipping methods, packagings , and on the sales order line.

## About routes and terminology

In a generic warehouse, there are receiving docks, a quality control area, storage locations,
picking and packing areas, and shipping docks. All products go through all these locations. As the
products move through the locations, each location triggers the productsâ specified route and
rules.
In this example, vendor trucks unload pallets of ordered products at the receiving docks. Operators
then scan the products in the receiving area. Depending on the productâs route and rules, some of
these products are sent to a quality control area (for example, products that are components used
in the manufacturing process), 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 conveyor belts bring them to the shipping docks, ready to be delivered to customers.

### Push rules

Push rules are used to supply products into a storage locations as soon as they arrive at a
specific receiving location.
Push rules can only be triggered if there are no pull rules that have already generated the
product transfers.
In a one-step receipt route , which uses one push rule, when a
product arrives in the warehouse, a push rule can automatically transfer it to the Storage
Location . Different push rules can be applied to different products, allowing for customized
storage locations.
Push rule for the âReceive in one stepâ route.
For more information about configuring rules, skip to the Configure rules section .

### Pull rules

Pull rules trigger product moves on demand, such as a sales order or a need to restock .
Pull rules work backward from the demand location. For example, in a two-step delivery route, where items move from Stock to Output before being delivered to the Customer Location , the pull rule first creates a transfer from Output to the customer. If the product is not at Output , another pull rule creates a transfer
from Stock to Output . The warehouse workers then process these transfers in the reverse order:
picking, then shipping.
Pull rules for the âDeliver in two stepsâ route.
For more information about configuring rules, skip to the Configure rules section .

## Configuration

Since Routes are a collection of Push and Pull Rules , Odoo helps you manage advanced route
configurations such as:
- Manage product manufacturing chains.
Manage product manufacturing chains.
- Manage default locations per product.
Manage default locations per product.
- Define routes within the stock warehouse according to business needs, such as quality control,
after-sales services, or supplier returns.
Define routes within the stock 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.
Help rental management by generating automated return moves for rented products.
To configure a route for a product, first, open the Inventory application and go to Configuration â£ Settings . Then, in the Warehouse section, enable the Multi-Step Routes feature and click Save .
The Storage Locations feature is automatically activated with the Multi-Step Routes feature.
Once this first step is completed, the user can use pre-configured routes that come with Odoo, or
they can create custom routes.

### Pre-configured routes

To access Odooâs pre-configured routes, go to Inventory â£ Configuration â£
Warehouses . Then, open a warehouse form. In the Warehouse Configuration tab, the user
can view the warehouseâs pre-configured routes for Incoming Shipments and Outgoing Shipments .
Some more advanced routes, such as pick-pack-ship, are also available. The user can select the
route that best fits their business needs. Once the Incoming Shipments and Outgoing Shipments routes are set, head to Inventory â£ Configuration
â£ Routes to see the specific routes that Odoo generated.
On the Routes page, click on a route to open the route form. In the route form, the
user can view which places the route is Applicable On . The user can also set the route
to only apply on a specific Company . This is useful for multi-company environments; for
example, a user can have a company and warehouse in Country A and a second company and warehouse in
Country B.
Applicable on packagings
At the bottom of the route form, the user can view the specific Rules for the route.
Each Rule has an Action , a Source Location , and a Destination Location .

### Custom Routes

To create a custom route, go to Inventory â£ Configuration â£ Routes , and click
on Create . Next, choose the places where this route can be selected. A route can be
applicable on a combination of places.
Each place has a different behavior, so it is important to tick only the useful ones and adapt each
route accordingly. Then, configure the Rules of the route.
If the route is applicable on a product category, the route still needs to be manually set on the
product category form by going to Inventory â£ Configuration â£ Product
Categories . Then, select the product category and open the form. Next, click Edit and
under the Logistics section, set the Routes .
When applying the route on a product category, all the rules configured in the route are applied to every product in the category. This can be helpful if the business uses the dropshipping
process for all the products from the same category.
The same behavior applies to the warehouses. If the route can apply to Warehouses , all
the transfers occurring inside the chosen warehouse that meet the conditions of the routeâs rules
will then follow that route.
If the route is applicable on Sales Order Lines , it is more or less the opposite. The
route must be manually chosen when creating a quotation. This is useful if some products go through
different routes.
Remember to toggle the visibility of the Route column on the quotation/sales order.
Then, the route can be chosen on each line of the quotation/sales order.
Finally, there are routes that can be applied to products. Those work more or less like the product
categories: once selected, the route must be manually set on the product form.
To set a route on a product, go to Inventory â£ Products â£ Products and select
the desired product. Then, go to the Inventory tab and under the Operations section, select the Routes .
Rules must be set on the route in order for the route to work.

#### Rules

The rules are defined on the route form. First, go to Inventory â£ Configuration
â£ Routes and open the desired route form. Next, click Edit and in the Rules section, click on Add a line .
The available rules trigger various actions. If Odoo offers Push and Pull rules, others are
also available. Each rule has an Action :
- Pull From : this rule is triggered by a need for the product in a specific location.
The need can come from a sales order being validated or from a manufacturing order requiring a
specific component. When the need appears in the destination location, Odoo generates a picking to
fulfill this need.
Pull From : this rule is triggered by a need for the product in a specific location.
The need can come from a sales order being validated or from a manufacturing order requiring a
specific component. When the need appears in the destination 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 the case of the user moving products to the source location, Odoo generates a picking
to move those products to the destination location.
Push To : this rule is triggered by the arrival of some products in the defined source
location. In the case of the user moving products to the source location, Odoo generates a picking
to move those products to the destination location.
- Pull & Push : this rule allows the generation of pickings in the two situations
explained above. This means that when products are required at a specific location, a transfer is
created from the previous location to fulfill that need. This creates a need in the previous
location and a rule is triggered to fulfill it. Once the second need is fulfilled, the products
are pushed to the destination location and all the needs are fulfilled.
Pull & Push : this rule allows the generation of pickings in the two situations
explained above. This means that when products are required at a specific location, a transfer is
created from the previous location to fulfill that need. This creates a need in the previous
location and a rule is triggered to fulfill it. Once the second need is fulfilled, the products
are pushed to the destination 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.
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.
Manufacture : when products are needed in the source location, a manufacturing order
is created to fulfill the need.
The Operation Type must also be defined on the rule. This defines which kind of picking
is created from the rule.
If the ruleâs Action is set to Pull From or Pull & Push , a Supply Method must be set. The Supply Method defines what happens at the
source location:
- Take From Stock : the products are taken from the available stock of 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.
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.
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.

## Example flow

In this example, letâs use a custom Pick - Pack - Ship route to try a full flow with an advanced
custom route.
First, a quick look at the routeâs rules and their supply methods. There are three rules, all Pull From rules. The Supply Methods for each rule are the following:
- Take From Stock : When products are needed in the WH/Packing Zone , picks (internal transfers from WH/Stock to WH/Packing Zone ) are created from WH/Stock to fulfill the need.
Take From Stock : When products are needed in the 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 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.
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 that have a pick - pack - ship route set on it,
a delivery order is created to fulfill the order.
If the source document for multiple tranfers is the same sales order, the status is not the same.
The status will be Waiting Another Operation if the previous transfer in the list is
not done yet.
To prepare the delivery order, packed products are needed 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 the introduction of the documentation, the last step in the process (for this
route, 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 the stock to the packing
area). Now, everything is ready to be processed so the customer can get the ordered items.
In this example, the product is delivered to the customer when all the rules have been triggered and
the transfers are done.

About routes and terminology
Push rules
Pull rules
Configuration
Pre-configured routes
Custom Routes
Example flow


Batch picking

# Batch picking

Batch picking enables a single picker to handle multiple orders at once, reducing the number of
times needed to navigate to a warehouse location. When picking in batches, orders are grouped and
consolidated into a picking list. After the picking, the batch is taken to an output location, where
the products are sorted into their respective delivery packages.
Since orders must be sorted at the output location after being picked, this picking method suits
businesses with a few products that are ordered often. Storing high-demand items in easily
accessible locations can increase the number of orders that are fulfilled efficiently.
Batch picking is ideal for industries or warehouses that handle high order volumes with a stable
demand. This method increases efficiency by allowing workers to pick items for multiple orders in
one trip through the warehouse, reducing travel time and boosting productivity.

## Configuration

To activate the batch picking option, begin by going to Inventory app â£
Configuration â£ Settings . Under the Operations section, check the Batch,
Wave & Cluster Transfers box.
Since batch picking is a method to optimize the pick operation in Odoo, the Storage
Locations and Multi-Step Routes options under the Warehouse heading must
also be checked on this settings page. When finished, click Save .
- Delivery in two steps
Delivery in two steps
- Three-step delivery

## Create batch transfers

To manually group transfers directly from the Inventory app , hover over the
desired operation type from the Inventory Overview menu (e.g. the Receipts Kanban card), click the (vertical ellipsis) icon, then select Prepare Batch .
On the batch transfer form, fill the following fields out accordingly:
- Responsible : employee assigned to the picking. Leave this field blank if any worker
can fulfill this picking.
Responsible : employee assigned to the picking. Leave this field blank if any worker
can fulfill this picking.
- Operation Type : from the drop-down menu, select the operation type under which the
picking is categorized.
Operation Type : from the drop-down menu, select the operation type under which the
picking is categorized.
- Scheduled Date : specifies the date by which the Responsible person should
complete the transfer to the output location.
Scheduled Date : specifies the date by which the Responsible person should
complete the transfer to the output location.
To learn more about the Dock Location , Vehicle , and Vehicle
Category fields, see dispatch management system .
Next, in the Transfers list, click Add a line to open the Add:
Transfers window.
If the Operation Type field was filled, the list will filter transfer records matching
the selected Operation Type .
Click the New button to create a new transfer.
Once the transfer records are selected, click Confirm to confirm the batch picking.
A new batch transfer is assigned to the Responsible , Joel Willis , for the Pick Operation Type . The Scheduled Date is set to August 11 .
`JoelWillis`
`Pick`
`August11`
Clicking the Add a line button opens the Add:Transfers window,
displaying only pickings. This is because the Operation Type was set to Pick on the
batch transfer form.
`Pick`
Click the checkbox to the left of the transfers, WH/PICK/00001 and WH/PICK/00002 , to include
them in the new transfer. Then, click the Select button to close the Add:Transfers window.
`WH/PICK/00001`
`WH/PICK/00002`

### Add batch from transfers list

Another method of creating batch transfers is available using the Add to batch option in
a list. Navigate to the Inventory app â£ Operations drop-down menu, and select any
of the Transfers to open a filtered list of transfers.
On the transfers list, select the checkbox to the left of the selected transfers to add in a batch.
Next, navigate to the Actions button, and click Add to batch from the resulting drop-down menu.
Doing so opens an Add to batch pop-up window, wherein the employee Responsible for the picking can be assigned.
Choose from the two radio options to add to an existing batch transfer or create a new batch transfer .
Add a Description for this batch.
The Description field can be used to add additional information to help workers
identify the source of the batch, where to place the batch, what shipping containers to use, etc.
To create a batch to be processed at a later time, select the Draft checkbox.
Conclude the process by clicking Confirm .

### Automatic batches

Batches can be automatically created and assigned based on several criteria. The Automatic Batches option is defined on the operation type level.
In a multi-steps delivery process, the picking operation can be grouped by customer, while the
shipping operation can be organized by carrier and destination country.
To enable Automatic Batches , navigate to Inventory app â£ Configuration â£
Operation Types , and select the desired operation type (e.g. Delivery , Pick , etc). Then, select one or more Batch Grouping criteria by ticking the
appropriate checkbox. Even if more than one grouping option is selected, only one batch is created.
Batches can be automatically generated based on the following criteria:
- Contact
- Carrier
- Destination Country
- Source Location
- Destination Location

## Process batch transfer

Handle batch transfers in the Inventory app â£ Operations â£ Batch Transfers page.
From here, select the intended transfer from the list. Then, on the batch transfer form, input the Done quantities for each product, under the Detailed Operations tab.
Finally, select Validate to complete the picking.
Be certain the batch transfer is complete when the Validate button is highlighted in
purple. If the Check Availability button is highlighted instead, that means there are
items in the batch that are currently not available in-stock.
In a batch transfer involving products from pickings, WH/PICK/00001 and WH/PICK/00002 , the Detailed Operations tab shows that the product, Cabinet with Doors , has been picked
because the Done column matches the value in the Reserved column.
However, 0.00 quantities have been picked for the other product, Cable Management Box .
`WH/PICK/00001`
`WH/PICK/00002`
`CabinetwithDoors`
`0.00`
`CableManagementBox`
Only in-stock products are visible in the Detailed Operations tab.
To view the complete product list, switch to the Operations tab. On this list, the Demand column indicates the required quantity for the order. The Reserved column shows the available stock to fulfill the order. Lastly, the Done column specifies
the products that have been picked, and are ready for the next step.
The product, Desk Pad , from the same batch as the example above , is only visible in the Operations tab because there are no Reserved quantities in stock to fulfill the batch transfer.
`DeskPad`
Click the Check Availability button to search the stock again for available products.

### Create backorder

On the batch transfer form, if the Done quantity of the product is less than the Reserved quantity, a pop-up window appears.
This pop-up window provides the option: Create Backorder? .
Clicking the Create Backorder button automatically creates a new batch transfer.
When creating a new backorder, the transfers that have not been validated in the batch will
be removed from it.
Click No Backorder to finish the picking without creating another batch picking.
Click Discard to cancel the validation, and return to the batch transfer form.

Configuration
Create batch transfers
Add batch from transfers list
Automatic batches
Process batch transfer
Create backorder


Cluster picking

# Cluster picking

Cluster picking is an advanced picking method that combines the efficiency of batch picking with immediate sorting during the picking process. It is best suited
for warehouses with high order volumes where organization and speed are critical.
Unlike batch picking, which requires a separate sorting step after picking, cluster picking sorts
items directly into designated bins or containers for each sales order (SO). This eliminates the
need for post-picking consolidation, making it ideal for operations prioritizing speed and accuracy.
Cluster picking is particularly effective in environments where immediate organization is crucial,
and orders contain a mix of items that need precise sorting during, rather than after, the picking
process.
However, cluster picking does have some disadvantages. For instance, urgent orders cannot be
prioritized, and optimized batches must be manually created beforehand. As a result, the picking
process can lead to bottlenecks.
- SO 1 calls for one apple and orange
SO 1 calls for one apple and orange
- SO 2 calls for one apple and banana
SO 2 calls for one apple and banana
- SO 3 calls for one apple, orange, and banana
SO 3 calls for one apple, orange, and banana
Apples are stored in Shelf A, oranges in Shelf B, and bananas in Shelf C.
To pick products for three orders at once, the cart is loaded with three empty packages.
Starting at Shelf A, the picker places apples into each package. Next, the picker navigates to
Shelf B, and places oranges in the packages designated for SO 1 and SO 3. Finally, the picker
pushes the cart to Shelf C, and loads packages for SO 2 and SO 3 with a banana, each.
With the packages for all three SOs packed, the picker pushes the cart to the output location,
where the packages are sealed and prepared for shipment.

## Configuration

To enable cluster picking, begin by navigating to Inventory app â£ Configuration
â£ Settings . Under the Operations heading, activate the Packages and Batch, Wave & Cluster Transfers options.
Since batch picking is used to optimize the pick operation in Odoo, the Storage
Locations and Multi-Step Routes options, under the Warehouse heading, must
also be checked on this settings page.
Storage locations allow products to be stored in specific locations they can be picked from, while multi-step routes enable the picking operation itself.
When finished, click Save .

### Packages setup

To configure the containers to be used during the picking process, navigate to Inventory app â£ Products â£ Packages . Click the New button to create
a new package.
On the new package form, the Package Reference is pre-filled with the next available PACK number in the system. Pack Date is automatically set to the creation date of the
form.
`PACK`
Set the Package Use field to Reusable Box .
A package intended for cluster picking is named CLUSTER-PACK-3 for easy identification. For
this workflow, the products are directly packed using their intended shipping boxes, so Package Use is set to Reusable Box .
`CLUSTER-PACK-3`

## Create cluster batch

To create a cluster, navigate to Inventory app and select the operation type card, Delivery Orders or Pick (whichever is the first operation in the delivery
flow).
Cluster pick batches can be created for outgoing shipments in one, two, or three steps.
- Delivery in one step
- Delivery in two steps
Delivery in two steps
- Delivery in three steps
Delivery in three steps
Click the checkbox to the left of the corresponding outgoing operation to add them to the batch.
With the desired pickings selected, click the Actions button, and select
the Add to batch option from the resulting drop-down menu.
To create a cluster batch, as shown in the example above , in a warehouse configured with two-step outgoing
shipments, the following pick operations are selected:
- WH/PICK/00007 : linked to SO 88 for one apple and orange.
WH/PICK/00007 : linked to SO 88 for one apple and orange.
`WH/PICK/00007`
- WH/PICK/00008 : linked to SO 89 for one apple and banana.
WH/PICK/00008 : linked to SO 89 for one apple and banana.
`WH/PICK/00008`
- WH/PICK/00009 : linked to SO 90 for one apple, orange, and banana.
WH/PICK/00009 : linked to SO 90 for one apple, orange, and banana.
`WH/PICK/00009`
Doing so opens an Add to batch pop-up window, wherein the employee Responsible for the picking can be assigned.
Choose from the two options in the Add to field to either: add to an existing
batch transfer , or create a new batch transfer .
Then, add a Description for this batch.
The Description field can be used to add additional information to help workers
identify the source of the batch, where to place the batch, what shipping containers to use, etc.
To create draft batch pickings to be confirmed at a later date, select the Draft checkbox.
Conclude the process by clicking Confirm .

## Process batches

To process batches, navigate to Inventory app â£ Operations â£ Batch Transfers .
Click on a batch to select it.
In the Detailed Operations tab, products that are to be picked are grouped by location.
Set the Destination Package to the package dedicated to that particular order.
Process the cluster batch for the three orders of apples, oranges, and bananas example by assigning each picking to a dedicated package.
At the storage location for apples, WH/Stock/Shelf A , assign the apples in all three pickings
to one of the three reusable packages, CLUSTER-PACK-1 , CLUSTER-PACK-2 , or CLUSTER-PACK-3 .
`WH/Stock/ShelfA`
`CLUSTER-PACK-1`
`CLUSTER-PACK-2`
`CLUSTER-PACK-3`
Record this in Odoo using the Destination Package field in the Detailed
Operations tab.

Configuration
Packages setup
Create cluster batch
Process batches


Wave transfers

# Wave transfers

While a batch transfer is a group of several pickings, a wave transfer contains certain parts
of different pickings. In Odoo, wave transfers are batch transfers with an extra step: transfers are
split before being grouped in a batch.
Wave picking is ideal for warehouses that need to optimize the handling of high order volumes while
managing complex picking criteria. With wave transfers, orders are grouped into waves based on
factors like product location, category, or scheduled shipping times. Each wave is assigned to a
different employee for the most efficient execution.
Wave picking is particularly useful for operations where multiple sales orders (SOs), or a single
order, must be picked across different waves. This approach enables flexible scheduling, allowing
warehouses to align picking activities with shipping deadlines, or resource availability.
- SO 1 calls for one apple and one orange
SO 1 calls for one apple and one orange
- SO 2 calls for one apple and one banana
SO 2 calls for one apple and one banana
- SO 3 calls for one apple, one orange, and two bananas
SO 3 calls for one apple, one orange, and two bananas
Apples are stored in Shelf A, oranges in Shelf B, and bananas in Shelf C. A warehouse employee is
assigned to the wave, and is provided with the following instructions:
- Shelf A: Pick three apples. Place them into a central cart designated for the wave.
Shelf A: Pick three apples. Place them into a central cart designated for the wave.
- Shelf B: Pick two oranges. Add them to the same cart.
Shelf B: Pick two oranges. Add them to the same cart.
- Shelf C: Pick three bananas. Add them to the cart.
Shelf C: Pick three bananas. Add them to the cart.
The employee then takes the cart to the sorting/packing station. Items are then sorted and packed
into individual orders.

## Configuration

To enable wave picking, begin by navigating to Inventory â£ Configuration â£
Settings . In the Operations section, tick the Batch, Wave & Cluster
Transfers checkbox to enable the setting.
Next, the Storage Locations and Multi-Step Routes options, under the Warehouse heading, must also be checked on this settings page.
Storage locations allow products to be stored in specific locations they can be picked from, while multi-step routes enable the picking operation itself.
Then, click Save to save the changes.

## Create a wave

Wave transfers can only contain product lines from transfers of the same operation type. To view
all the transfers and product lines in a specific operation, navigate to the Inventory app . Find the desired Kanban card, then click the (vertical ellipsis) icon to open the options menu. Under New , click Prepare Wave .

### Create a new wave

On the Prepare Wave pop-up, stock moves lines are grouped by source location. Select the
checkboxes for the product lines that should be added. Then, click Add to Wave .
Use the Filters in the search bar to group lines with the same product, location,
carrier, etc.

### Add products to an existing wave

To add products to an existing wave, navigate to Inventory â£ Operations â£ Wave
Transfers . Click on the appropriate wave from the list to open it.
Under the Detailed Operations tab, click Add a line . Then, in the Product field, search for the desired product.

## Process a wave

To view all wave transfers and their statuses, go to Inventory â£ Operations â£
Wave Transfers . Click on the appropriate wave from the list to open it.
To assign the wave to a specific employee, click the Responsible field and select the
appropriate name from the drop-down list.
To designate a Dock location , select an option from the
drop-down menu in the Docks Location field.
The dispatch management system feature in Odoo is used to plan and build shipments. Assigning batches to loading docks ensures
the right products are pack into the appropriate trucks for delivery.
Select a Vehicle from the drop-down. Making a selection in this field automatically
updates the Vehicle Category field.
Enter a Description for this wave, if desired.
The Description field is automatically generated for automatic waves .

## Automatic waves

Waves can be automatically created and assigned based on different criteria. The Automatic Batches option is defined on the operation type level, which enables the creation of waves with distinct
grouping criteria for each operation type.
To enable Automatic Batches , navigate to Inventory app â£ Configuration â£
Operation Types , and select the desired operation type (e.g. Delivery , Pick , etc). Under the Batch & Wave Transfers heading, tick the Automatic Batches checkbox.
Then, select one or more Wave Grouping criteria by ticking the appropriate checkbox.
Even if more than one grouping option is selected, only one wave is created.
Automatic waves can be created based on the following criteria:
- Product : Split transfers by product, then group transfers that have the same product.
Product : Split transfers by product, then group transfers that have the same product.
- Product Category : Split transfers by product category, then group transfers that have
the same product category.
Product Category : Split transfers by product category, then group transfers that have
the same product category.

Configuration
Create a wave
Create a new wave
Add products to an existing wave
Process a wave
Automatic waves


Removal strategies

# Removal strategies

For companies with warehouses, removal strategies determine which products are taken from the
warehouse, and when . For example, for perishable products, prioritizing the picking of goods
with the nearest expiration date helps minimize food spoilage.
The following columns in the table below list the removal strategies available in Odoo, and detail
how pickings are determined along with the picking order. Leverage these removal strategies to have
Odoo automatically select how products are selected for orders:
Alphanumeric name of location
Quantity closest to fulfilling demand
For comprehensive examples for how to use each removal strategy, refer to each individual
documentation page.

## Configuration

Removal strategies are set on either the product category or storage location.
Configure removal strategies on the location by going to Inventory â£ Configuration
â£ Locations , and selecting the desired location. On the location form, choose a removal strategy
from the Removal Strategy fieldâs drop-down menu options.
To set a removal strategy on a location, the Storage Locations and Multi-Step Routes settings must be enabled in Inventory â£
Configuration â£ Settings .
These features are only necessary when setting the removal strategy on a location.
Configure removal strategies on product categories by going to Inventory â£
Configuration â£ Product Categories and selecting the intended product category. Next, choose a
removal strategy from the Force Removal Strategy drop-down menu options.
When there are different removal strategies applied on both the location and product category for
a product, the value set on the Force Removal Strategy field set on a Product Category form is applied as top priority.

## Required features

While some removal strategies are available by default, some additional features must be enabled
in Inventory â£ Configuration â£ Settings for the removal strategy option to
appear in the drop-down menu of the Force Removal Strategy or Removal
Strategy field.
Refer to the table below for a summary of required features. Otherwise, refer to the dedicated
sections for the removal strategy for more details on requirements and usage.
Lots & Serial Numbers
Lots & Serial Numbers
Lots & Serial Numbers, Expiration Date
Storage Locations, Multi-Step Routes

### Lots and serial numbers

Lots and serial numbers differentiate identical products and track information like arrival or
expiration dates. To enable this feature, navigate to Inventory â£ Configuration
â£ Settings . Under the Traceability heading, check the box beside Lots &
Serial Numbers to enable the feature.
Next, ensure the intended product is tracked by lots or serial numbers by navigating to the product
form through Inventory â£ Products â£ Products , and selecting the desired
product. On the product form, switch to the Inventory tab, and under the Tracking field, select either the By Unique Serial Number or By
Lots options.
After enabling the features, assign lot or serial numbers to products using an inventory
adjustment or during product
reception .

### Locations and routes

Storage locations and multi-step routes are necessary features for setting all types of
removal strategies on a location. However, these features are specifically required for the closest
location removal strategy since it is only applied at the location level.
To activate these features, navigate to Inventory â£ Configuration â£ Settings .
Under the Warehouse heading, enable the Storage Location and Multi-Step Routes features.

### Expiration date

Enable the expiration date feature to track expiration dates, best before dates, removal dates,
and alert dates on a lot or serial number by navigating to Inventory â£
Configuration â£ Settings .
Under the Traceability heading, ensure the Lots & Serial Numbers feature is
selected, and then select the check box for Expiration Dates to enable the feature.

### Packages

The packages feature is used to group products together and is required for the least packages
removal strategy.
Navigate to Inventory â£ Configuration â£ Settings and select the check box for
the Packages feature.
- Packages
- 2-step delivery
- 3-step delivery

Configuration
Required features
Lots and serial numbers
Locations and routes
Expiration date
Packages


Closest location removal

# Closest location removal

For the Closest Location removal strategy, products are picked based on the alphanumeric order of
storage location titles.
The goal of this strategy is to save the warehouse worker from taking a long journey to a farther
shelf when the product is also available at a closer location.
About removal strategies
To understand location sequence in the closest removal strategy, consider the following example:
A product is stored in the following locations: Shelf A/Pallet , Shelf A/Rack 1 , and Shelf A/Rack 2 .
`ShelfA/Pallet`
`ShelfA/Rack1`
`ShelfA/Rack2`
The sublocation, Pallet , is on the ground level. Products stored here are easier to retrieve,
compared to requiring a forklift to reach Rack 1 and Rack 2 . The storage locations were
strategically named in alphabetic order, based on ease of access.
`Pallet`
`Rack1`
`Rack2`
To use this removal strategy, the Storage Locations and Multi-Step Routes settings must be enabled in Inventory app â£ Configuration â£ Settings .
Set up removal strategy

## Location names

To configure location names, begin by navigating to Inventory app â£ Configuration
â£ Locations . Then, select an existing location, or click New to create a new one, and
then enter the desired name in the Location Name field.
Once the locations are named in alphabetical order, based on their proximity to the output or
packing location, set the removal strategy on the parent location .
To do that, in the Locations list, select the parent location of the alphabetically
named storage locations.
Doing so opens the form for the parent location. In the Removal Strategy field, select Closest Location .
In a warehouse, the storage location WH/Stock/Shelf 1 is located closest to the packing area,
where products retrieved from shelves are packed for shipment. The popular product, iPhone charger is stored in three locations, WH/Stock/Shelf 1 , WH/Stock/Shelf 2 , and WH/Stock/Shelf 3 .
`WH/Stock/Shelf1`
`iPhonecharger`
`WH/Stock/Shelf1`
`WH/Stock/Shelf2`
`WH/Stock/Shelf3`
To use closest location, set the removal strategy on the parent location, âWH/Stockâ.

## Workflow

To see how the closest location removal strategy works, consider the following example, featuring
the popular product, iPhone charger , which is stored in WH/Stock/Shelf 1 , WH/Stock/Shelf 2 ,
and WH/Stock/Shelf 3 .
`iPhonecharger`
`WH/Stock/Shelf1`
`WH/Stock/Shelf2`
`WH/Stock/Shelf3`
Fifteen, five, and thirty units are in stock at each respective location.
To check the on-hand stock at each storage location, navigate to the product form, and click the On Hand smart button.
Create a delivery order for eighteen units of the iPhone charger by navigating to the Sales app and creating a new quotation.
`iPhonecharger`
After adding the products, clicking Confirm creates a delivery order that reserves items
stored at the closest location, using the removal strategy.
For more details about where the units were picked, select the â¦â£ (bulleted list) icon, located on the far-right. Doing so opens the Open: Stock move pop-up window that
displays how the reserved items were picked, according to the removal strategy.
In the Open: Stock move pop-up window, the Pick from field displays where
the quantities to fulfill the Demand are picked. All fifteen of the units stored at the
closest location, WH/Stock/Shelf 1 , are picked first. The remaining three units are then selected
from the second closest location, WH/Stock/Shelf 2 .
`WH/Stock/Shelf1`
`WH/Stock/Shelf2`


FEFO removal

# FEFO removal

The First Expired, First Out (FEFO) removal strategy targets products for removal based on their
assigned removal dates.
About removal strategies

## Removal date

Products must be removed from inventory before their removal date , which is set as a certain
number of days before the productâs expiration date .
The user sets this number of days by navigating to the product formâs Inventory tab.
Under the Traceability section, ensure the Tracking field is set to either By Lots or By Unique Serial Number .
Next, select the Expiration Date option, which makes the Removal Date field
(and other date fields) appear.
The Lots and Serial Numbers and Expiration Dates features must be
enabled in Inventory app â£ Configuration â£ Settings to track expiration
dates.
The expiration date of a product is determined by adding the date the product was received to the
number of days specified in the Expiration Date field of the product form.
The removal date takes this expiration date, and subtracts the number of days specified in the Removal Date field of the product form.
In the Inventory tab of the product, Egg , the following Dates are set
by the user:
`Egg`
- Expiration Date : 30 days after receipt
Expiration Date : 30 days after receipt
`30`
- Removal Date : 15 days before expiration date
Removal Date : 15 days before expiration date
`15`
A shipment of Eggs arrive at the warehouse on January 1st. So, the expiration date of the Eggs is January 31st (Jan 1st + 30). By extension, the removal date is January 16th (Jan 31 -
15).
To view the expiration dates of items in stock, navigate to the product form, and click the On Hand smart button.
Next, click the additional options icon, located on the far-right, and select the columns: Expiration Date and Removal Date .

## Workflow

Using the FEFO removal strategy ensures that products with the
nearest removal date are picked first.
To understand how this removal strategy works, consider the following example below about the
product, Carton of eggs , which is a box containing twelve eggs.
`Cartonofeggs`
The product is tracked By Lots , and the product categoryâs Force Removal
Strategy is set to First Expired, First Out (FEFO) .
- Set up force removal strategy
Set up force removal strategy
- Enable lots tracking
- Odoo Tutorials: Perishable Products
Odoo Tutorials: Perishable Products
To see the removal strategy in action, go to the Sales app and create a new
quotation.
Clicking Confirm creates a delivery order for today, December 29th, and the lot numbers
with the soonest expiration dates are reserved, using the FEFO removal strategy.
To view the detailed pickings, click the â¦â£ (bulleted list) icon, located on the
far-right of the Carton of eggâs product line, in the Operations tab of the delivery
order. Doing so opens the Open: Stock move pop-up window.
In the Open: Stock move pop-up window, the Pick from field displays where
the quantities to fulfill the Demand are picked from.
Since the order demanded six Cartons of eggs, using the FEFO removal strategy, all five Cartons from LOT1 , with the removal date of February 26th, are picked.
The remaining Carton is selected from LOT2 , which has a removal date of March 4th.
`LOT1`
`LOT2`


FIFO removal

# FIFO removal

The First In, First Out (FIFO) removal strategy selects products with the earliest arrival dates.
This method is useful for companies selling products that have short demand cycles, like clothes,
for example. By using FIFO , companies can prevent prolonged stock
retention of specific styles.
About removal strategies
Various quantities of the product, T-shirt , tracked by lot numbers, arrive on August 1st and
August 25th. For an order made on September 1st, the FIFO removal
strategy prioritizes lots that have been in stock the longest. So, products received on August
1st are selected first for picking.
`T-shirt`
Lot/serial number setup details

## Arrival date

To see the product lot or serial number that arrived in inventory first, navigate to Inventory app â£ Products â£ Lots/Serial Numbers .
Then, select the âï¸ (right-pointing arrow) icon on the left of a product line, in order
to reveal a list of the productâs lots or serial numbers that are in stock. The Created
On field shows the lot/serial number creation date, which is, essentially, the arrival date.
Serial number 00000000500 of the product, Cabinet with Doors , arrived on December 29th, as
displayed in the Created On field.
`00000000500`
`CabinetwithDoors`

## Workflow

To understand how FIFO rotates products out, consider the following
example, focusing on three lots of white shirts.
The shirts are from the All/Clothes category, where FIFO is set as
the Force Removal Strategy .
The white shirts are tracked By Lots in the Inventory tab of the product
form.
- Set up force removal strategy
Set up force removal strategy
- Enable lots tracking
The following table represents the on-hand stock and lot number details of white shirts.
To see the removal strategy in action, create a delivery order for six white shirts by navigating to the Sales app and creating a new quotation.
After clicking Confirm on the sales order, a delivery order with the oldest lot numbers
for shirts are reserved, using the FIFO removal strategy.
To view the detailed pickings, click the â¦â£ (bulleted list) icon, located on the
far-right of the white shirtâs product line in the Operations tab of the delivery order.
Doing so opens the Open: Stock move pop-up window.
In the Open: Stock move pop-up window, the Pick from field displays where
the quantities to fulfill the Demand are picked from. Since the order demanded six
shirts, all five shirts from LOT1 , and one shirt from LOT2 , are selected.
`LOT1`
`LOT2`


Least packages removal

# Least packages removal

The Least Packages removal strategy fulfills an order by opening the fewest number of packages,
which is ideal for maintaining organized stock without needing to open multiple boxes.
- About removal strategies
About removal strategies
- Odoo Tutorials: Least Packages
Odoo Tutorials: Least Packages
To understand how the removal strategy works, consider the following example, featuring a warehouse
that stores packages of flour in bulk packages of 100 kg .
`100kg`
To minimize moisture, and/or prevent pests from entering open packages, the least packages removal
strategy is used to pick from a single, opened package.
A package of 100 kg of flour is depleted to 54 kg after fulfilling some orders. There are
other packages of 100 kg in stock.
`100kg`
`54kg`
`100kg`
- When an order for 14 kg of flour is placed, the package of 54 kg is selected.
When an order for 14 kg of flour is placed, the package of 54 kg is selected.
`14kg`
`54kg`
- When an order for more than 54 kg of flour is placed, an unopened 100 kg package is used
to fulfill the order. While this temporarily results in two open packages, these open packages
are prioritized in the next picking.
When an order for more than 54 kg of flour is placed, an unopened 100 kg package is used
to fulfill the order. While this temporarily results in two open packages, these open packages
are prioritized in the next picking.
`54kg`
`100kg`

## Workflow

Using the least package removal strategy, the fewest number of packages is used to fulfill an order.
The Packages feature must be enabled to use
this strategy.
Consider the following example, featuring the product, Flour . The productâs Units of
Measure field, located on the product form, is set to kg . The product is stored in packages of 100 kg , with one remaining package containing 54 kg . The product categoryâs Force
Removal Strategy is set to Least Packages .
`Flour`
`kg`
`100kg`
`54kg`
- Set removal strategy on product category
Set removal strategy on product category
To check the productâs on-hand stock, navigate to the product form, and click the On
Hand smart button.
Create a delivery order for eighty kilograms of flour by going
to the Sales app and creating a new quotation. After clicking Confirm ,
the delivery order is created.
On the delivery order, the Quantity field displays the amount automatically picked,
according to the removal strategy.
For more details about where the units were picked, select the â¦â£ (bulleted list) icon, located on the far-right. Doing so opens the Open: Stock move pop-up window,
displaying how the reserved items were picked, according to the removal strategy.
In the Open: Stock move pop-up window, the Pick from field displays where
the quantities to fulfill the Demand are picked. Since the order demanded eighty
kilograms, which exceeds the quantity in the opened package of 54 kg , an unopened package of 100 kg is selected.
`54kg`
`100kg`


LIFO removal

# LIFO removal

The Last In, First Out (LIFO) removal strategy picks the newest products on-hand, based on the
date they entered a warehouseâs stock.
Every time an order is placed for products using the LIFO strategy, a
transfer is created for the lot/serial number that has most recently entered the stock (the last lot/serial number that entered the warehouseâs inventory).
About removal strategies
In many countries, the LIFO removal strategy is banned, since it can
potentially result in old, expired, or obsolete products being delivered to customers.
Consider the following example, with the product, Cinder Block , which is tracked By
Lots in the Inventory tab of the product form. The Force Removal Strategy for the cinder blockâs product category is set to Last In, First Out (LIFO) .
`CinderBlock`
- Set up force removal strategy
Set up force removal strategy
- Enable lots tracking
- Check arrival date
The following table represents the cinder blocks in stock, and their various lot number details.
To see the removal strategy in action, create a delivery order for seven cinder blocks by navigating to the Sales app and creating a new
quotation.
Confirm the sales order to create a delivery order. Doing so reserves the newest lot
numbers are using the LIFO removal strategy.
To view the detailed pickings, click the â¦â£ (bulleted list) icon, located on the
far-right of the cinder blockâs product line in the Operations tab of the delivery
order. Doing so opens the Open: Stock move pop-up window.
In the Open: Stock move pop-up window, the Pick from field displays where
the quantities to fulfill the Demand are picked from. Since the order demanded seven
cinder blocks, the newest cinder blocks from LOT3 are selected, using the LIFO removal strategy.
`LOT3`


Reservation methods

# Reservation methods

Companies that sell and deliver goods to customers need to make sure they always have stock on-hand,
so when new sales orders are confirmed, they can deliver products on time.
In Odoo, this can be handled using reservation methods . Reservation methods control how products
included in a delivery order (DO) should be reserved for delivery, ensuring they are reserved at the
correct times, for the correct orders.
There are three different reservation methods in Odoo: At Confirmation , Manually , and Before
scheduled date .
Reserves products only when a sales order is confirmed, and if stock is already
available.
Once a quote is confirmed, product availability must be checked manually, and the required
quantity must be reserved manually.
A specific number of days can be selected; this is the maximum number of days before a
scheduled delivery date that products should be reserved.

## Configuration

Reservation methods are set on individual operations types. To configure reservation methods, go to Inventory app â£ Configuration â£ Operations Types . Then, select the desired
operation type. Or, create a new one by clicking New .
In the General tab of the operation type form, locate the Reservation Method option, and choose which method should be used for this type of operation.
If the Before scheduled date reservation method is selected, a new Reserve before scheduled date field appears below. From this field, the number of days before and days before when starred can be changed from the default 0 .
`0`
Changing the days before value changes the maximum number of days before a scheduled
date that products should be reserved.
Changing the days before when starred value changes the maximum number of days before
a scheduled date that starred (favorited) transfers for products should be reserved.

## Required applications

The two required applications that must be installed to use reservation
methods are the Sales and Inventory apps.
In addition to delivery orders, reservation methods can also be used for manufacturing orders , resupply subcontractor orders, orders for repairs , and internal transfers , if desired. To
enable this, configure the additional settings:
- For manufacturing orders: Install the Manufacturing application by going to the Apps application, locating the Manufacturing app, and clicking Install .
For manufacturing orders: Install the Manufacturing application by going to the Apps application, locating the Manufacturing app, and clicking Install .
- For resupply subcontractor: Navigate to Manufacturing app â£ Configuration
â£ Settings , and under the Operations section, enable Subcontracting .
Then, click Save .
For resupply subcontractor: Navigate to Manufacturing app â£ Configuration
â£ Settings , and under the Operations section, enable Subcontracting .
Then, click Save .
- For repairs: Install the Repairs application by going to the Apps application, locating the Repairs app, and clicking Install .
For repairs: Install the Repairs application by going to the Apps application, locating the Repairs app, and clicking Install .
- For internal transfers: Navigate to Inventory app â£ Configuration â£
Settings , and under the Warehouse section, enable Storage Locations .
Then, click Save .
For internal transfers: Navigate to Inventory app â£ Configuration â£
Settings , and under the Warehouse section, enable Storage Locations .
Then, click Save .
Once these apps are installed, no additional features need to be enabled from the settings for
reservation methods to work. They will be available by default on certain operations types, and can
be viewed and changed by navigating to Inventory app â£ Configuration â£
Operations Types , and then clicking on a specific operations type.
When the Type of Operation is changed to Receipt on an Operations Type form, reservation methods are not available.
- At confirmation reservation
At confirmation reservation
- Manual reservation
- Before scheduled date reservation
Before scheduled date reservation


At confirmation reservation

# At confirmation reservation

The at confirmation reservation method reserves products only when a sales order (SO) is
confirmed, and if enough stock of the products included in the SO is already available.
About reservation methods

## Configuration

To set the reservation method to at confirmation , navigate to Inventory app â£
Configuration â£ Operations Types . Then, select the desired Operation Type to
configure, or create a new one by clicking New .
In the General tab on the operation type form, locate the Reservation Method field, and select At Confirmation .

## Workflow

To see the at confirmation reservation method in action, create a new SO by navigating to Sales app â£ New .
Add a customer in the Customer field. Then, in the Order Lines tab, click Add a product , and select a product to add to the quotation from the drop-down menu.
Finally, in the Quantity column, adjust the desired quantity of the product to sell.
Once ready, click Confirm to confirm the sales order.
Click the ð (area graph) icon on the product line to reveal the productâs Availability tooltip, which reveals the Reserved number of units for this
order.
If there is not sufficient quantity of stock for the product included in the SO , the ð (area graph) icon is red, instead of green.
Instead of revealing the reserved number of units for the order, the Availability tooltip reads Available , and reveals the available number of units (e.g., 0 Units ).
`0Units`
To see all the factors that affect product reservation, click the View Forecast internal link arrow to view the Forecasted Report dashboard.
The Forecasted Report displays forecast information about the product(s) included in
the sales order; namely, any live receipts of the product, and any active sales orders, which are
listed in the Used By column. See how each order is fulfilled in the Replenishment column.
Additionally, the Forecasted quantity is calculated at the top of the page, by adding
the On Hand and Incoming quantity, and subtracting the Outgoing quantity, as shown below:
If one order should be prioritized over another order, click the Unreserve button on
the corresponding order line in the Replenishment column.
To deliver the products, click the Delivery smart button at the top of the sales order
form. To confirm that the reservation worked properly, ensure that the Product
Availability field reads Available (in green text), and the numbers in the Demand and Quantity columns match (in this case, both should read 100.00 ).
`Available`
`100.00`
Once ready, click Validate .
- Manual reservation
- Before scheduled date reservation
Before scheduled date reservation


Before scheduled date reservation

# Before scheduled date reservation

The Before scheduled date reservation method allows users to select a specific number of days that
act as the maximum number of days before a scheduled delivery date, when products included in a
sales order (SO) should be reserved.
About reservation methods

## Configuration

To set the reservation method to Before scheduled date , navigate to Inventory app
â£ Configuration â£ Operations Types . Then, select the desired Operation Type to
configure, or create a new one by clicking New .
In the General tab, locate the Reservation Method field, and select Before scheduled date .
When the Type of Operation is changed to Receipt on an Operations Type form, reservation methods are not available.
Once selected, a new Reserve before scheduled date field appears below. From this field,
the number of days before and days before when starred can be changed from
the default 0 .
`0`
Changing the days before value changes the maximum number of days before a scheduled
date that products should be reserved.
Changing the days before when starred value changes the maximum number of days before a
scheduled date that products should be reserved if the transfers are starred (favorited).
Here, the days before value is set to 2 days before, and the days before
when starred value is set to 3 .
`2`
`3`
This means products are reserved two days before the scheduled delivery date for normal orders,
and three days before the scheduled delivery date for starred (favorited) transfers.
This is the configuration applied for the following workflow found below.

### Edit product form

Before the Before scheduled date reservation method can be used, ensure that a customer lead
time is added to products that plan to be sold with this method.
To do that, navigate to Inventory app â£ Products â£ Products , and select the
desired product to configure.
On the product form, click the Inventory tab, and under the Logistics section, change the value in the Customer Lead Time field.
For this example workflow, change it to 5 days.
`5`
This sets the scheduled delivery date for this specific product to five days after the creation date
of the sales order.

## Workflow

To see the Before scheduled date reservation method in action, create a new SO by navigating to Sales app â£ New .
Add a customer in the Customer field, then, in the Order Lines tab, click Add a product , and select a product from the drop-down menu that has a configured customer lead time , to add to the quotation form.
Finally, in the Quantity column, adjust the desired quantity of the product to sell.
For this sample workflow, set the Quantity to 10 .
`10`
Once ready, click Confirm to confirm the sales order.
Click the green ð (area graph) icon on the product line to reveal the productâs Availability tooltip. This tooltip reveals the reserved number of units for this order.
Because the reservation method is set to Before scheduled date , the Reserved quantity
reads 0 Units .
`0Units`
However, below that quantity reads Available in stock . This is because the quantity is available,
but the scheduled date, for this example workflow, is five days from the order date.
`Availableinstock`
Since reservation is not until two days before the scheduled delivery, it will not reserve the
products until then.
If there is not sufficient quantity of stock for the product included in the SO , the ð (area graph) icon is red, instead of green.
Instead of revealing the reserved number of units for the order, the Availability tooltip reads Reserved , and reveals the available number of units (e.g., 0 Units ).
`0Units`
Additionally, unless there is a set replenishment or a live receipt, it also reads No
future availability , in red text.
Click the Delivery smart button to see the delivery order form.
On the delivery order form, the status in the Product Availability field is listed as Available , in yellow text, instead of green. This is because there is sufficient stock on-hand for
this order, but no quantity has been reserved yet.
`Available`
Note the Scheduled Date field, above the Product Availability field,
displays the date five days from the order creation date. This indicates that the products are not
reserved until three days from todayâs date (two days before the scheduled delivery date).
In the Operations tab on the Product line, the numbers in the Demand column and the Quantity column do not match (in this case, the Demand column lists 10.00 , while the Quantity column lists 0 ).
`10.00`
`0`
The Quantity column lists 0 because the products arenât reserved until two days before their delivery date. Odoo automatically reserves the products once the scheduled date
arrives, at which point the Demand and Quantity columns will match.
`0`
If the products in the SO should be reserved sooner than the scheduled reservation date, the
reservation can be manually overridden. To manually reserve the products sooner than scheduled,
click Check Availability at the top of the form.
This turns the Available status in the Product Availability field green, and
changes the number in the Quantity column to match the Demand column.
`Available`
Once ready, click Validate .
- Manual reservation
- At confirmation reservation
At confirmation reservation

Configuration
Edit product form
Workflow


Manual reservation

# Manual reservation

Unlike the At Confirmation reservation method, the Manually reservation method does not reserve products automatically.
Instead, once a sales order (SO) is confirmed, product availability must be checked manually,
and the required quantity must be reserved manually.
About reservation methods

## Configuration

To set the reservation method to Manually , navigate to Inventory app â£
Configuration â£ Operations Types . Then, select the desired Operation Type to be
configured, or create a new one by clicking New .
In the General tab, locate the Reservation Method field, and select Manually .
When the Type of Operation is changed to Receipt on an Operations Type form, reservation methods are not available.

## Workflow

To see the Manually reservation method in action, create a new SO by navigating to Sales app â£ New .
Add a customer in the Customer field. Then, in the Order Lines tab, click Add a product , and select a product to add to the quotation from the drop-down menu.
Finally, in the Quantity column, adjust the desired quantity of the product to sell.
Once ready, click Confirm to confirm the sales order.
Click the green ð (area graph) icon on the product line to reveal the productâs Availability tooltip. This tooltip reveals the reserved number of units for this order.
Because the reservation method is set to Manually , the Reserved quantity reads 0 Units .
`0Units`
However, below that quantity reads Available in stock . This is because the quantity is available,
but must be manually reserved.
`Availableinstock`
If there is not sufficient quantity of stock for the product included in the SO , the ð (area graph) icon is red, instead of green.
Instead of revealing the reserved number of units for the order, the Availability tooltip reads Reserved , and reveals the available number of units (e.g., 0 Units ).
`0Units`
Additionally, unless there is a set replenishment or a live receipt, it also reads No
future availability , in red text.
Once the SO is confirmed, navigate to the Inventory app , and locate the Delivery Orders card on the Inventory Overview page.
The Delivery Orders card displays the current status of live orders, including those
with a Waiting status. Orders with this status indicate that the products in those
orders have either not been reserved yet, or are not in stock at all.
To see the SO created previously, click the (#) Waiting button on the card (in this
case, 8 Waiting ).
`8Waiting`
Locate the delivery order (DO) tied to the SO that was previously created, and click the line to
view it.
On the Delivery Order form, the status in the Product Availability field is
listed as Available , in yellow text, instead of green. This is because there is sufficient stock
on hand for this order, but no quantity has been reserved yet.
`Available`
In the Operations tab, on the Product line, the numbers in the Demand column and the Quantity column do not match.
In this case, the Demand column lists 10.00 , while the Quantity column
lists 0 .
`10.00`
`0`
To manually reserve the specified quantity of the product for this order, click the Check Availability button at the top of the form. Doing so turns the Available status
in the Product Availability field green, and changes the number in the Quantity column to match the Demand column.
`Available`
This is because there is sufficient quantity in stock to reserve for the order.
Once ready, click Validate .
Multiple orders with a Waiting status can be manually reserved at the same time, and set to Ready status.
To do that, open the Inventory app, which reveals the Inventory
Overview page. The Inventory Overview page is also accessible by navigating to Inventory app â£ Overview .
From the Inventory Overview page, click the (#) Waiting button on the Delivery Orders card.
Then, tick the checkboxes to the left of each desired order, or tick the checkbox in the header
row, to the far-left, to select all orders on the page at once.
Then, click the Check Availability button at the top of the page.
If the products included in every selected order have enough stock on-hand, this reserves the
products, and moves the order into Ready status. Upon receiving a Ready status, the order disappears from the Waiting list.
If there is not enough stock on-hand, the order retains its current status, and remains on the
list.
- At confirmation reservation
At confirmation reservation
- Before scheduled date reservation
Before scheduled date reservation


Delivery methods

# Delivery methods

In Odoo, delivery methods make it possible to calculate shipping costs directly on sales orders
and e-commerce carts, providing customers and sales teams with accurate shipping fee information.
This transparency helps close sales by showing customers the exact cost for each shipping carrier or
delivery timeframe.
When activated in Odoo, the Delivery Methods setting adds the option of calculating the cost of
shipping on sales orders and e-commerce shopping carts.
When integrated with a third-party carrier , shipping prices
are calculated based on the carrierâs pricing information.
- Third-party shipping carrier setup
Third-party shipping carrier setup
- Odoo Tutorials: Delivery Prices
Odoo Tutorials: Delivery Prices

## Configuration

To calculate shipping on sales orders and e-commerce, the Delivery Costs module must be
installed. To do so, navigate to the Apps application from the main Odoo dashboard.
Then, remove the Apps filter, and type in Delivery Costs in the search bar. After
finding the Delivery Costs module, click Install to install it.
`DeliveryCosts`

## Add shipping

Shipping methods are added to sales orders in the form of delivery products, which appear as
individual line items. First, navigate to the desired sales order by going to Sales
app â£ Orders â£ Orders .
Open the desired sales order, then click the Add shipping button. The Add a
shipping method pop-up window opens. Then, using the drop-down menu, select an available shipping
method.
The Total Order Weight is pre-filled based on product weights (that are defined in the Inventory tab for each product form). Edit the
field to specify the exact weight, and then click Add to add the shipping method.
The amount defined in Total Order Weight overwrites the total product weights defined
on the product form.
Some connected shipping methods require obtaining rates from the carrier. In this situation,
click the Get rate button, and the shipping costs are
automatically updated from the carrier. These rates cannot be modified.
The shipping cost is added as a line item in the Order Lines tab as the Delivery Product detailed on the shipping method form.
A customer purchased a left-sided desk with storage and requested the item be delivered by hand.
This delivery method is defined as Furniture Delivery (Manual) and has a cost of $200 . The
sales order contains two line items: one for the desk, and another for the delivery method.
`FurnitureDelivery(Manual)`
`$200`

### Delivery order

The shipping method added to the sales order is linked to the shipping carrier details on the
delivery order. After confirming the order, a Delivery smart button
appears at the top of the page. Click the Delivery smart button to open
the warehouse delivery form. To add or change the delivery method on the delivery itself, open the Additional Info tab and modify the Carrier field.

## Supported hardware

For label printers, Odoo recommends the Zebra ZD411 , as Odoo
supports the ZPL protocol for automatic printing from a point of sale.
This printer has been tested on most label formats (PDF, PNG, ZPL) for all carriers that Odoo
supports.

Configuration
Add shipping
Delivery order
Supported hardware