From a2ce8821f6b8feea27bdcaec268e422f169ee03d Mon Sep 17 00:00:00 2001 From: Felicious Date: Tue, 28 May 2024 17:31:35 -0700 Subject: [PATCH] [ADD] inventory: storage categories closes odoo/documentation#10169 Signed-off-by: Felicia Kuan (feku) Co-authored-by: pabr-odoo Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com> Co-authored-by: Sam Lieber (sali) <36018073+samueljlieber@users.noreply.github.com> --- .../inventory/routes/strategies.rst | 1 + .../inventory/routes/strategies/putaway.rst | 80 -------- .../routes/strategies/storage_category.rst | 176 ++++++++++++++++++ .../storage_category/capacity-by-product.png | Bin 0 -> 9843 bytes .../storage_category/enable-categories.png | Bin 0 -> 11646 bytes .../location-storage-category.png | Bin .../smart-putaways.png | Bin .../storage-category.png | Bin 8 files changed, 177 insertions(+), 80 deletions(-) create mode 100644 content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category.rst create mode 100644 content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category/capacity-by-product.png create mode 100644 content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category/enable-categories.png rename content/applications/inventory_and_mrp/inventory/routes/strategies/{putaway => storage_category}/location-storage-category.png (100%) rename content/applications/inventory_and_mrp/inventory/routes/strategies/{putaway => storage_category}/smart-putaways.png (100%) rename content/applications/inventory_and_mrp/inventory/routes/strategies/{putaway => storage_category}/storage-category.png (100%) diff --git a/content/applications/inventory_and_mrp/inventory/routes/strategies.rst b/content/applications/inventory_and_mrp/inventory/routes/strategies.rst index 88a9d2416..4f0c54d16 100644 --- a/content/applications/inventory_and_mrp/inventory/routes/strategies.rst +++ b/content/applications/inventory_and_mrp/inventory/routes/strategies.rst @@ -10,3 +10,4 @@ Putaway & Removal Strategies strategies/putaway strategies/removal + strategies/storage_category diff --git a/content/applications/inventory_and_mrp/inventory/routes/strategies/putaway.rst b/content/applications/inventory_and_mrp/inventory/routes/strategies/putaway.rst index acc0400f1..688be3e09 100644 --- a/content/applications/inventory_and_mrp/inventory/routes/strategies/putaway.rst +++ b/content/applications/inventory_and_mrp/inventory/routes/strategies/putaway.rst @@ -93,83 +93,3 @@ match is found: :align: center :alt: Some examples of putaway rules. -Storage categories -================== - -A *storage category* is an extra location attribute. Storage categories allow the user to define -the quantity of products that can be stored in the location, and how the location will be selected -with putaway rules. - -Configuration -------------- - -To enable storage categories, go to :menuselection:`Inventory app --> Configuration --> Settings`, -and activate the :guilabel:`Storage Categories` feature in the :guilabel:`Warehouse` section. Then, -click :guilabel:`Save`. - -.. important:: - The :guilabel:`Storage Locations` feature **must** be enabled to enable :guilabel:`Storage - Categories`. - -Define storage category ------------------------ - -To create a storage category, go to :menuselection:`Inventory app --> Configuration --> Storage -Categories` and click :guilabel:`Create`. - -On the storage category form, type a name for the :guilabel:`Storage Category` field. - -Options are available to limit the capacity by weight, by product, or by package type. The -:guilabel:`Allow New Product` field defines when the location is considered available to store a -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. - -.. example:: - Create putaway rules for pallet-stored items and ensure real-time storage capacity checks by - creating the `High Frequency pallets` storage category. - - Name the :guilabel:`Storage Category`, and select :guilabel:`If all products are same` in the - :guilabel:`Allow New Product` field. - - Then, define package capacity in the :guilabel:`Capacity by Package` tab, specifying the number - of packages for the designated :guilabel:`Package Type` and setting a maximum of `2.00` `Pallets` - for a specific location. - - .. image:: putaway/storage-category.png - :align: center - :alt: Create a storage category on the page. - -Once the storage category settings are saved, the storage category can be linked to a location. - -To do that, navigate to the location by going to :menuselection:`Inventory app --> Configuration --> -Locations`, and select the location. Click :guilabel:`Edit` and select the created category in the -:guilabel:`Storage Category` field. - -.. example:: - Assign the `High Frequency pallets` storage category to the `WH/Stock/pallets/PAL 1` - sub-location. - - .. image:: putaway/location-storage-category.png - :align: center - :alt: When a Storage Category is created, it can be linked to a warehouse location. - -Storage categories in putaway rules ------------------------------------ - -To continue the example from above, apply the `High Frequency Pallets` on the `PAL1` and `PAL2` -locations and :ref:`rework the putaway rules ` as follows: - -Assume one pallet of lemonade cans is received: - -- If PAL1 and PAL2 are empty, the pallet will be redirected to WH/Stock/Pallets/PAL1. -- If PAL1 is full, the pallet will be redirected to WH/Stock/Pallets/PAL2. -- If PAL1 and 2 are full, the pallet will be redirected to WH/Stock/Pallets. - -.. image:: putaway/smart-putaways.png - :align: center - :alt: Storage Categories used in a variety of putaway rules. diff --git a/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category.rst b/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category.rst new file mode 100644 index 000000000..ca0cf5943 --- /dev/null +++ b/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category.rst @@ -0,0 +1,176 @@ +================== +Storage categories +================== + +A *storage category* is used with :doc:`putaway rules `, as an extra location attribute to +automatically propose optimal storage locations for products. + +Follow these steps to complete the setup: + +#. :ref:`Enable the Storage Category feature ` +#. :ref:`Define a storage category ` with specific limitations +#. Assign a :ref:`category to storage locations ` +#. Add the storage category as an attribute to a :ref:`putaway rule + ` + +.. 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 +============= + +To enable storage categories, go to :menuselection:`Inventory app --> Configuration --> Settings`. +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`. + +.. image:: storage_category/enable-categories.png + :align: center + :alt: Show the Storage Categories feature. + +.. _inventory/routes/define-storage: + +Define storage category +======================= + +A storage category with specific limitations **must** be created first, before it is applied to +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`. + +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 `. + +The :guilabel:`Allow New Product` field defines when the location is considered available to store a +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. + +.. tip:: + When clicked, the :guilabel:`Location` smart button shows which storage locations the category + has been assigned to. + +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. + +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. + +.. 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. + + .. image:: storage_category/capacity-by-product.png + :align: center + :alt: Show storage category limiting by product count. + +.. _inventory/routes/set-capacity-package: + +Capacity by package +------------------- + +For companies using :doc:`packages <../../management/products/usage>`, it becomes 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. + +.. example:: + 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. + +.. _inventory/routes/assign-location: + +Assign to location +================== + +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. +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. + + .. 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: + +Putaway rule +============ + +With the :ref:`storage category ` and :ref:`location +` set up, create the :doc:`putaway rule ` 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. + +.. 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` + storage category :ref:`assigned to them `. + + .. image:: storage_category/smart-putaways.png + :align: center + :alt: Storage Categories used in a variety of putaway rules. + +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 `. + +Continuing the example from above, the `High Frequency Pallets` storage category is assigned to the +`PAL1` and `PAL2` locations. + +Then, :ref:`putaway rules ` 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 +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`. + diff --git a/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category/capacity-by-product.png b/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category/capacity-by-product.png new file mode 100644 index 0000000000000000000000000000000000000000..e27bccfc8cf026171f900578d64ceb030d8aa1ee GIT binary patch literal 9843 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 literal 0 HcmV?d00001 diff --git a/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category/enable-categories.png b/content/applications/inventory_and_mrp/inventory/routes/strategies/storage_category/enable-categories.png new file mode 100644 index 0000000000000000000000000000000000000000..850dbae337ebddeeac8be954725caf78b4f22c5c GIT binary patch literal 11646 zcmaKS1z227&*WM?utNj5W^oJ?j<=+7#@eiF}T;&s2hrV0@05l)~*+1;| z1z)OJ_(Qtom$I<_&Wb3$| z+LF)Er-ku*Xry!SQgxI^$d}`Z3SdqB85BBS9FZ_|{m%Wz$?2*4CX`pgpfAqX5j5ZX z1oiwB@m^K~Ca}0`Wz)$ww)bU1*PCH22iCq{80xnilSZIt^HAuNTu>-(9~@+p3a_!Sp0wFYqIDcI{+;FtciOIpOQ{;6QEX>=If`wwQ(kpOm+Y;`_&u%Ee14 zM)7o^rDpok6Tus8(UP8yy|c|yhi~&|LO+k4vLMEFO?w;N%L^kZpTmT7e3UIisVnDn zT~na9XCHO-n)adRS2yAD>2kD;2M60upf3hl$v&l1z4Zy?ahdXou{dNxqs!}ynZW*U zx%Qvpqeo_fta!^z5dOot_UKXBI^&9dbw+ny+1u|tk(}ty85Si ztm+C%YlIqC_l_4L94yxEpoyw)Osn?O7EWC!j~0p@RKx@o?eeBBpl;u19e5dwKXQ`U z6^sA?Q~-G?aZS&~;~b3lczeYCSi0_3{1$~pimBo$-r-cGUGR1x?cpt&(=yT+HkpDX zqL`u*9QF!89y->K7;#S@$ogg(Z4i;^V&>5kan(Q}7?QhEDRCcIFyu+8X$Y9&5`cLg zHx6gtw%3mtk(Qx+g>A>}XZ1JVJN-_*)`Vqa0Y8W&La+hI7(e9jNnYahf4#8cg=Prg zVPZTWz3uQa7<#-)=@$v$d2>xZYHWvYoAkLq2F~xa%Cw0M9Fqy!Dzo ze90t2)Raes>20El9{sAh9L)+f>*-`QxMELSAx)}G8DF|XYiv_`^k>7!4@L7QQq+A~ z3HR9;hYR}BRD5g!@1$y6SxX znBlRVr|wWIxUPV#+!Q4Zb@0cw^8hHa@Qp<%4E#=vjkv6N>6!HguREDs7mSK;o0<`SNERiAUa9w!4@%J2BgB(H?Pn?=SCc!WwsZASof%d6LSP?q5sb3ref+YlS+1=-;TP^VBWb z?t>-dnY?E5c>uZ01;dp)oUKU;d-ZK@Ps+@s3K)!T+Z9}cU}>*fEY$WN`15c)hGTXu8Y-#`vFN>vR$iw1I^%0m!j(;=mW~ z%QEatQshvI#7{&e9Bh}atfAK(rX-aT?6=*!0EaUMD=KhXH=dXC#xIl012anB=;+0a zeDVbeBx8ZcA8W17V?XX6OINIOn)F&`^`Ns7z?;x#r8)87b~ULsq*!tlQ-k%h8z@$$ zEkS3I;nB1PHLW^ut#r{1(Zzm0p0_V-b zxPlh8Ds=nS;&5qqz`$(DlOf+_M-2$ktJ)&;F&f_+XVXtgB|AI3VH@1^5($_XL3uim{it;B)_!~Wgx1a+D1@)HL};>W z={JWfL5UNGPEh{qqf_UVA4J*qm2Ymv^p0q=0rq(f>D{9;>EhM*jP?^AM`Evu?~%Sf z!@#n6!S}$%HmzRPixBaZW(#{4Fil3x#cqV4%KlGtfRe23dPy_E-q^NK%u`di96 zM;_+Jgs1Y>OB`-E^Gp5N(5YSDuxI(cA16GfZu3E)?)|#P#EsDMLA7MH2&}ZBe9f|q z|MOK7|8KM|4}Ch)ln<4VWAkF)Y;E1QQv+FqHu&+PQyF$4mPZWRjYmDt0!>GsOW^%% z9wRz$BNAjSZ6kE{;aJH$wD^}eb&JXRWlsX;uuaZ=F8z$ zN5)0#l~%6yZNOGz?91k+XF$i+KLMK-eq;3eD0g{QG0BWE+T_BSPm79y&rZ}!j@NKr zv38h@3+r+hRpROs1-kvTTw5YSaCY%7Y$Q6gqry60?bRyT_iZ_xt@|XlE z0nbx|9Db|jT$3S=zTu23H@AzKmsY$88-LlC@RB5qNkD$Lh8Gw4sT-a?1-C(`)FQ94 z=J3uy{{d$qtoCG_htm^%|Ir5LZG8@RI`@`zLOc+fc8`d6wlu&(& z=lwNrOLk*bO^Ct@>|{rFLCQOX-;L5~Sll%~6jEojQ;`@B(hM{HnkfP^{(zz|xRIrw z;N)&>(=`kFIHWkCrvNG6zGW`PXAt&pDlF&_))B6@AG56!ukWN_K*hj=6 zu0qX@ZhF@)E#41pIiV_X@hs*p5_1v;4=C*Z^A*gZTe^}i%VT_^AF?)T@&z0mh7*R} zt#%&r995R(aFO?tLNF1Tsizy;pZx0#oxe!r=m<=!aCe*2$-dX_qGl>(4R#)bp^L~f z0=Afa?`A@>*q7X3pXyuE7P!W2X(bswW|#BLRDp}wXHYy~cVJHgQTc>HRPMv9P)c}8{&?NxR-#rMwdnA9>FdTL z)G;Y5Vy4NpDW(e{rmQMreM7f~h-0+znF%CpX}0M=wK_DKX z*3-M7T^~Lj_3)zACF<2_#NZx{Tc|)aVpqusFkL56L>1}hL ze#g?xu_HPNiB3w~4j~|)#7e|J?84uWbTo);F!vLXHHlDN

PAjZdA6HpTOM{XR0m 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