[IMP] inventory: refactor WH and locations

closes odoo/documentation#10296

X-original-commit: c4fd10f94e
Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: Jess Rogers <104637850+jero-odoo@users.noreply.github.com>
Co-authored-by: ksc-odoo <73958186+ksc-odoo@users.noreply.github.com>
This commit is contained in:
Felicious 2024-07-15 23:21:31 +00:00
parent b296759037
commit e33dc3b33e
30 changed files with 305 additions and 342 deletions

View File

@ -93,6 +93,8 @@ match is found:
:align: center
:alt: Some examples of putaway rules.
.. _inventory/warehouses_storage/storage-category:
Storage categories
==================

View File

@ -73,7 +73,7 @@ steps below to finish configuring the virtual parent warehouse.
:alt: New warehouse form.
.. seealso::
- :doc:`Warehouse configurations <../inventory_management/warehouses_locations>`
- :doc:`Warehouse configurations <../inventory_management/warehouses>`
- :ref:`Incoming and outgoing shipments <inventory/receipts_delivery_one_step/wh>`
- :doc:`Resupply from another warehouse <../inventory_management/resupply_warehouses>`

View File

@ -1,18 +1,144 @@
:nosearch:
:show-content:
:hide-page-toc:
====================
Inventory management
====================
In the Odoo *Inventory* app, :doc:`warehouses <inventory_management/warehouses>` handle the broader
organization and distribution of stock across different physical sites, while :doc:`locations
<inventory_management/use_locations>` provide a more detailed breakdown within each warehouse for
efficient item management.
This document serves as an introduction to the terminology and concepts necessary to master
*Inventory*. For specific instructions and examples of how things work, refer to individual
documentation pages.
.. seealso::
`Odoo Tutorials: Warehouses & Locations <https://www.youtube.com/watch?v=zMvudZVLuUo>`_
Warehouses
==========
:doc:`Warehouses <inventory_management/warehouses>` represent a physical place, with a physical
address, where a company's items are stored.
Configure :doc:`routes <inventory_management/use_routes>` in a warehouse to control how products
move to customers, from vendors, within the warehouse, or :doc:`between warehouses
<inventory_management/resupply_warehouses>`.
Locations
=========
:doc:`Locations <inventory_management/use_locations>` refer to specific areas within a warehouse,
such as shelves, floors, or aisles. These are sub-divisions within a warehouse, and are unique to
that warehouse. Users can create and manage numerous locations within a single warehouse to organize
inventory more precisely.
.. seealso::
- :doc:`inventory_management/use_locations`
- :doc:`inventory_management/count_products`
- :doc:`inventory_management/cycle_counts`
- :doc:`inventory_management/scrap_inventory`
.. _inventory/warehouses_storage/location-type:
Location types
--------------
*Location types* in Odoo help categorize and manage where products are, and what actions need to be
taken with them. By default, on the :menuselection:`Inventory app --> Configuration --> Locations`
page, only internal locations are displayed.
To view the seven location types in Odoo, select any location, and in the :guilabel:`Location Type`
field, there are:
- :guilabel:`Vendor Location`: defines an area where products purchased from vendors originate.
Items here are **not** in stock.
- :guilabel:`View`: used to organize and structure the warehouse hierarchy. For example, the view
location `WH` (short for warehouse) groups all internal locations, such as `Stock`, receiving
docks, quality checkpoints, and packing areas to show they all belong to the same warehouse.
.. important::
View locations should **not** contain products, but it is possible to move them there.
- :guilabel:`Internal Location`: storage locations within the warehouse. Items stored in these
locations are accounted for in :doc:`inventory valuation
<inventory_valuation/using_inventory_valuation>`.
- :guilabel:`Customer Location`: where sold products are tracked; items here are no longer in stock.
- :guilabel:`Inventory Loss`: counterpart location to consume missing items or create stock,
accounting for discrepancies.
In Odoo, examples of inventory loss locations are *Inventory Adjustment*, used to account for
discrepancies during an inventory count, and *Scrap*, which is where damaged goods are sent to
account for inventory losses.
.. example::
`Virtual Locations/Inventory Adjustment` is a location with the :guilabel:`Inventory Loss`
type. The database shows `65` units in `WH/Stock`, but an inventory check reveals `60`. To
correct the quantity, five units are moved from `WH/Stock` to `Virtual Locations/Inventory
Adjustment`.
.. image:: inventory_management/inventory_management/inventory-loss.png
:align: center
:alt: Product ends up in Virtual Locations/Inventory Adjustment.
- :guilabel:`Production`: where raw materials are consumed, and :doc:`manufactured products
<../../manufacturing>` are created.
- :guilabel:`Transit Location`: used for inter-company or inter-warehouse operations to track
products shipped between different addresses, such as :ref:`Physical Locations/Inter-warehouse
transit <inventory/warehouses_storage/interwarehouse-transit>`.
.. image:: inventory_management/inventory_management/locations.png
:align: center
:alt: List of locations in Odoo.
.. note::
In Odoo, location types are color-coded:
- **Red**: internal locations
- **Blue**: view locations
- **Black**: external locations (including inventory loss, vendor, and customer locations).
View locations in Odoo
----------------------
Odoo databases include pre-configured view locations to organize the hierarchy of locations. These
provide helpful context, and distinguish between internal and external locations.
- *Physical locations* serve as an umbrella for external locations, without changing a product's
inventory value. (Inventory valuation changes occur when products move from internal to external
locations).
.. _inventory/warehouses_storage/interwarehouse-transit:
.. example::
When moving products in warehouses `WH` and `WH2`, the items are not in either warehouse, but
still belong to the company. While in transit, they are placed in the `Inter-warehouse transit`
location, a :guilabel:`Transit Location` type.
This location is under the view location, `Physical Locations`, indicating that
`Inter-warehouse transit` is outside of a warehouse, but still part of the company. Doing so
does not affect the inventory valuation of the products.
- *Partner locations* group customer and vendor locations (external locations) together. Transfers
to these locations affect inventory valuation.
- *Virtual locations* are locations that do **not** exist physically, but it is where items that are
not in inventory can be placed. These can be items that are no longer in inventory due to loss, or
other factors.
.. toctree::
:titlesonly:
inventory_management/resupply_warehouses
inventory_management/warehouse_replenishment_transfer
inventory_management/warehouses_locations
inventory_management/create_a_second_warehouse
inventory_management/use_routes
inventory_management/warehouses
inventory_management/use_locations
inventory_management/count_products
inventory_management/cycle_counts
inventory_management/scrap_inventory
inventory_management/resupply_warehouses
inventory_management/warehouse_replenishment_transfer
inventory_management/use_routes

