[IMP] Inventory: Inventory doc improvement to fit Odoo 13

This commit is contained in:
Lau-Odoo 2020-03-09 15:52:30 +01:00
parent e477b619b9
commit b932426df7
58 changed files with 299 additions and 404 deletions

View File

@ -7,8 +7,7 @@ Concepts
:glob:
concepts/use_routes
concepts/procurement_rule
concepts/push_rule
concepts/pull_push_rules
concepts/inter_warehouse
concepts/cross_dock
concepts/stock_warehouses

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,73 +0,0 @@
===========================
What is a procurement rule?
===========================
Overview
========
The procurement inventory control system begins with a customer's order.
With this strategy, companies only make enough product to fulfill
customer's orders. One advantage to the system is that there will be no
excess of inventory that needs to be stored, thus reducing inventory
levels and the cost of carrying and storing goods. However, one major
disadvantage to the pull system is that it is highly possible to run
into ordering dilemmas, such as a supplier not being able to get a
shipment out on time. This leaves the company unable to fulfill the
order and contributes to customer dissatisfaction.
An example of a pull inventory control system is the make-to-order. The
goal is to keep inventory levels to a minimum by only having enough
inventory, not more or less, to meet customer demand. The MTO system
eliminates waste by reducing the amount of storage space needed for
inventory and the costs of storing goods.
Configuration
=============
Procurement rules are part of the routes. Go to the Inventory
application>Configuration>Settings and tick "Advance routing of products
using rules".
.. image:: media/procurement_rule01.png
:align: center
Procurement rules settings
==========================
The procurement rules are set on the routes. In the inventory
application, go to :menuselection:`Configuration --> Routes`.
In the Procurement rules section, click on Add an item.
.. image:: media/procurement_rule02.png
:align: center
Here you can set the conditions of your rule. There are 3 types of
action possible :
- Move from another location rules
- Manufacturing rules that will trigger the creation of manufacturing
orders
- Buy rules that will trigger the creation of purchase orders
.. note::
The Manufacturing application has to be installed in order to
trigger manufacturing rules.
.. note::
The Purchase application has to be installed in order to trigger
**buy** rules.
.. image:: media/procurement_rule03.png
:align: center
.. note::
Some Warehouse Configuration creates routes with procurement
rules already defined.
.. seealso::
* :doc:`push_rule`
* :doc:`inter_warehouse`
* :doc:`cross_dock`

View File

