[IMP] Inventory: Storage categories sublocation update

closes odoo/documentation#16416

X-original-commit: 0f7e1c1bd5
Signed-off-by: Erin Jerison (erjer) <erjer@odoo.com>
Co-authored-by: Rex <11528309+huisit@users.noreply.github.com>
Co-authored-by: Felicia Kuan <feku@odoo.com>
This commit is contained in:
erjer-odoo
2026-02-05 18:40:24 +00:00
parent a48942bcf8
commit 85d7ad60da
2 changed files with 86 additions and 58 deletions

View File

@@ -3,7 +3,10 @@ Storage categories
==================
A *storage category* is used with :doc:`putaway rules <putaway>` to assign a storage location to
incoming products while accounting for the capacity of that location.
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:
@@ -16,33 +19,57 @@ Follow these steps to complete the setup:
.. seealso::
:doc:`putaway`
.. note::
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.
.. _inventory/routes/enable-storage-categories:
Configuration
=============
Enable storage categories
=========================
To enable storage categories, go to :menuselection:`Inventory app --> Configuration --> Settings`.
Then, in the :guilabel:`Warehouse` section, ensure the :guilabel:`Storage Locations` and
Then, in the *Warehouse* section, ensure the :guilabel:`Storage Locations` and
:guilabel:`Multi-Step Routes` features are enabled.
If intending to set capacities by :ref:`package type <inventory/routes/set-capacity-package>`, also
make sure :guilabel:`Packages` is enabled. Click :guilabel:`Save`.
To set capacities by :ref:`package type <inventory/routes/set-capacity-package>`, also
make sure :guilabel:`Packages` is enabled in the *Operations* section. Click :guilabel:`Save`.
.. image:: storage_category/enable-categories.png
:alt: Enable Storage Locations and Multi-Step Routes to enable storage categories.
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 :ref:`Store
to <inventory/routes/set-putaway-attribute>` location will be set to the parent location, and the
:ref:`storage category <inventory/routes/assign-location>` will be set to the child location.
Go to :menuselection:`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 :guilabel:`New` button on the
:guilabel:`Locations` page. On this parent location form, specify a :guilabel:`Location Name` and
:guilabel:`Parent Location`. Select :guilabel:`Internal Location` as the :guilabel:`Location Type`.
Then, create *sublocations* of this parent location by clicking the :guilabel:`New` button. On the
location form, specify a :guilabel:`Location Name`, and set the :guilabel:`Parent Location` to the
parent location that was just created.
.. example::
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.
.. image:: storage_category/new-child-location.png
:alt: Create a sublocation.
.. _inventory/routes/define-storage:
Define storage category
=======================
Define storage category limitations
===================================
A storage category with specific limitations **must** be created first, before it is applied to
locations, in order to decide the optimal storage location.
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 :menuselection:`Inventory app --> Configuration --> Storage
Categories`, and click :guilabel:`New`.
@@ -50,15 +77,13 @@ Categories`, and click :guilabel:`New`.
On the storage category form, type a name for the category in the :guilabel:`Storage Category`
field.
Options are available to limit capacity by weight, product, and package type.
.. note::
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 this
example of :ref:`capacity by package <inventory/routes/set-capacity-package>`.
be more practical to store items in different amounts across various locations, as shown in the
:ref:`limit capacity by package <inventory/routes/set-capacity-package>` example.
The :guilabel:`Allow New Product` field defines when the location is considered available to store a
product:
@@ -69,10 +94,6 @@ product:
- :guilabel:`Allow mixed products`: several different products can be stored in this location at the
same time.
.. tip::
When clicked, the :icon:`oi-arrows-v` :guilabel:`Locations` smart button shows which storage
locations the category has been assigned to.
.. important::
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
@@ -82,45 +103,44 @@ product:
*(Example: If a location can hold 10 units and 12 units arrive, all 12 are still assigned to that
location.)*
Capacity by weight
------------------
Limit capacity by weight
------------------------
On a storage category form (:menuselection:`Inventory app --> Configuration --> Storage
Categories`), set a maximum product weight in the :guilabel:`Max Weight` field. This limit applies
to each location assigned this storage category.
A maximum product weight can be set in the :guilabel:`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`.
This value must be set to greater than `0` if a product weight is defined.
Limit capacity by product
-------------------------
Capacity by product
-------------------
In the :guilabel:`Capacity by Product` tab, click :guilabel:`Add a Line` to input items, and enter
their capacities in the :guilabel:`Quantity` field.
In the :guilabel:`Capacity by Product` tab, click :guilabel:`Add a Line` to enter a product, and set
the maximum capacity that should be stored at each location in the :guilabel:`Quantity` field.
.. example::
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 :guilabel:`Capacity by Product` tab
of a storage category form.
single storage location by specifying those amounts in the :guilabel:`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 :guilabel:`Capacity by Product` tab.
.. image:: storage_category/capacity-by-product.png
:alt: Show storage category limiting by product count.
.. _inventory/routes/set-capacity-package:
Capacity by package
-------------------
Limit capacity by package type
------------------------------
For companies using :doc:`packages <../../product_management/configure/package>`, it becomes
possible to ensure real-time storage capacity checks, based on package types (e.g., crates, bins,
Limiting capacity by :doc:`package <../../product_management/configure/package>` makes it
possible to enforce real-time storage capacity checks based on package type (e.g., crates, bins,
boxes, etc.).
Create the :ref:`package type <inventory/warehouses_storage/package-type>` before assigning it to a
storage category. Create it on the :guilabel:`Inventory` tab of the product form (in the
:guilabel:`Packaging` section), or create it from the :guilabel:`Product Packagings` page. Be sure
to set the :guilabel:`Package Type`.
Click :guilabel:`Add a line` to add a :ref:`package type
<inventory/warehouses_storage/package-type>` to the storage category. Alternatively, create a
new package type on the :guilabel:`Inventory` tab of the product form (in the :guilabel:`Packaging`
section), or from the :guilabel:`Product Packagings` page.
.. example::
Create putaway rules for pallet-stored items, by creating the `High frequency pallets` storage
To help create putaway rules for pallet-stored items, create the `High frequency pallets` storage
category.
In the :guilabel:`Capacity by Package` tab, specify the number of packages for the designated
@@ -140,40 +160,48 @@ to set the :guilabel:`Package Type`.
.. _inventory/routes/assign-location:
Assign to location
==================
Assign storage locations
========================
Once the storage category is created, assign it to a location. Navigate to the location by going to
:menuselection:`Inventory app --> Configuration --> Locations`, and select the desired location.
After the storage category is created, it can be assigned to the sublocations. Go to
:menuselection:`Inventory app --> Configuration --> Locations`, and open the desired sublocation.
Then, select the created category in the :guilabel:`Storage Category` field.
.. example::
Assign the `High frequency pallets` storage category (which limits pallets stored at any location
to two pallets) to the `WH/Stock/Pallets/PAL1` sub-location.
to two pallets) to the `WH/Stock/Pallets/PAL1` sublocation.
.. image:: storage_category/location-storage-category.png
:alt: When a Storage Category is created, it can be linked to a warehouse location.
Repeat this step for all sublocations to which the storage category should apply.
.. tip::
On the storage category form, the :icon:`oi-arrows-v` :guilabel:`Locations` smart button shows
which storage locations the category has been assigned to.
.. _inventory/routes/set-putaway-attribute:
Putaway rule
============
Create a putaway rule
=====================
With the :ref:`storage category <inventory/routes/define-storage>` and :ref:`location
With the :ref:`storage category <inventory/routes/define-storage>` and :ref:`locations
<inventory/routes/assign-location>` set up, create the :doc:`putaway rule <putaway>` by navigating
to :menuselection:`Inventory app --> Configuration --> Putaway Rules`.
Click the :guilabel:`New` button to create the putaway rule. Specify a location to store to in the
Click the :guilabel:`New` button to create the putaway rule. Specify a location in the
:guilabel:`Store to` field.
Use the :guilabel:`Sublocation` field to specify that you want to use a sublocation with the storage
category:
Use the :guilabel:`Sublocation` field to specify that you want to use a storage category on the
sublocations of the :guilabel:`Store to` field:
- :guilabel:`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 :guilabel:`Store to` field.
- :guilabel:`Closest Location`: The locations specified as part of the storage category are used. A
storage category is mandatory in the :guilabel:`Having Category` field.
storage category is mandatory in the :guilabel:`Having Category` field. The locations in the
storage category must be sublocations of the location in the :guilabel:`Store to` field. If the
closest locations in the storage category are full, the :guilabel:`Store to` location is used.
.. example::
Continuing the example from above, the `High frequency pallets` storage category is assigned to
@@ -194,7 +222,7 @@ Use case: limit capacity by package
To limit the capacity of a storage location by a specific number of packages, :ref:`create a storage
category with a Capacity By Package <inventory/routes/set-capacity-package>`.
Continuing the example from above, the `High frequency pallets` storage category is assigned to the
Continuing the examples from above, the `High frequency pallets` storage category is assigned to the
`PAL1` and `PAL2` locations.
Then, :ref:`putaway rules <inventory/routes/putaway-rule>` are set, so that any pallets received in