View File

@ -1,139 +0,0 @@
=========================
Create a second warehouse
=========================
In Odoo *Inventory*, a *warehouse* is a physical building or space where items are stored. By
default, each Odoo database has one warehouse already pre-configured, with the address set as the
company's address.
However, it is possible to set up multiple additional warehouses, and transfer stored items between
them.
Configuration
=============
To create a second warehouse, the *Storage Locations* feature must be enabled. To enable this
feature, navigate to :menuselection:`Inventory app --> Configuration --> Settings`. Under the
:guilabel:`Warehouse` section, tick the checkbox next to :guilabel:`Storage Locations`, and
:guilabel:`Save` changes.
.. image:: create_a_second_warehouse/create-a-second-warehouse-enabled-setting.png
:align: center
:alt: Warning pop-up window for creating a second warehouse before enabling Storage Locations.
.. note::
Creating a second warehouse without first enabling the *Storage Locations* feature triggers a
:guilabel:`Warning` pop-up window. It indicates creating a second warehouse automatically
activates the *Storage Locations* setting.
Create new warehouse
====================
To create a new warehouse, navigate to :menuselection:`Inventory app --> Configuration -->
Warehouses`, and click :guilabel:`New`. Doing so opens a blank warehouse creation form.
Fill out the following fields as necessary:
- :guilabel:`Warehouse`: the full name of the warehouse.
- :guilabel:`Short Name`: the abbreviated code used to identify the warehouse, i.e. `WH2` (the short
name for the default warehouse in Odoo is `WH`).
- :guilabel:`Company`: the company that owns the warehouse. This can be set as the company that owns
the Odoo database or the company of a customer or vendor.
- :guilabel:`Address`: the address where the warehouse is located. By default, this is set to the
company's address in the database.
.. image:: create_a_second_warehouse/create-a-second-warehouse-new-warehouse-settings.png
:align: center
:alt: Filled out warehouse name and address settings on warehouse creation form.
Under the :guilabel:`Warehouse Configuration` tab, configure the warehouse's main workflow in the
:guilabel:`Shipments` section, and set available replenishment methods in the :guilabel:`Resupply`
section.
.. important::
The :guilabel:`Shipments` and :guilabel:`Resupply` sections only appear if the
:guilabel:`Multi-Step Routes` checkbox is enabled in :menuselection:`Inventory app -->
Configuration --> Settings`, under the :guilabel:`Warehouse` heading. For more information about
routes and how they work in Odoo, see :ref:`Using Routes and Pull/Push Rules <use-routes>`.
In the :guilabel:`Shipments` section, choose between one, two, or three-step processes for both
incoming and outgoing shipments.
In the :guilabel:`Resupply` section, edit the following settings:
- :guilabel:`Dropship Subcontractors`: enable this feature to coordinate with vendors, and have
components dropshipped directly to subcontractors for manufacturing.
- :guilabel:`Resupply Subcontractors`: allow subcontractors to be resupplied with goods from this
warehouse.
- :guilabel:`Manufacture to Resupply`: when products are manufactured, they can be delivered to this
warehouse.
- :guilabel:`Manufacture`: the route that should be followed when manufacturing goods inside the
warehouse. Choose from one, two, and three-step production.
- :guilabel:`Buy to Resupply`: when products are purchased, they can be delivered to this warehouse.
- :guilabel:`Resupply From`: Check the box next to the other warehouses from which this warehouse
can replenish products. If the current warehouse does not have the stock, it can also pull
products from these selected warehouses in the database. Automatic resupply routes will be created
accordingly.
.. image:: create_a_second_warehouse/create-a-second-warehouse-warehouse-configuration-tab.png
:align: center
:alt: Filled out Warehouse Configuration tab settings on warehouse creation form.
Once ready, click :guilabel:`Save` to save the new warehouse's settings.
Add inventory to a new warehouse
================================
If a new warehouse is created to represent a real-world storage location with existing stock, update
the warehouse's stock using an inventory adjustment.
.. seealso::
:doc:`count_products`
To perform an inventory adjustment, navigate to :menuselection:`Inventory app --> Operations -->
Physical Inventory`, and click :guilabel:`New`. Doing so adds a new line at the bottom of the list
of inventory adjustments.
Configure the line by filling out the following fields as necessary:
- :guilabel:`Location`: the location where the product is currently stored in the new warehouse.
This can be set as the overall warehouse, or a location within the warehouse.
- :guilabel:`Product`: the product being added to inventory.
- :guilabel:`Lot/Serial Number`: the lot that the product belongs to or the serial number used to
identify it, if the product is tracked.
- :guilabel:`On Hand Quantity`: the total quantity of the product stored in the location for which
inventory is being adjusted. For a new warehouse or location where a count or a prior inventory
adjustment has not taken place, this should be set to `0.00`.
- :guilabel:`UoM`: the unit of measure (UoM) used for counting the product.
- :guilabel:`Counted Quantity`: the amount of the product being added to inventory.
- :guilabel:`Difference`: the difference between the on-hand and counted quantities. This
automatically updates to reflect the value entered in the :guilabel:`Counted Quantity` column.
- :guilabel:`Scheduled Date`: the date selected for the next inventory count for this product.
- :guilabel:`User`: the user who recorded the inventory adjustment in the database.
.. image:: create_a_second_warehouse/create-a-second-warehouse-inventory-adjustment.png
:align: center
:alt: Filled out inventory adjustment line for product in new warehouse.
Once each line for the products being added to the new warehouse is configured, click
:guilabel:`Apply` on each line to apply the new inventory counts.
The values in the :guilabel:`On Hand Quantity` column update to reflect those in the
:guilabel:`Counted Quantity` column, and the products added appear in the new warehouse's stock.
.. note::
If products tracked using a lot number or serial number are added without specifying the tracking
number, a :guilabel:`Tracked Products in Inventory Adjustment` pop-up window appears upon
clicking :guilabel:`Apply` on that product's line.
The pop-up indicates tracked products were added, but the lots/serial numbers were not defined.
To apply the adjustment without the numbers, click :guilabel:`Apply`. To add the numbers before
applying, click :guilabel:`Discard`, and add the numbers. Then, once ready, click
:guilabel:`Apply` again.
.. image:: create_a_second_warehouse/create-a-second-warehouse-popup-window.png
:align: center
:alt: Tracked Products in Inventory Adjustment pop-up window.
.. seealso::
:doc:`warehouses_locations`