@ -0,0 +1,116 @@
===========================
What are Pull & Push Rules?
===========================
In inventory management, the supply chain strategy determines when
products should be fabricated, delivered to distribution centers and
made available in the retail channel.
Under a pull supply chain, actual customer demand drives the process,
while push strategies are driven by long-term projections.
Pull Inventory Control System
=============================
The *procurement inventory control system* begins with a customer's
order. With this strategy, companies only produce enough to fulfill their
customer's orders. One advantage is that there are no
extra goods that need to be stored, thus reducing inventory levels
and the cost of carrying and storing. However, one major
disadvantage to the pull system is that it is highly possible to run
into ordering dilemmas, such as a supplier not being able to get a
shipment out on time. This leaves the company unable to fulfill the
order and contributes to customer dissatisfaction.
An example of a pull inventory control system is the make-to-order. The
goal is to keep inventory levels to a minimum by only having enough
inventory to meet customer's demand. The :abbr:`MTO (Make-to-order)` system
eliminates waste by reducing the amount of storage space needed for
inventory and the costs of storing goods.
Push Inventory Control System
=============================
The *push system of inventory control* involves forecasting inventory
needs to meet customer's demand. Companies must predict which products
customers will purchase along with determining what quantity of goods
will be purchased. The company will, in turn, produce enough product to
meet the forecast demand and sell, or push, the goods to the consumer.
Disadvantages of the push inventory control system are that forecasts
are often inaccurate as sales can be unpredictable and vary from one
year to the next, but it also increases the company's costs for storing
these goods if the minimum stock isnt well defined. An advantage of the push system is that the
company is fairly assured it will have enough product on hand to complete customer orders,
preventing the inability to meet customer demand for the product.
A push flow indicates how locations are chained with other ones. As soon
as a given quantity of products is moved in the source location, a
chained move is automatically foreseen according to the parameters set
on the flow specifications (destination location, delay, type of move).
It can be triggered automatically or manually.
Configuration
=============
Pull and push rules are part of the routes. Go to :menuselection:`Inventory --> Configuration -->
Settings` and tick *Multi-Step Routes*.
.. image:: media/pull_push_rules_01.png
:align: center
:alt: Enabling multi-step routes to use pull and push rules
.. Note::
Storage Locations are automatically activated at the same time as
Multi-Step Routes.
Rules settings
==============
The rules are defined on the routes. In the inventory application, go to
:menuselection:`Inventory --> Configuration --> Routes`. In the *Rules* section, click on *Add a line*.
.. image:: media/pull_push_rules_02.png
:align: center
:alt: Add a line on Odoo routes to use Pull & Push rules
Here you can set the action to be triggered by the rule. Choose from:
- **Pull From**: this rule will be triggered by a need for the product in a specific stock
location. The need can come from a sale order which has been validated or for a manufacturing order
which requires a specific component. When the need appears in the source location, Odoo generates a
picking to fulfill this need thanks to the pull rule.
- **Push To**: this rule will be triggered by the arrival of some products in the defined source
location. In case you move products to the source location, Odoo generates a picking to move those
products to the destination location.
- **Push & Pull**: it allows to generate a picking in the two different situations explained above,
when products are required in a specific source location as well as when they are pushed to a
specific source location.
- **Buy**: when products are needed the source 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.
- Many translated example sentences containing
.. image:: media/pull_push_rules_03.png
:align: center
:alt: Creating rules inside of Routes
The *Operation Type* allows you to define which kind of picking will
be created from this rule, in the example, I would like to create an
internal transfer.
The *Supply Method* allows you to define what happens at the source
location:
- **Take From Stock**: the products will be taken from the available stock of the source location.
- **Trigger Another Rule**: the system will try to find a stock rule to bring the products in the
source location. The available stock will be ignored.
- **Take From Stock, if Unavailable, Trigger Another Rule**: the products will be taken from the
available stock of the source location. If there is no stock available, the system will try to find
a rule to bring the products in the source location.
In the *Scheduling* section, you can determine how will Odoo behave
when one of the pickings of the chain is rescheduled. In case you decide
to Propagate Rescheduling, the next move will also be rescheduled. In
case you prefer to have the choice to manually reschedule the next move
or not, you can decide to receive an alert about it under the form of
the next activity.

View File

@ -1,81 +0,0 @@
====================
What is a push rule?
====================
Overview
=========
The push system of inventory control involves forecasting inventory
needs to meet customer demand. Companies must predict which products
customers will purchase along with determining what quantity of goods
will be purchased. The company will in turn produce enough product to
meet the forecast demand and sell, or push, the goods to the consumer.
Disadvantages of the push inventory control system are that forecasts
are often inaccurate as sales can be unpredictable and vary from one
year to the next. Another problem with push inventory control systems is
that if too much product is left in inventory, this increases the
company's costs for storing these goods. An advantage to the push system
is that the company is fairly assured it will have enough product on
hand to complete customer orders, preventing the inability to meet
customer demand for the product.
A push flow indicates how locations are chained with the other ones. As
soon as a given quantity of products is moved in the source location, a
chained move is automatically foreseen according to the parameters set
on the flow specification (destination location, delay, type of move,
journal). It can be triggered automatically or manually.
Configuration
=============
Push rules are part of the routes. Go to the menu
:menuselection:`Inventory --> Configuration --> Settings`
and tick **Advance routing of products using rules**.
.. image:: media/push_rule01.png
:align: center
Push rules settings
===================
The push rules are set on the routes.
Go to :menuselection:`Configuration --> Routes`.
In the push rule section, click on **Add an item**.
.. image:: media/push_rule02.png
:align: center
Here you can set the conditions of your rule. In this example, when a
good is in **Input location**, it needs to be moved to the quality control.
In the 3 steps receipts, another push rule will make the goods that are
in the quality control location move to the stock.
.. image:: media/push_rule03.png
:align: center
.. note::
Some warehouse configuration creates routes with push rules
already defined.
Stock transfers
===============
The push rule will trigger stock transfer. According to the rule set on
your route, you will see that some transfers might be ready and other
are waiting.
The push rule that was set above will create moves from **WH/Input**
location to the **WH/Quality Control** location.
.. image:: media/push_rule04.png
:align: center
In this example, another move is waiting according to the second push
rule, it defines that when the quality control is done, the goods will
be moved to the main stock.
.. seealso::
* :doc:`procurement_rule`
* :doc:`inter_warehouse`
* :doc:`cross_dock`

