[IMP] Inventory: removal strategies' doc imp (#744)

This commit is contained in:
Lau-Odoo 2020-11-13 15:47:26 +01:00 committed by GitHub
parent a906a85110
commit 489771d2cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 161 additions and 131 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

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: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,192 +1,222 @@
================================================== ==================================================
What is a removal strategy (FIFO, LIFO, and FEFO)? What is a Removal Strategy (FIFO, LIFO, and FEFO)?
================================================== ==================================================
Overview Usually, *Removal Strategies* are defined in picking operations to select the best products to
======== optimize the distance for the worker, for quality control purposes, or to first move the products
with the closest expiration date.
Removal strategies are usually in picking operations to select the best When a product movement needs to be done, Odoo finds available products that can be assigned to
products in order to optimize the distance for the worker, for quality the transfer. The way Odoo assigns these products depends on the *Removal Strategy* defined in
control purpose or due to reason of product expiration. the *Product Category* or on the *Location*.
When a product movement needs to be done, Odoo will find available What happens inside the warehouse?
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**.
Configuration Imagine a generic warehouse plan, with receiving docks and area, storage locations, picking and
============= packing areas, and shipping docks. All products go through all these locations, but some rules,
such as removal strategies, can have an effect on which products are taken for the pickings.
In the **Inventory** application, go to :menuselection:`Configuration .. image:: media/empty-dock.png
--> Settings`:
.. image:: media/removal01.png
:align: center :align: center
:alt: empty stock waiting for deliveries at the docks.
.. image:: media/removal02.png Here, vendor trucks unload pallets of goods at the docks. Then, operators scan the products in the
receiving area, with the receiving date and, if the product has an expiration date, the expiration
date. After that, products are stored in their respective locations.
.. image:: media/entering-stocks.png
:align: center :align: center
:alt: products entering stock via the receiving area.
Check **Track lots or serial numbers**, **Manage several location per Next, several orders for the same product are made, but you didnt receive the goods the same day
warehouse** and **Advanced routing of products using rules**, then click and they dont have the same expiration date. In that situation, you logically prefer sending those
on **Apply**. with the closest date first. Depending on the removal strategy you chose, Odoo generates a transfer
with the products fitting your settings the best.
Then, open :menuselection:`Configuration --> Locations` .. image:: media/packing-products.png
and open the location on which you want to apply a removal strategy.
.. image:: media/removal03.png
:align: center :align: center
:alt: products being packed at packing area for delivery, taking expiration dates into account.
Types of removal strategy .. note::
========================= On the transfer form, you can find the products lot/serial number to pick for delivery.
FIFO ( First In First Out ) How does it work?
--------------------------- =================
A **First In First Out** strategy implies that the products that were First In, First Out (FIFO)
stocked first will move out first. Companies should use 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`, When using a **First In, First Out** strategy, a demand for some products triggers a removal rule
open the stock location and set **FIFO** removal strategy. which requests a transfer for the lot/serial number that has entered your stock the first.
Let's take one example of FIFO removal strategy. To be clearer, lets imagine that you have three lots of nails in your warehouse. Those three have
the following lot numbers: 00001, 00002, 00003, each with 5 nails boxes in it. 00001 entered the
stock on the 23rd of May, 00002 on the 25th of May, and 00003 on the 1st of June. A customer orders
you 6 boxes on the 11th of June. With the *FIFO* strategy selected, a transfer is requested for the
five boxes of 00001 and one of the boxes in 00002 because 00001 has entered your stock before the
others. The box from 00002 is taken because it has the oldest enter date after 00001.
In your warehouse stock (``WH/Stock``) location, there are ``3`` lots of ``iPod So, for every order of a product with the *FIFO* strategy selected, Odoo requests a transfer for the
32 Gb`` available. good that has been in your stock for the longest period.
You can find details of available inventory in inventory valuation Last In, First Out (LIFO)
report. -------------------------
.. image:: media/removal04.png The same way as for FIFO, the **Last In, First Out** strategy is based on moving products based on the
date they entered the stock. Here, a demand for some products triggers a removal rule that requests a
transfer for the lot/serial number that has entered your stock the last.
To better understand, lets imagine three lots of screws in your warehouse. Those three have the
following numbers: 10001, 10002, 10003, each with 10 screw boxes in it. 10001 has entered the stock
on the 1st of June, 10002 on the 3rd of June, and 10003 on the 6th of June. A customer orders
7 boxes on the 8th of June. With the *LIFO* strategy selected, a transfer is requested for seven
boxes of 10003 because that lot is the last one to have entered the stock.
So, basically, for every order of a product with the *LIFO* strategy used, a transfer for the last
one to have entered the stock is requested.
.. note::
This strategy is banned in many countries and can lead to only have old or obsolete products
in your stock.
First Expire, First Out (FEFO)
------------------------------
The **First Expire, First Out** strategy is a bit different from the two others. Here, it is the
expiration date that is important and not the date the product entered the stock.
Lets imagine three lots of 6-eggs boxes (in this specific case, dont forget to use
:doc:`units of measure <../../management/products/uom>`). Those three have the following numbers:
20001, 20002, and 20003, each with 5 boxes in it. 20001 has entered the stock on the 1st of July
and expires on the 15th of July, 20002 on the 2nd and expires on the 14th of July, and 20003 on
the 4th and expires on the 21st of July. A customer orders 6 boxes on the 5th of July. With the
*FEFO* strategy selected, a transfer is requested for the five boxes of 20002 and one from 20001.
The transfer for all the boxes of the lot 20002 is because they have the closest expiration date.
The transfer also requests one box from 20001 because its the lot that expires the sooner after 20002.
Then, you can remember that for every order of a product with the *FEFO* strategy, a transfer is
requested for the product that has the nearest expiration date from the order date.
Use Removal Strategies
======================
To identify some units from other ones, you need to track them, either by *lot* or by *serial number*.
To do so, go to :menuselection:`Configuration --> Settings`. Then, activate *Storage Location*,
*Multi-Steps Routes*, and *Lots & Serial Numbers*.
.. image:: media/enabled-features.png
:align: center :align: center
:alt: features to enable in order to properly use removal strategies.
Create one sales order ``25`` unit of ``iPod 32 GB`` and confirm it. .. note::
To work with the *FEFO* strategy, activate the *Expiration Dates* feature.
You can see in the outgoing shipment product that the ``Ipod 32 Next, you need to define your removal strategy, on *Product Categories* via
Gb`` are assigned with the **oldest** lots, using the FIFO removal :menuselection:`Inventory --> Configuration --> Product Categories`.
strategy.
.. image:: media/removal05.png .. image:: media/first-in-first-out.png
:align: center :align: center
:alt: force removal strategy set up as first in first out.
LIFO (Last In First Out) FIFO (First In, First Out)
------------------------ --------------------------
In this warehouse management, the products which are brought in the As said, a *FIFO* strategy implies that products stocked first move out first. Companies should use
last, moves out the first. LIFO is used in case of products which do not that method if they are selling products with short demand cycles, such as clothes, and to ensure
have a shelf life. they are not stuck with outdated styles in stock.
Go to :menuselection:`Inventory --> Configuration --> Locations`, For this example, we created three lots of white shirts. Those are from the All/Clothes category,
open the stock location and set **LIFO** removal strategy. where we put *FIFO* as the removal strategy. In our stock location (WH/Stock), we now find the
three lots available.
In our example, let's check the current available stock of ``Ipod 32 Gb`` .. image:: media/inventory-valuation.png
on ``WH/Stock`` location.
.. image:: media/removal06.png
:align: center :align: center
:alt: view of the white shirt lots inventory valuation.
Create a sale order with ``10`` units of ``Ipod 32 Gb``. The lot 000001 contains 5 shirts, 000002 contains 3 shirts, and 000003 contains 2. As it can be
seen above, 000001 has entered the stock first. Lets create a sale order of six white shirts
to check that products from that lot are the first ones to move out.
You can see in the outgoing shipment product that the ``Ipod 32 On the delivery order linked to the picking, you can see that the oldest lot numbers have been
Gb`` are assigned with the **newest** lots, using the LIFO removal reserved thanks to the *FIFO* strategy.
strategy.
.. image:: media/removal07.png .. image:: media/reserved-lots-FIFO.png
:align: center :align: center
:alt: two lots being reserved for sell with the FIFO strategy.
FEFO ( First Expiry First Out ) LIFO (Last In, First Out)
-------------------------------- -------------------------
In FEFO warehouse management, the products are dispatched from the With a *LIFO* strategy, thats quite the opposite. In fact, the products that are brought the
warehouse according to their expiration date. last move out the first. It is mostly used in case of products without a shelf life.
Go to :menuselection:`Inventory --> Configuration --> Setting`. Even if our white shirts are clothes, we can say that they are timeless. So, lets use them to
Check the option **Define Expiration date on serial numbers**. test our *LIFO* strategy. Once again, open the product category via :menuselection:`Inventory
Then click on **Apply** to save changes. --> Configuration --> Product Categories` and change the removal strategy to *LIFO*.
.. image:: media/removal08.png .. image:: media/last-in-first-out.png
:align: center :align: center
:alt: last in first out strategy set up as forced removal strategy.
This will allow you to set four expiration fields for each lot or serial number: Now, create a sale order for 4 white shirts and check that the reserved products are from lots
**best before date**, **end of life date**, **alert date** and **removal date**. 000003 and 000002.
These dates can be set from :menuselection:`Inventory Control --> Serial Numbers/Lots`.
.. image:: media/removal09.png .. image:: media/reserved-lots-LIFO.png
:align: center :align: center
:alt: two lots being reserved for sell with the LIFO strategy.
- **Best Before Date**: This is the date on which the goods with this .. important::
serial/lot number start deteriorating, without being dangerous yet. Dont forget that the *LIFO* strategy is banned in many countries!
- **End of Life Date:** This is the date on which the goods with this FEFO (First Expiry, First Out)
serial/lot number may become dangerous and must not be consumed. ------------------------------
- **Removal Date:** This is the date on which the goods with this With the *FEFO* strategy, the way products are picked is not based on the reception date. In this
serial/lot number should be removed from the stock. Using the FEFO particular case, they are dispatched according to their expiration date.
removal strategy goods are picked for delivery orders using this date.
- **Alert Date:** This is the date on which an alert should be sent .. note::
about the goods with this serial/lot number. To have more information about Expiration date, please have a look at
:doc:`the related doc <../../management/lots_serial_numbers/expiration_dates>`.
Lots will be picked based on their **removal date**, from earliest By activating *Expiration Dates*, it becomes possible to define different dates on the serial/lot
to latest. Lots without a removal date defined will be picked after numbers to be used in *FEFO*. These dates can be set by going to :menuselection:`Inventory -->
lots with removal dates. Master Data --> Lots/Serial Numbers`.
All dates except **removal date** are for informational and reporting purposes only. .. image:: media/removal-date.png
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 :align: center
:alt: view of the removal date for 0000001.
Let's take an example, there are ``3`` lots of ``ice cream`` available in Lots are picked based on their removal date, from earliest to latest. Lots without a removal date
``WH/Stock`` location: ``LOT0001``, ``LOT0002``, ``LOT0003`` with defined are picked after lots with removal dates.
different expiration date.
.. note::
Other dates are for informational and reporting purposes only. If not removed from the stock,
lots that are past the expiration dates may still be picked for delivery orders!
To use the *FEFO* strategy, once again go to :menuselection:`Inventory --> Configuration -->
Product Categories` and choose *FEFO* as the *Force Removal Strategy*.
.. image:: media/first-expiry-first-out.png
:align: center
:alt: view of the FEFO strategy being set up as forced removal strategy.
For this particular case, lets use hand cream. As usual, we have three lots of them.
+-----------------------+---------------+-----------------------+ +-----------------------+---------------+-----------------------+
| **Lot / Serial No** | **Product** | **Expiration Date** | | **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 realize a sale for 25 units of Hand Cream, we can see that the lot numbers which have been
automatically reserved by Odoo are the ones with the closest expiration date, meaning 0000001 and
0000003.
The outgoing shipment related to sale order will make the move based on .. image:: media/reserved-hand-cream.png
removal strategy **FEFO**.
It will take ``10kg`` from ``LOT0002`` and ``5kg`` from ``LOT0003`` based on the
removal dates.
.. image:: media/removal11.png
:align: center :align: center
:alt: two hand cream lots reserved for sell with the FEFO strategy.
.. seealso::
* :doc:`../../management/reporting/inventory_valuation_config`