View File

@ -21,21 +21,7 @@ from physical inventory, and placing it in a virtual scrap location (*Virtual Lo
physical inventory.
For more information about virtual locations, see the documentation about the different types of
:ref:`locations <inventory/warehouses_storage/difference-warehouse-location>`.
Configuration
=============
To use locations in warehouse, including a virtual scrap location, the *Storage Locations* feature
must first be enabled.
To do so, navigate to :menuselection:`Inventory app --> Configuration --> Settings`, and scroll down
to the :guilabel:`Warehouse` section. Tick the checkbox next to :guilabel:`Storage Locations` to
enable the feature, and click :guilabel:`Save`.
.. image:: scrap_inventory/scrap-inventory-enabled-setting.png
:align: center
:alt: Enabled Storage Locations setting in Inventory app settings.
:ref:`location types <inventory/warehouses_storage/location-type>`.
Scrap from stock
================

View File

@ -2,66 +2,71 @@
Locations
=========
In Odoo *Inventory*, a *location* is a specific space within a warehouse. This can be a shelf, room,
aisle, rack, bin, etc.
There are also external and virtual locations. For example, customer locations, and locations
specifically designated as "virtual", instead of real, physical locations.
Locations allow for the storage of products in designated areas of the warehouse, to help track
inventory accurately.
A *location* is a specific space within a warehouse. This can be a shelf, room, aisle, etc.
Configuration
=============
To specify storage locations, the *Storage Locations* setting must be enabled. To do so, navigate to
:menuselection:`Inventory app --> Configuration --> Settings`, and scroll down to the
:guilabel:`Warehouse` section. Tick the checkbox next to :guilabel:`Storage Locations` to enable the
feature, and click :guilabel:`Save`.
To create specific storage locations, enable the *Storage Locations* feature by going to
:menuselection:`Inventory app --> Configuration --> Settings`. In the :guilabel:`Warehouses`
section, tick the :guilabel:`Storage Locations` checkbox. Then, click :guilabel:`Save`.
.. image:: use_locations/use-locations-enabled-setting.png
.. note::
Typically, the :guilabel:`Storage Locations` feature is used with :doc:`Multi-Step Routes
<use_routes>`, which controls how products move between locations.
.. image:: use_locations/enable-location.png
:align: center
:alt: Enabled Storage Location setting in Inventory app settings.
:alt: Show Storage Locations feature.
Once the :guilabel:`Storage Locations` feature is enabled, two additional internal link options
appear below it: :guilabel:`Locations` and :guilabel:`Putaway Rules`. Click :guilabel:`Locations` to
open a list of all existing locations in the warehouse.
Create new location
===================
Create a new location inside a warehouse
========================================
After enabling *Storage Locations*, go to :menuselection:`Inventory app --> Configuration -->
Locations`.
To create a new location inside a warehouse, navigate to :menuselection:`Inventory app -->
Configuration --> Locations`. Doing so opens a list of all existing locations. Click :guilabel:`New`
to open a new location creation form.
.. image:: use_locations/locations.png
:align: center
:alt: List of internal locations.
In the :guilabel:`Location Name` field, assign a name for the new location. In the :guilabel:`Parent
Location` field, assign the location that this new location exists in.
On this page, click :guilabel:`New`. The new location form can then be configured as follows:
.. example::
A new location `Gate 1` is created. Its parent location is `Dispatch Zone`. In the
:guilabel:`Parent Location` for `Gate 1`, select `Dispatch Zone`.
- :guilabel:`Location Name`: recognizable name of the location.
- :guilabel:`Parent Location`: the location within which the new location exists. After the location
is created, it is listed on the :guilabel:`Locations` page using a *location hierarchy*, to
describe how a specific location fits within larger areas of the warehouse.
In the :guilabel:`Additional Information` section, fill out the necessary details for the new
location.
.. example::
In `WH/Stock/Zone A/Refrigerator 1`, "Refrigerator 1" is the location name, "Zone A" is the
parent location, and everything before it is the path showing where this spot is within the
warehouse.
In the :guilabel:`Location Type` field, select which type of location this is. There are seven
different types of locations to choose from:
Additional Information section
------------------------------
- :guilabel:`Vendor Location`: virtual location representing the source location for products coming
from vendors.
- :guilabel:`View`: virtual location used to create a hierarchical structure for a warehouse;
aggregates its child locations. **Should not directly contain products**.
- :guilabel:`Internal Location`: physical location inside a warehouse.
- :guilabel:`Customer Location`: virtual location representing the destination location for products
sent to customers.
- :guilabel:`Inventory Loss`: virtual location serving as a counterpart for inventory operations.
Used to correct stock levels of physical inventory.
- :guilabel:`Production`: virtual counterpart location for production operations. This location
consumes components and produces finished products.
- :guilabel:`Transit Location`: counterpart location that should be used in inter-company or
inter-warehouse operations.
In addition to the required fields above, configure the following location fields to ensure the
location serves its intended purpose in the database:
.. image:: use_locations/use-locations-new-location-form.png
- :guilabel:`Location Type`: from the drop-down menu, choose :guilabel:`Vendor Location`,
:guilabel:`View`, :guilabel:`Internal Location`, :guilabel:`Customer Location`,
:guilabel:`Inventory Loss`, :guilabel:`Production`, or :guilabel:`Transit Location` to categorize
the location. For details on each location type, refer to the :ref:`Location Types section
<inventory/warehouses_storage/location-type>`.
- :guilabel:`Storage Category`: only available with the :ref:`Storage Categories
<inventory/warehouses_storage/storage-category>` feature enabled in :menuselection:`Inventory app
--> Configuration --> Settings`.
- :guilabel:`Company`: the company the location belongs to.
- :guilabel:`Is a Scrap Location?`: tick this checkbox to allow for scrapped/damaged goods to be
stored in this location.
- :guilabel:`Is a Return Location?`: tick this checkbox to allow products to be returned to this
location.
- :guilabel:`Barcode`: used with the *Barcode* app, enter the barcode to :ref:`identify actions
<barcode/setup/location>` at this location when scanned.
- :guilabel:`Replenish Location`: used for :doc:`configuring routes <use_routes>`, tick this
checkbox to set the location as a destination for receiving products from *Buy*, *Manufacture*, or
other procurement routes, ensuring products are correctly supplied to the warehouse.
.. image:: use_locations/new-location.png
:align: center
:alt: Additional Information section of new location creation form.
@ -93,26 +98,50 @@ from this location.
.. _inventory/location-hierarchy:
Create location hierarchies
===========================
Cyclic Counting section
-----------------------
The *Parent Location* setting on the new location form allows for a location to exist within a
warehouse, or below another location.
To schedule regular inventory counts at this location, set the :guilabel:`Inventory Frequency
(Days)` field to the desired interval. By default, it is set to `0` (no scheduled counts).
Every location can serve as a parent location, and every parent location can have multiple locations
within it, allowing for the creation of a hierarchical structure.
For example, setting this field to `30`, schedules a count every thirty days. For more specifics on
setting up and using this feature, refer to the :doc:`Cycle Counts documentation <cycle_counts>`.
The :guilabel:`Last Effective Inventory` field displays the date the last inventory count at this
location occurred. When scheduled inventory counts are enabled, the :guilabel:`Next Expected
Inventory` field displays the date of the next inventory count.
.. example::
Location hierarchy could be organized so that a small refrigerator is located on a specific
shelf, which is located in the warehouse.
With inventory counts scheduled to occur every `30` days, and the :guilabel:`Last Effective
Inventory` count occurring on July 16, the :guilabel:`Next Expected Inventory` is August 15.
.. image:: use_locations/use-locations-hierarchy.png
.. image:: use_locations/scheduled-count.png
:align: center
:alt: Location hierarchy of small refrigerator, on a shelf in a warehouse.
:alt: Show Cyclic Count section of the locations form.
To create the location hierarchy in the example above (`WH/Stock/Shelf 2/Small Refrigerator`),
set the warehouse stock as the parent of the shelf, and the shelf as the parent of the small
refrigerator. This can be adapted to a hierarchy of any magnitude.
Logistics section
-----------------
In the :guilabel:`Logistics` section of the locations form, optionally select a :guilabel:`Removal
Strategy` to determine the order and priority of how products are picked from inventory. The options
are: :guilabel:`First In First Out (FIFO)`, :guilabel:`Last In First Out (LIFO)`, :guilabel:`Closest
Location`, and :guilabel:`First Expiry First Out (FEFO)`.
.. seealso::
:doc:`warehouses_locations`
:doc:`../removal_strategies`
Current stock at location
=========================
To view the current stock at a single location, go to :menuselection:`Inventory app -->
Configuration --> Locations`, and select the desired location.
Next, click the :guilabel:`Current Stock` smart button to get a list of all products at the
location.
.. example::
A list of current stock at `Shelf 1` consists of `266` cabinets and `39` desks.
.. image:: use_locations/current-stock.png
:align: center
:alt: Show stock at Shelf 1.

View File

@ -0,0 +1,73 @@
==========
Warehouses
==========
In the Odoo *Inventory* app, a *warehouse* is a physical space with an address for storing items,
such as a storage facility, distribution center, or physical store.
Each database has a pre-configured warehouse with the company's address. Users can set up multiple
warehouses, and :doc:`create stock moves <use_routes>` between them.
Configuration
=============
To create or manage warehouses, go to :menuselection:`Inventory app --> Configuration -->
Warehouses`.
Then, select an existing warehouse, or create a new one by clicking :guilabel:`New`. Doing so opens
the warehouse form, which contains the following fields:
- :guilabel:`Warehouse` (*required field*): the full name of the warehouse.
- :guilabel:`Short Name` (*required field*): the abbreviated code for the warehouse (maximum five
characters). The short name for the default warehouse in Odoo is `WH`.
.. important::
The :guilabel:`Short Name` appears on warehouse documents, so it is recommended to use an
memorable one, like "WH[first letters of location]" (e.g. `WHA`, `WHB`, etc.).
- :guilabel:`Address` (*required field*): the address of the warehouse. To change the warehouse
address when creating two or more warehouses, hover over the field, and click the
:icon:`fa-arrow-right` :guilabel:`(right arrow)`.
- :guilabel:`Company` (*required field*): the company that owns the warehouse; this can be set as
the company that owns the Odoo database, or the company of a customer or vendor.
- :guilabel:`Intrastat region`: :doc:`region name
<../../../../finance/accounting/reporting/intrastat>` required for companies in the European
Union.
.. important::
The options below are available **only** when the *Multi-Step Routes* feature is enabled in
:menuselection:`Inventory app --> Configuration --> Settings`.
- :guilabel:`Incoming Shipments`: select the option to receive products from the warehouse in
:doc:`one <../../shipping_receiving/daily_operations/receipts_delivery_one_step>`, :doc:`two
<../../shipping_receiving/daily_operations/receipts_delivery_two_steps>`, or :doc:`three
<../../shipping_receiving/daily_operations/receipts_three_steps>` steps.
- :guilabel:`Outgoing Shipments`: select the option to deliver products from the warehouse in
:doc:`one <../../shipping_receiving/daily_operations/receipts_delivery_one_step>`, :doc:`two
<../../shipping_receiving/daily_operations/receipts_delivery_two_steps>`, or :doc:`three
<../../shipping_receiving/daily_operations/delivery_three_steps>` steps.
- :guilabel:`Dropship Subcontractors`: available with the *Subcontracting* feature enabled in
:menuselection:`Manufacturing app --> Configuration --> Settings`. Tick this checkbox to purchase
components from vendors, and dropship them to subcontractors.
- :guilabel:`Resupply Subcontractors`: available with the *Subcontracting* feature, tick this
checkbox to supply subcontractors with raw materials stored in *this* specific warehouse.
- :guilabel:`Manufacture to Resupply`: tick this checkbox to allow for items to be manufactured in
this warehouse.
- :guilabel:`Manufacture`: choose whether to manufacture products in :doc:`one
<../../../manufacturing/basic_setup/one_step_manufacturing>`, :doc:`two
<../../../manufacturing/basic_setup/two_step_manufacturing>`, or :doc:`three steps
<../../../manufacturing/basic_setup/three_step_manufacturing>`.
- :guilabel:`Buy to Resupply`: tick this checkbox to allow for purchased products to be delivered to
the warehouse.
- :guilabel:`Resupply From`: available with multiple warehouses in the database, select warehouses
to pull stock *from* to fulfill orders.
.. seealso::
:doc:`Use inventory adjustments to add stock to new warehouses <count_products>`
.. image:: warehouses/warehouse-form.png
:align: center
:alt: Example warehouse form.

View File

@ -1,115 +0,0 @@
===============================
Manage warehouses and locations
===============================
Terminology
===========
Warehouse
---------
In Odoo *Inventory*, a *warehouse* is a physical building or space where items are stored. By
default, each Odoo database has one warehouse already pre-configured, with the address set as the
company's address.
Multiple warehouses can be set up in Odoo, and stock moves can be created between warehouses.
.. _inventory/warehouses_storage/difference-warehouse-location:
Location
--------
In Odoo *Inventory*, a *location* is a specific space within a warehouse. This can be a shelf, room,
aisle, rack, bin, etc. Locations allow for the storage of products in designated areas of the
warehouse, to help track inventory accurately.
A location is only part of *one* warehouse, and can **not** be linked to multiple warehouses. As
many locations can be configured as needed under one warehouse.
There are three types of locations in Odoo *Inventory*:
- **Physical Locations**: internal locations within a single warehouse owned by the company. This
can include shipping and loading docks, aisles, shelves, storage areas, and more.
- **Partner Locations**: external locations, such as designated spaces in a customer or vendor's
warehouse. They are similar to physical locations, but they are **not** owned by the user's
company.
- **Virtual Locations**: this type of location does not exist as a physical space, but products can
be "stored" here when they are not physically in an inventory yet. *Inventory Loss* and
*Procurements* are examples of virtual locations, for products that are lost or in transit to the
warehouse.
Every location within a warehouse can serve as a parent location, and every parent location can have
multiple locations within it, allowing for the creation of a hierarchical structure. This allows for
more detailed levels of analysis of the stock operations and the organization of the warehouses.
Configuration
=============
For companies with one warehouse, no additional settings are required to activate before editing the
warehouse.
For companies with multiple warehouses, and to create locations within a warehouse, the *Storage
Locations* feature must be enabled.
To do so, navigate to :menuselection:`Inventory app --> Configuration --> Settings`, and scroll down
to the :guilabel:`Warehouse` section. Tick the :guilabel:`Storage Locations` checkbox to enable the
feature, and click :guilabel:`Save`.
.. image:: warehouses_locations/warehouses-locations-enabled-setting.png
:align: center
:alt: Storage Locations feature enabled in the Inventory app settings.
.. tip::
To manage warehouse *routes*, such as two-and-three-step receipts and deliveries, enable the
*Multi-Step Routes* feature from the *Inventory* app settings, as well. For more on routes, see
:doc:`use_routes`.
Create a new warehouse
======================
To create a new warehouse, navigate to :menuselection:`Inventory app --> Configuration -->
Warehouses`, and click :guilabel:`New`. Doing so opens a blank warehouse creation form.
Begin by assigning a :guilabel:`Warehouse Name`, and a :guilabel:`Short Name`. The :guilabel:`Short
Name` field is limited to a **five** character maximum.
.. image:: warehouses_locations/warehouses-locations-new-warehouse.png
:align: center
:alt: New warehouse creation form name configuration fields.
.. important::
The :guilabel:`Short Name` appears on transfer orders and other warehouse documents. Odoo
recommends using an understandable one like `WH/[first letters of location]`.
For example, a warehouse named `Warehouse #2` might have the :guilabel:`Short Name` `WH2` (the
short name for the default warehouse in Odoo is `WH`).
Once the warehouse is created, navigate back to the :menuselection:`Inventory` dashboard. New
operations for the newly created warehouse are automatically generated there.
For more on creating new warehouses, see :doc:`create_a_second_warehouse`.
.. image:: warehouses_locations/warehouses-locations-new-wh-operations.png
:align: center
:alt: Inventory app dashboard displaying new transfers for the new warehouse.
.. note::
Creating a second warehouse without first enabling the *Storage Locations* feature triggers a
:guilabel:`Warning` pop-up window. It indicates creating a second warehouse automatically
activates the *Storage Locations* setting.
Create a new location
=====================
To create a new location inside a warehouse, navigate to :menuselection:`Inventory app -->
Configuration --> Locations`. Doing so opens a list of all existing locations. Click :guilabel:`New`
to open a new location creation form.
In the :guilabel:`Location Name` field, assign a name for the new location. In the :guilabel:`Parent
Location` field, assign the location that this new location exists in.
For more on locations, see :doc:`use_locations`.
.. image:: warehouses_locations/warehouses-locations-new-location.png
:align: center
:alt: New warehouse location creation form.

View File

@ -24,8 +24,7 @@ and :guilabel:`Category`, which shows products within a selected product categor
.. note::
The :guilabel:`Warehouse` grouping is only available when there are multiple warehouses in the
database. Refer to the :doc:`../inventory_management/create_a_second_warehouse` documentation for
more details.
database. Refer to the :doc:`../inventory_management/warehouses` documentation for more details.
In the report itself, the columns represent:

View File

@ -14,8 +14,8 @@ space, but rather a designation in Odoo that is used to track items that are no
inventory.
.. seealso::
For more information, see the documentation about the different types of :ref:`locations
<inventory/warehouses_storage/difference-warehouse-location>`.
For more information, see the documentation about the different types of :doc:`locations
<../../inventory/warehouses_storage/inventory_management>`.
Components can be scrapped from both the *Manufacturing* app and the *Shop Floor* module, before the
associated manufacturing order (MO) is closed. Finished products can only be scrapped from the

View File

@ -26,7 +26,7 @@ Once activated, you can:
.. seealso::
- :doc:`../../../inventory_and_mrp/inventory/shipping_receiving/setup_configuration/delivery_method`
- :doc:`../../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses_locations`
- :doc:`../../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses`
Practical application
=====================

View File

@ -16,7 +16,7 @@ Configuration
=============
To set up a user default warehouse, the :doc:`storage locations
</applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses_locations>`
<../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/use_locations>`
feature needs to be activated in the **Inventory** app. It is also necessary to have more than one
warehouse in your database.
@ -24,7 +24,7 @@ You can either set it up :ref:`for your profile <default-warehouse/my-profile>`,
users <default-warehouse/all-users>`.
.. seealso::
:doc:`/applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses_locations`
:doc:`../../inventory_and_mrp/inventory/warehouses_storage/inventory_management/use_locations`
.. _default-warehouse/my-profile:

View File

@ -70,7 +70,9 @@ applications/inventory_and_mrp/inventory/management/warehouses.rst applications/
applications/inventory_and_mrp/inventory/management/warehouses/resupply_warehouses.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/resupply_warehouses.rst # /inventory_and_mrp/inventory/management/warehouses/* -> /inventory_and_mrp/inventory/warehouses_storage/inventory_management/*
applications/inventory_and_mrp/inventory/management/warehouses/warehouse_replenishment_transfer.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouse_replenishment_transfer.rst # /inventory_and_mrp/inventory/management/warehouses/* -> /inventory_and_mrp/inventory/warehouses_storage/inventory_management/*
applications/inventory_and_mrp/inventory/management/warehouses/warehouses_locations.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses_locations.rst # /inventory_and_mrp/inventory/management/warehouses/* -> /inventory_and_mrp/inventory/warehouses_storage/inventory_management/*
applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses_locations.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses.rst # /inventory/warehouses_storage/inventory_management/warehouses_locations -> /inventory/warehouses_storage/inventory_management/warehouses
applications/inventory_and_mrp/inventory/management/warehouses/create_a_second_warehouse.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/create_a_second_warehouse.rst # /inventory_and_mrp/inventory/management/warehouses/* -> /inventory_and_mrp/inventory/warehouses_storage/inventory_management/*
applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/create_a_second_warehouse.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/warehouses.rst # Move all info about warehouses onto /inventory/warehouses_storage/inventory_management/warehouses.rst
applications/inventory_and_mrp/inventory/management/warehouses/use_locations.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/use_locations.rst # /inventory_and_mrp/inventory/management/warehouses/* -> /inventory_and_mrp/inventory/warehouses_storage/inventory_management/*
applications/inventory_and_mrp/inventory/routes/concepts/use_routes.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_management/use_routes.rst # /inventory_and_mrp/inventory/routes/concepts/use_routes -> /inventory_and_mrp/inventory/warehouses_storage/inventory_management/*
applications/inventory_and_mrp/inventory/management/reporting.rst applications/inventory_and_mrp/inventory/warehouses_storage/inventory_valuation.rst # /inventory_and_mrp/inventory/management/reporting -> /inventory_and_mrp/inventory/warehouses_storage/inventory_valuation