diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse.rst b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse.rst index 286c49c24..730e592d2 100644 --- a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse.rst +++ b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse.rst @@ -18,3 +18,4 @@ Advanced operations advanced_operations_warehouse/cluster_picking advanced_operations_warehouse/removal advanced_operations_warehouse/fifo + advanced_operations_warehouse/fefo diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo.rst b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo.rst new file mode 100644 index 000000000..25311f581 --- /dev/null +++ b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo.rst @@ -0,0 +1,126 @@ +============ +FEFO removal +============ + +The *First Expired, First Out* (FEFO) removal strategy targets products for removal based on their +assigned removal dates. + +.. seealso:: + :doc:`Other removal strategies ` + +.. _inventory/warehouses_storage/removal-date: + +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 :guilabel:`Inventory` tab. +Under the :guilabel:`Traceability` section, ensure the :guilabel:`Tracking` field is set to either +:guilabel:`By Lots` or :guilabel:`By Unique Serial Number`. + +Next, select the :guilabel:`Expiration Date` option, which makes the :guilabel:`Removal Date` field +(and other date fields) appear. + +.. important:: + The :guilabel:`Lots and Serial Numbers` and :guilabel:`Expiration Dates` features **must** be + enabled in :menuselection:`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 :guilabel:`Expiration Date` field of the product form. + +The removal date takes this expiration date, and subtracts the number of days specified in the +:guilabel:`Removal Date` field of the product form. + +.. seealso:: + :doc:`Expiration dates <../../product_management/product_tracking/expiration_dates>` + +.. example:: + In the :guilabel:`Inventory` tab of the product, `Egg`, the following :guilabel:`Dates` are set + by the user: + + - :guilabel:`Expiration Date`: `30` days after receipt + - :guilabel:`Removal Date`: `15` days before expiration date + + .. image:: fefo/user-set-date.png + :align: center + :alt: Display expiration and removal dates set on the product form. + + 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). + +.. _inventory/warehouses_storage/exp-date: + +To view the expiration dates of items in stock, navigate to the product form, and click the +:guilabel:`On Hand` smart button. + +Next, click the additional options icon, located on the far-right, and select the columns: +:guilabel:`Expiration Date` and :guilabel:`Removal Date`. + +.. image:: fefo/removal-date.png + :align: center + :alt: Show expiration dates from the inventory adjustments model accessed from the *On Hand* + smart button from the product form. + +Workflow +======== + +Using the :abbr:`FEFO (First Expired, First Out)` 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. + +The product is tracked :guilabel:`By Lots`, and the product category's :guilabel:`Force Removal +Strategy` is set to :guilabel:`First Expired, First Out (FEFO)`. + +.. seealso:: + - :ref:`Set up force removal strategy ` + - :ref:`Enable lots tracking ` + - `Odoo Tutorials: Perishable Products `_ + +.. list-table:: + :header-rows: 1 + :stub-columns: 1 + + * - + - LOT1 + - LOT2 + - LOT3 + * - On-hand stock + - 5 + - 2 + - 1 + * - Expiration date + - April 4 + - April 10 + - April 15 + * - :ref:`Removal date ` + - February 26 + - March 4 + - March 9 + +To see the removal strategy in action, go to the :menuselection:`Sales app` and create a new +quotation. + +Clicking :guilabel:`Confirm` creates a delivery order for today, December 29th, and the lot numbers +with the soonest expiration dates are reserved, using the :abbr:`FEFO (First Expired, First Out)` +removal strategy. + +To view the detailed pickings, click the :guilabel:`⦙≣ (bulleted list)` icon, located on the +far-right of the Carton of egg's product line, in the :guilabel:`Operations` tab of the delivery +order. Doing so opens the :guilabel:`Open: Stock move` pop-up window. + +In the :guilabel:`Open: Stock move` pop-up window, the :guilabel:`Pick from` field displays where +the quantities to fulfill the :guilabel:`Demand` are picked from. + +Since the order demanded six Cartons of eggs, using the :abbr:`FEFO (First Expired, First Out)` +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. + +.. image:: fefo/eggs-picking.png + :align: center + :alt: The stock moves window that shows the lots to be removed using FEFO. diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/eggs-picking.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/eggs-picking.png new file mode 100644 index 000000000..256e408c9 Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/eggs-picking.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/removal-date.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/removal-date.png new file mode 100644 index 000000000..9dbb46d49 Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/removal-date.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/user-set-date.png b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/user-set-date.png new file mode 100644 index 000000000..c96f47e5b Binary files /dev/null and b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/fefo/user-set-date.png differ diff --git a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/removal.rst b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/removal.rst index ad9120195..207b59fc8 100644 --- a/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/removal.rst +++ b/content/applications/inventory_and_mrp/inventory/warehouses_storage/advanced_operations_warehouse/removal.rst @@ -17,19 +17,19 @@ Odoo automatically select how products are selected for orders: * - - :doc:`FIFO ` - LIFO - - FEFO + - :doc:`FEFO ` - Closest Location - Least Packages * - Based on - :ref:`Incoming date ` - :ref:`Incoming date ` - - Removal date + - :ref:`Removal date ` - Location sequence - Package quantity * - Selection order - First in - Last in - - First to expire + - :ref:`First to expire ` - Alphanumeric name of location - Quantity closest to fulfilling demand