[IMP] Inventory: make Storage Categories current with 18.0

closes odoo/documentation#15090

Signed-off-by: Erin Jerison (erjer) <erjer@odoo.com>
This commit is contained in:
erjer-odoo
2025-10-27 17:01:19 -07:00
parent 894f05059e
commit b498a0a473
7 changed files with 67 additions and 32 deletions

View File

@@ -2,13 +2,13 @@
Storage categories
==================
A *storage category* is used with :doc:`putaway rules <putaway>`, as an extra location attribute to
automatically propose optimal storage locations for products.
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.
Follow these steps to complete the setup:
#. :ref:`Enable the Storage Category feature <inventory/routes/enable-storage-categories>`
#. :ref:`Define a storage category <inventory/routes/define-storage>` with specific limitations
#. :ref:`Enable features in the settings <inventory/routes/enable-storage-categories>`
#. :ref:`Define capacity limitations <inventory/routes/define-storage>`
#. Assign a :ref:`category to storage locations <inventory/routes/assign-location>`
#. Add the storage category as an attribute to a :ref:`putaway rule
<inventory/routes/set-putaway-attribute>`
@@ -17,9 +17,10 @@ Follow these steps to complete the setup:
: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.
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
@@ -29,11 +30,11 @@ To enable storage categories, go to :menuselection:`Inventory app --> Configurat
Then, in the :guilabel:`Warehouse` section, ensure the :guilabel:`Storage Locations` and
:guilabel:`Multi-Step Routes` features are enabled.
Next, activate the :guilabel:`Storage Categories` feature. Finally, click :guilabel:`Save`.
If intending to set capacities by :ref:`package type <inventory/routes/set-capacity-package>`, also
make sure :guilabel:`Packages` is enabled. Click :guilabel:`Save`.
.. image:: storage_category/enable-categories.png
:align: center
:alt: Show the Storage Categories feature.
:alt: Enable Storage Locations and Multi-Step Routes to enable storage categories.
.. _inventory/routes/define-storage:
@@ -44,7 +45,7 @@ A storage category with specific limitations **must** be created first, before i
locations, in order to decide the optimal storage location.
To create a storage category, go to :menuselection:`Inventory app --> Configuration --> Storage
Categories`, and click :guilabel:`Create`.
Categories`, and click :guilabel:`New`.
On the storage category form, type a name for the category in the :guilabel:`Storage Category`
field.
@@ -65,12 +66,21 @@ product:
- :guilabel:`If location is empty`: a product can be added there only if the location is empty.
- :guilabel:`If products are the same`: a product can be added there only if the same product is
already there.
- :guilabel:`Allow mixed products`: several different products can be stored in this location at
the same time.
- :guilabel:`Allow mixed products`: several different products can be stored in this location at the
same time.
.. tip::
When clicked, the :guilabel:`Location` smart button shows which storage locations the category
has been assigned to.
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
its capacity, Odoo still routes all items to that same location instead of selecting another one
with available space.
*(Example: If a location can hold 10 units and 12 units arrive, all 12 are still assigned to that
location.)*
Capacity by weight
------------------
@@ -91,7 +101,6 @@ their capacities in the :guilabel:`Quantity` field.
of a storage category form.
.. image:: storage_category/capacity-by-product.png
:align: center
:alt: Show storage category limiting by product count.
.. _inventory/routes/set-capacity-package:
@@ -103,20 +112,29 @@ For companies using :doc:`packages <../../product_management/configure/package>`
possible to ensure real-time storage capacity checks, based on package types (e.g., crates, bins,
boxes, etc.).
.. important::
Enable the :guilabel:`Packages` feature in :menuselection:`Inventory app --> Configuration -->
Settings` to show the :guilabel:`Capacity by Package` tab.
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`.
.. example::
Create putaway rules for pallet-stored items, by creating the `High Frequency pallets` storage
Create putaway rules for pallet-stored items, by creating the `High frequency pallets` storage
category.
In the :guilabel:`Capacity by Package` tab, specify the number of packages for the designated
:guilabel:`Package Type`, and set a maximum of `2.00` `Pallets` for a specific location.
.. image:: storage_category/storage-category.png
:align: center
:alt: Create a storage category on the page.
:alt: Create a storage category.
.. 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
its capacity, Odoo still routes all items to that same location instead of selecting another one
with available space.
*(Example: If a location can hold 10 units and 12 units arrive, all 12 are still assigned to that
location.)*
.. _inventory/routes/assign-location:
@@ -128,11 +146,10 @@ Once the storage category is created, assign it to a location. Navigate to the l
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/PAL 1` sub-location.
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.
.. image:: storage_category/location-storage-category.png
:align: center
:alt: When a Storage Category is created, it can be linked to a warehouse location.
.. _inventory/routes/set-putaway-attribute:
@@ -144,16 +161,27 @@ With the :ref:`storage category <inventory/routes/define-storage>` and :ref:`loc
<inventory/routes/assign-location>` set up, create the :doc:`putaway rule <putaway>` by navigating
to :menuselection:`Inventory app --> Configuration --> Putaway Rules`.
Click the :guilabel:`Create` button to create the putaway rule. In the :guilabel:`Having Category`
field of the new putaway rule form, select the storage category.
Click the :guilabel:`New` button to create the putaway rule. Specify a location to store to in the
:guilabel:`Store to` field.
Use the :guilabel:`Sublocation` field to specify that you want to use a sublocation with the storage
category:
- :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.
If using multiple storage locations for a single storage category, create putaway rules for each
location to ensure that if one storage location is in use, the secondary locations must be used.
.. example::
Continuing the example from above, the `High Frequency Pallets` storage category is assigned to
the putaway rule directing pallets of lemonade to locations with the `High Frequency Pallets`
Continuing the example from above, the `High frequency pallets` storage category is assigned to
the putaway rule directing pallets of lemonade to locations with the `High frequency pallets`
storage category :ref:`assigned to them <inventory/routes/assign-location>`.
.. image:: storage_category/smart-putaways.png
:align: center
:alt: Storage Categories used in a variety of putaway rules.
Use case: limit capacity by package
@@ -162,16 +190,23 @@ 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 example 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
the warehouse are directed to be stored in `PAL1` and `PAL2` locations.
Depending on the number of pallets on-hand at each of the storage locations, when one pallet of
Depending on the number of pallets on-hand at each of the storage locations, when two pallets of
lemonade cans is received, the following scenarios happen:
- If `PAL1` and `PAL2` are empty, the pallet is redirected to `WH/Stock/Pallets/PAL1`.
- If `PAL1` is full, the pallet is redirected to `WH/Stock/Pallets/PAL2`.
- If `PAL1` and `PAL2` are full, the pallet is redirected to `WH/Stock/Pallets`.
- If `PAL1` is partially full (for example, with one pallet), Odoo treats more than one received
pallet as a single pallet on the receipt. You must manually separate the two pallets into separate
storage locations. Click the :guilabel:`Open Move` icon to the right of the :guilabel:`Units`
field, and then in the :guilabel:`Open: Stock move` box, click :guilabel:`Add a line`. Finally,
split the receipt by quantity into separate locations, then click :guilabel:`Save`.
.. image:: storage_category/package-stock-move.png
:alt: Update the Stock move box to route pallets to the correct locations before validating.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 14 KiB