From d2ed5ff113a4cf653337cb7dee51ff586c7e18fa Mon Sep 17 00:00:00 2001 From: "John Holton (hojo)" Date: Thu, 16 Mar 2023 15:31:34 -0700 Subject: [PATCH] [ADD] Inventory: Use locations to manage inventory closes odoo/documentation#3843 Signed-off-by: Zachary Straub (zst) --- .../inventory/management/warehouses.rst | 1 + .../management/warehouses/use_locations.rst | 59 ++++++++++++++++++ .../use_locations/new-location-form.png | Bin 0 -> 9262 bytes .../inventory/routes/strategies/removal.rst | 6 ++ 4 files changed, 66 insertions(+) create mode 100644 content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations.rst create mode 100644 content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations/new-location-form.png diff --git a/content/applications/inventory_and_mrp/inventory/management/warehouses.rst b/content/applications/inventory_and_mrp/inventory/management/warehouses.rst index 70affc61f..4f2a8217d 100644 --- a/content/applications/inventory_and_mrp/inventory/management/warehouses.rst +++ b/content/applications/inventory_and_mrp/inventory/management/warehouses.rst @@ -11,3 +11,4 @@ Warehouses warehouses/difference_warehouse_location warehouses/warehouse_replenishment_transfer warehouses/create_a_second_warehouse + warehouses/use_locations diff --git a/content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations.rst b/content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations.rst new file mode 100644 index 000000000..c73481411 --- /dev/null +++ b/content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations.rst @@ -0,0 +1,59 @@ +========= +Locations +========= + +A *location* is a specific space within a warehouse. This can be a shelf, room, aisle, etc. There +are three types of locations in Odoo: + +- *Physical locations* are spaces within a warehouse owned by the user's company. These can be a an + area where items are stored like an aisle or shelf, or an area where operations take place, like + loading and unloading bays. +- *Partner locations* are the same as physical locations except that they exist within the warehouse + of a customer or vendor. +- *Virtual locations* are locations that do not exist physically, but where items that are not in + inventory can be placed. These can be items that have not yet entered inventory, like products + that are on the way to a warehouse, or items that are no longer in inventory due to loss or other + factors. + +.. important:: + In order to use locations, the :guilabel:`Storage Locations` setting must be enabled. To do so, + navigate to :menuselection:`Inventory --> Configuration --> Settings`, scroll down to the + :guilabel:`Warehouse` heading, and enable the :guilabel:`Storage Locations` checkbox. + +Create a new location inside a warehouse +======================================== + +Starting from the :menuselection:`Inventory` app, select :menuselection:`Configuration --> Locations +--> Create`. The new location form can then be configured as follows: + +- :guilabel:`Location Name`: the name that will be used to reference the location +- :guilabel:`Parent Location`: the location or warehouse that the new location exists within +- :guilabel:`Location Type`: choose the category that the location belongs to +- :guilabel:`Company`: the company that owns the warehouse that the location is inside of +- :guilabel:`Is a Scrap Location?`: check this box to allow for scrapped/damaged goods to be stored + in this location +- :guilabel:`Is a Return Location?`: check this box to allow products to be returned to this + location +- :guilabel:`Barcode`: the barcode number assigned to the location +- :guilabel:`Removal Strategy`: the :ref:`strategy ` for how + items should be taken from inventory + +.. image:: use_locations/new-location-form.png + :align: center + :alt: The form for creating a new location. + +Create location hierarchies +=========================== + +The *Parent Location* setting on the new location form allows for a location to exist within a +warehouse or another location. Every location can serve as a parent location, and every parent +location can have multiple locations within it, allowing for the creation of a virtually infinite +hierarchical structure. + +.. example:: + Location hierarchy could be organized so that a shelf is located within an aisle, which is + located within a room, which is located within the overall warehouse. + +To create the location hierarchy in the example above, set the warehouse as the parent of the room, +the room as the parent of the aisle, and the aisle as the parent of the shelf. This can be adapted +to a hierarchy of any magnitude. diff --git a/content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations/new-location-form.png b/content/applications/inventory_and_mrp/inventory/management/warehouses/use_locations/new-location-form.png new file mode 100644 index 0000000000000000000000000000000000000000..52fff3028499a554959a2d10783cf97bdd38d30c GIT binary patch literal 9262 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 literal 0 HcmV?d00001 diff --git a/content/applications/inventory_and_mrp/inventory/routes/strategies/removal.rst b/content/applications/inventory_and_mrp/inventory/routes/strategies/removal.rst index 5e0463e18..3d3a74912 100644 --- a/content/applications/inventory_and_mrp/inventory/routes/strategies/removal.rst +++ b/content/applications/inventory_and_mrp/inventory/routes/strategies/removal.rst @@ -2,12 +2,18 @@ Removal strategies (FIFO, LIFO, FEFO) ===================================== +.. _inventory/routes/strategies/removal: + For companies with warehouses, **removal strategies** determine which products are taken from the warehouse, and when. Removal strategies are typically defined for specific picking operations. This helps companies to select the best products, optimize the distance workers need to travel when picking items for orders, and account for quality control, such as moving products with expiration dates. +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. + When a product needs to be moved, Odoo finds available products that can be assigned to the transfer. The way Odoo assigns these products depends on the :guilabel:`Removal Strategy` defined in either the :guilabel:`Product Category` or the :guilabel:`Location` dashboards.