View File

@ -1,154 +1,144 @@
==================
How to use routes?
==================
==========
Use Routes
==========
Overview
========
A route is a collection of :doc:`push and pull rules <pull_push_rules>`. In Odoo, you can manage
advanced push/pull routes configurations, like:
A route is a collection of procurement rules and push rules. Odoo can
manage advanced push/pull routes configuration, for example:
- Manage product manufacturing chains;
- Manage default locations per product;
- Define routes within your warehouse according to the business needs, such as quality control, after-sales services or supplier returns;
- Help rental management, by generating automated returning moves for rented products.
- Manage product manufacturing chains
- Manage default locations per product
- Define routes within your warehouse according to business needs, such
as quality control, after sales services or supplier returns
- Help rental management, by generating automated return moves for
rented products
.. note::
- You can find documentation about those subjects :doc:`../../inventory`
Configuration
=============
Procurement rules are part of the routes. Go to the **Inventory**
application, :menuselection:`Configuration --> Settings` and tick
**Advance routing of products using rules**.
To configure routes, go to :menuselection:`Inventory --> Configuration --> Settings` and enable
the *Multi-Step Routes* feature.
.. image:: media/use_routes01.png
.. note::
Enabling the *Multi-Step Routes* automatically enables the *Storage Location* feature too.
.. image:: media/use_routes_01.png
:align: center
:alt: Enabling multi-step routes to work with routes
Pre-configured routes
Pre-Configured Routes
=====================
Odoo has some pre-configured routes for your warehouses.
Of course, Odoo offers some pre-configured routes for your warehouses. To
see them, open the *Warehouses* menu, under *Configuration*.
In the Inventory application, go to
:menuselection:`Configuration --> Warehouses`.
In the *Warehouse Configuration* tab, some routes are automatically
created based on your choices for *Incoming Shipments* and *Outgoing
Shipments*.
In the **Warehouse Configuration** tab, **Incoming Shipments** and **Outgoing
Shippings** options set some routes according to your choices.
.. image:: media/use_routes02.png
.. image:: media/use_routes_02.png
:align: center
:alt: automatically generated routes for incoming and outgoing shipments
Custom Routes
=============
In the **Inventory** application, go to
:menuselection:`Configuration --> Routes`.
.. image:: media/use_routes03.png
:align: center
First, you have to select the places where this route can be selected.
You can combine several choices.
In the *Inventory* application, open :menuselection:`Configuration --> Routes`. Then,
you have to select the places where this route can be selected. You can
combine several choices if needed.
Routes applied on warehouses
----------------------------
If you tick **Warehouses**, you have to choose on which warehouse it will
be applied. The route will be set for all transfer in that warehouse
that would meet the conditions of the procurement and push rules.
If you tick *Warehouses*, you have to choose on which warehouse it
will be applied. The route will be set for all transfers in that
warehouse that would meet the conditions of the pull and push rules.
.. image:: media/use_routes04.png
.. image:: media/use_routes_03.png
:align: center
:alt: Applicable routes on warehouse
Routes applied on products
---------------------------
Routes applied to products
--------------------------
If you tick **Products**, you have to manually set on which product it
will be applied.
If you choose *Products*, you have to manually set on which product it
is applied.
.. image:: media/use_routes05.png
.. image:: media/use_routes_04.png
:align: center
:alt: Applicable routes on products
Open the product on which you want to apply the routes
(:menuselection:`Inventory --> Control --> Products`).
In the Inventory Tab, select the route(s):
To do so, open the product on which you want to apply the routes. Open
the *Inventory tab* and select the route youve created.
.. image:: media/use_routes06.png
.. image:: media/use_routes_05.png
:align: center
:alt: Choosing products the route is applicable on
Routes applied on Product Category
----------------------------------
If you tick **Product Categories**, you have to manually set on which
categories it will be applied.
Then, you can also choose to apply routes to *product categories*.
Just like you did for products, you have to manually set on which
categories it must be applied.
.. image:: media/use_routes07.png
.. image:: media/use_routes_06.png
:align: center
:alt: Applicable routes on product categories
Open the product on which you want to apply the routes
(:menuselection:`Configuration --> Product Categories`).
Select the route(s) under the **Logistics** section :
To do so, open the product category you want to apply the route to.
Then, select the route under the *Logistic* section.
.. image:: media/use_routes08.png
.. image:: media/use_routes_07.png
:align: center
:alt: Routes registration in the product category logistics field
Routes applied on Sales Order lines
Routes applied on Sales Order Lines
-----------------------------------
If you tick **Sales order lines**, you have to manually set the route
every time you make a sale order.
You can also apply routes on sales order lines. For that, tick *Sales
Order Lines* on your route form.
.. image:: media/use_routes09.png
.. image:: media/use_routes_08.png
:align: center
:alt: Applicable routes on sales order lines
In order to make it work, you also have to activate the use of the
routes on the sales order.
Next, open a sale order. You can now add the *Route* in the view. Once
done, you can choose the routes for each of your sales orders lines.
In the Sales application, go to
:menuselection:`Configuration --> Settings` and tick
**Choose specific routes on sales order lines (advanced)**.
.. image:: media/use_routes10.png
.. image:: media/use_routes_09.png
:align: center
:alt: Enabling the routes on sales order lines
You can now choose the routes for each lines of your sales orders:
.. image:: media/use_routes11.png
.. image:: media/use_routes_10.png
:align: center
:alt: Sales orders showing the routes between the description and quantity
Procurement and push rules
==========================
Pull and Push Rules
-------------------
Please refer to the documents:
For detailed explanations about *Pull and Push Rules*, please refer to the following
documentation: :doc:`pull_push_rules`.
- :doc:`procurement_rule`
Pull Configuration
------------------
- :doc:`push_rule`
When making a procurement request, you can force the route you want to
use. On the product form, click on *Replenish*. Then, choose the route you
want to use.
Procurement configuration
=========================
When doing a procurement request, you can force the route you want to
use. On the product (:menuselection:`Inventory Control --> Products`),
click on **Procurement Request**. Choose the route you want to use next to
**Preferred Routes**:
.. image:: media/use_routes12.png
.. image:: media/use_routes_11.png
:align: center
:alt: Product replenishment
Make-to-Order Route
===================
.. image:: media/use_routes_12.png
:align: center
:alt: Replenishment with preferred routes and chosen quantity
If you work with no stock, or with minimum stock rules, it is better to
use the **Make To Order** route. Combine it with the route **Buy** or
**Manufacture** and it will trigger automatically the purchase order or
the Manufacturing Order when your products are out-of-stock.
Replenish on Order (MTO) Route
------------------------------
.. seealso::
* :doc:`push_rule`
* :doc:`inter_warehouse`
* :doc:`cross_dock`
If you do not work with stock, it is better to use the *Replenish on Order
(MTO)* route. Combined with the *Buy* or *Manufacturing* routes, it
automatically triggers the purchase order or manufacturing order
when your products are out-of-stock.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,192 +1,136 @@
==================================================
What is a removal strategy (FIFO, LIFO, and FEFO)?
What is a Removal Strategy (FIFO, LIFO, and FEFO)?
==================================================
Overview
========
Removal strategies are usually in picking operations to select the best
products in order to optimize the distance for the worker, for quality
control purpose or due to reason of product expiration.
Removal strategies are a set of rules defined in picking operations that change which products
are moved first. A removal strategy can optimize the distance for the worker, for
quality control purposes or to first move the products with the closest
expiration date.
When a product movement needs to be done, Odoo will find available
products that can be assigned to shipping. The way Odoo assign these
products depend on the **removal strategy** that is defined on the **product
category** or on the **location**.
products that can be assigned to the transfer. The way Odoo assigns
these products depends on the *removal strategy* that is defined in
the *product category* or on *the location*.
Configuration
=============
In the **Inventory** application, go to :menuselection:`Configuration
--> Settings`:
In order to be able to identify some units from other ones, in Odoo, you
need to track them either by lot or by serial number. Go to
:menuselection:`Inventory --> Configuration --> Settings`.
.. image:: media/removal01.png
Activate *Storage Locations*, *Multi-Step Routes* and *Lots &
Serial Numbers*.
.. image:: media/removal_01.png
:align: center
:alt: Enabling lots and serial numbers to use FIFO, LIFO and FEFO strategies
.. image:: media/removal02.png
In case you want to work with FEFO, *Expiration Dates* should also be
activated.
You can then define your removal strategy, either on *Product
Categories* via the :menuselection:`Inventory --> Configuration --> Product
Categories`, or on *Locations*, in :menuselection:`Inventory -->
Configuration --> Locations`.
.. image:: media/removal_02.png
:align: center
:alt: Selecting the good removal strategy on the product category form
Check **Track lots or serial numbers**, **Manage several location per
warehouse** and **Advanced routing of products using rules**, then click
on **Apply**.
Then, open :menuselection:`Configuration --> Locations`
and open the location on which you want to apply a removal strategy.
.. image:: media/removal03.png
.. image:: media/removal_03.png
:align: center
:alt: Selecting the removal strategy on the location form
Types of removal strategy
=========================
Removal Strategy Types
======================
FIFO (First In First Out)
---------------------------
-------------------------
A **First In First Out** strategy implies that the products that were
stocked first will move out first. Companies should use FIFO method if
they are selling perishable goods. Companies selling products with
A First In First Out strategy implies that the products that were
stocked first are moved out first. Companies should use the FIFO method
if they are selling perishable goods. Companies selling products with
relatively short demand cycles, such as clothes, also may have to pick
FIFO to ensure they are not stuck with outdated styles in inventory.
Go to :menuselection:`Inventory --> Configuration --> Locations`,
open the stock location and set **FIFO** removal strategy.
Go to :menuselection:`Inventory > Configuration > Locations`, open the Stock location and
set FIFO as the removal strategy.
Let's take one example of FIFO removal strategy.
In your stock location (WH/Stock), there are 3 lots of Hand Cream
available.
In your warehouse stock (``WH/Stock``) location, there are ``3`` lots of ``iPod
32 Gb`` available.
You can find details of available inventory in inventory valuation
report.
.. image:: media/removal04.png
.. image:: media/removal_04.png
:align: center
:alt: View of stock location with products in it
Create one sales order ``25`` unit of ``iPod 32 GB`` and confirm it.
Create a sales order for 25 units of Hand Cream and validate it. If you
go on the delivery order linked to the picking, you can see that the
oldest lot numbers have been automatically reserved thanks to the FIFO
removal strategy.
You can see in the outgoing shipment product that the ``Ipod 32
Gb`` are assigned with the **oldest** lots, using the FIFO removal
strategy.
.. image:: media/removal05.png
.. image:: media/removal_05.png
:align: center
:alt: View of reserved products to deliver a customer thanks to removal strategies
LIFO (Last In First Out)
------------------------
In this warehouse management, the products which are brought in the
last, moves out the first. LIFO is used in case of products which do not
have a shelf life.
In LIFO, the products which are brought the last move out the first.
LIFO is used when products do not have a shelf life.
Go to :menuselection:`Inventory --> Configuration --> Locations`,
open the stock location and set **LIFO** removal strategy.
Go to :menuselection:`Inventory --> Configuration --> Locations`, open the location WH/Stock
and set the LIFO removal strategy. With the exact same data in the
database, we can now see that on the picking, the lot numbers which are
privileged are the ones created the last.
In our example, let's check the current available stock of ``Ipod 32 Gb``
on ``WH/Stock`` location.
.. image:: media/removal06.png
:align: center
Create a sale order with ``10`` units of ``Ipod 32 Gb``.
You can see in the outgoing shipment product that the ``Ipod 32
Gb`` are assigned with the **newest** lots, using the LIFO removal
strategy.
.. image:: media/removal07.png
.. image:: media/removal_06.png
:align: center
:alt: Vie of reserved products thanks to removal strategies
FEFO (First Expiry First Out)
--------------------------------
-----------------------------
In FEFO warehouse management, the products are dispatched from the
warehouse according to their expiration date.
Go to :menuselection:`Inventory --> Configuration --> Setting`.
Check the option **Define Expiration date on serial numbers**.
Then click on **Apply** to save changes.
In case you want more information about Expiration Dates, please have a
look at :doc:`manage expiration dates <../../management/lots_serial_numbers/expiration_dates>` documentation.
.. image:: media/removal08.png
The activation of the *Expiration Dates* functionality allows you to
define different dates on the serial/lot numbers, which are used in
FEFO. These dates can be set from :menuselection:`Inventory --> Master Data --> Lots/Serial
Numbers`.
.. image:: media/removal_07.png
:align: center
:alt: View of removal date when using a FEFO strategy
This will allow you to set four expiration fields for each lot or serial number:
**best before date**, **end of life date**, **alert date** and **removal date**.
These dates can be set from :menuselection:`Inventory Control --> Serial Numbers/Lots`.
Lots are picked based on their removal date, from earliest to
latest. Lots without a removal date defined are picked after lots
with removal dates.
.. image:: media/removal09.png
:align: center
All dates except *removal dates* are for informational and reporting
purposes only. Lots that are past any or all of the above expiration
dates may still be picked for delivery orders.
- **Best Before Date**: This is the date on which the goods with this
serial/lot number start deteriorating, without being dangerous yet.
- **End of Life Date:** This is the date on which the goods with this
serial/lot number may become dangerous and must not be consumed.
- **Removal Date:** This is the date on which the goods with this
serial/lot number should be removed from the stock. Using the FEFO
removal strategy goods are picked for delivery orders using this date.
- **Alert Date:** This is the date on which an alert should be sent
about the goods with this serial/lot number.
Lots will be picked based on their **removal date**, from earliest
to latest. Lots without a removal date defined will be picked after
lots with removal dates.
All dates except **removal date** are for informational and reporting purposes only.
Lots that are past any or all of the above expiration dates may still be picked
for delivery orders, and no alerts will be sent when lots pass their **alert date**.
Expiration dates on lots can also be set automatically when goods are received into stock.
After enabling expiration dates on serial numbers, four new fields will become available
in the inventory tab of the product form: **product life time**, **product use time**,
**product removal time**, and **product alert time**. When an integer is entered into one
of these fields, the expiration date of a lot/serial of the product in question will be set
to the creation date of the lot/serial number plus the number of days entered in the time
increment field. If the time increment field is set to zero, then the expiration date of
a lot/serial must be defined manually after the lot has been created.
Each of these time increment fields is used to generate one of the lot expiration date fields as follows:
Product Use Time --> Best Before Date
Product Removal Time --> Removal Date
Product Life Time --> End of Life Date
Product Alert Time --> Alert Date
To set the removal strategy on location, go to
:menuselection:`Configuration --> Locations` and choose FEFO.
.. image:: media/removal10.png
:align: center
Let's take an example, there are ``3`` lots of ``ice cream`` available in
``WH/Stock`` location: ``LOT0001``, ``LOT0002``, ``LOT0003`` with
different expiration date.
To set the removal strategy on location, go to :menuselection:`Inventory --> Configuration -->
Locations`, open WH/Stock and choose FEFO.
+-----------------------+---------------+-----------------------+
| **Lot / Serial No** | **Product** | **Expiration Date** |
+=======================+===============+=======================+
| LOT0001 | Ice Cream | 08/20/2015 |
| 0000001 | Hand Cream | 09/30/2019 |
+-----------------------+---------------+-----------------------+
| LOT0002 | Ice Cream | 08/10/2015 |
| 0000002 | Hand Cream | 11/30/2019 |
+-----------------------+---------------+-----------------------+
| LOT0003 | Ice Cream | 08/15/2015 |
| 0000003 | Hand Cream | 10/31/2019 |
+-----------------------+---------------+-----------------------+
We will create a sale order with ``15kg`` of ``ice cream`` and confirm it.
When we sell for 25 units of Hand Cream, we can see that the
lot numbers which have been automatically reserved by Odoo are the ones
with the closest expiration date, meaning 0000001 and 0000003.
The outgoing shipment related to sale order will make the move based on
removal strategy **FEFO**.
It will take ``10kg`` from ``LOT0002`` and ``5kg`` from ``LOT0003`` based on the
removal dates.
.. image:: media/removal11.png
.. image:: media/removal_08.png
:align: center
.. seealso::
* :doc:`../../management/reporting/inventory_valuation_config`
:alt: View of which lots are reserved when using a FEFO strategy