[IMP] Inventory: Update inter-warehouse replenishment
closes odoo/documentation#4004 Signed-off-by: John Holton (hojo) <hojo@odoo.com> Signed-off-by: Zachary Straub (zst) <zst@odoo.com>
@ -10,7 +10,6 @@ Warehouse Management
|
|||||||
|
|
||||||
management/products
|
management/products
|
||||||
management/warehouses
|
management/warehouses
|
||||||
management/replenishment_strategies
|
|
||||||
management/inventory_adjustments
|
management/inventory_adjustments
|
||||||
management/delivery
|
management/delivery
|
||||||
management/incoming
|
management/incoming
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
:nosearch:
|
|
||||||
|
|
||||||
========================
|
|
||||||
Replenishment strategies
|
|
||||||
========================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:titlesonly:
|
|
||||||
:glob:
|
|
||||||
|
|
||||||
replenishment_strategies/virtual_warehouses
|
|
@ -1,53 +0,0 @@
|
|||||||
===============================
|
|
||||||
Resupply from another Warehouse
|
|
||||||
===============================
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
In order to be able to resupply from another warehouse, you need to
|
|
||||||
activate \*multi-step routes\*.
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual-warehouses-settings.png
|
|
||||||
:align: center
|
|
||||||
:alt: Enable Multi-Step Routes in an Odoo database's settings
|
|
||||||
|
|
||||||
You can then access your warehouses via :menuselection:`Inventory --> Configuration -->
|
|
||||||
Warehouses`.
|
|
||||||
Enter the warehouse which should be resupplied by another one. You will
|
|
||||||
have the possibility to directly indicate through which warehouse it
|
|
||||||
gets resupplied.
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual_warehouses_02.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
By activating this option, a new route will now be available on your
|
|
||||||
products \*Supply Product from Second warehouse\*. It can now be
|
|
||||||
selected, along with either a \*reordering rule\* or a \*make to
|
|
||||||
order\*.
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual_warehouses_03.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
For the demonstration, I set a reordering rule with a minimum of 5 units
|
|
||||||
in stock and a maximum of 10 units in stock, having currently 0 units on
|
|
||||||
hand. I will run the scheduler by going to :menuselection:`Inventory --> Operations -->
|
|
||||||
Run scheduler`.
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual_warehouses_04.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
The system automatically creates two pickings, one \*delivery order\*
|
|
||||||
from my Second Warehouse which contains the necessary products, and a
|
|
||||||
receipt in my main warehouse WH/Stock for the same products. The source
|
|
||||||
document is the \*reordering rule\* which triggered the route \*Supply
|
|
||||||
Product from Second warehouse\*.
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual_warehouses_05.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual_warehouses_06.png
|
|
||||||
:align: center
|
|
||||||
|
|
||||||
.. image:: virtual_warehouses/virtual_warehouses_07.png
|
|
||||||
:align: center
|
|
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 17 KiB |
@ -8,5 +8,6 @@ Warehouses
|
|||||||
:titlesonly:
|
:titlesonly:
|
||||||
:glob:
|
:glob:
|
||||||
|
|
||||||
warehouses/warehouses_locations
|
|
||||||
warehouses/resupply_warehouses
|
warehouses/resupply_warehouses
|
||||||
|
warehouses/warehouse_replenishment_transfer
|
||||||
|
warehouses/warehouses_locations
|
||||||
|
@ -0,0 +1,150 @@
|
|||||||
|
========================================================
|
||||||
|
Transfer products between warehouses using replenishment
|
||||||
|
========================================================
|
||||||
|
|
||||||
|
For companies that use multiple warehouses, it is often necessary to transfer items between them.
|
||||||
|
This is referred to as an *inter-warehouse transfer*. Odoo *Inventory* handles the administrative
|
||||||
|
process of inter-warehouse transfers to ensure that inventory counts remain accurate during and
|
||||||
|
after the transfer. This document will detail the method for conducting an inter-warehouse transfer
|
||||||
|
using replenishment.
|
||||||
|
|
||||||
|
Configure warehouses for inter-warehouse replenishment
|
||||||
|
======================================================
|
||||||
|
|
||||||
|
First, ensure the :guilabel:`Multi-Step Routes` setting is enabled by navigating to
|
||||||
|
:menuselection:`Inventory --> Configuration --> Settings`, and then check the box under the
|
||||||
|
:guilabel:`Warehouse` tab. This will provide additional configuration options when creating a second
|
||||||
|
warehouse that are needed for inter-warehouse replenishment.
|
||||||
|
|
||||||
|
By default, Odoo comes with a main warehouse already configured. If an additional warehouse has not
|
||||||
|
already been created, do so now from the :guilabel:`Inventory` module by selecting
|
||||||
|
:menuselection:`Configuration --> Warehouses --> Create`. Otherwise, select the warehouse that
|
||||||
|
products will be transferred to from the :guilabel:`Warehouses` page and then click :guilabel:`Edit`
|
||||||
|
to change its settings. Configure the warehouse as follows:
|
||||||
|
|
||||||
|
- :guilabel:`Warehouse`: choose a name that is not already being used for another warehouse (e.g.
|
||||||
|
`Alternative Warehouse`)
|
||||||
|
- :guilabel:`Short Name`: choose a short name by which the warehouse will be identified (e.g.
|
||||||
|
`ALT_WH`)
|
||||||
|
|
||||||
|
Click :guilabel:`Save` and the new warehouse will be created. In addition, a new :guilabel:`Resupply
|
||||||
|
From` field will appear on the warehouse's form. Click :guilabel:`Edit` and then check the box next
|
||||||
|
to the warehouse that will be used to resupply the warehouse that is currently being configured.
|
||||||
|
|
||||||
|
.. image:: warehouse_replenishment_transfer/new-warehouse-configuration.png
|
||||||
|
:align: center
|
||||||
|
:alt: A warehouse settings form configured to allow resupplying between warehouses.
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
For the purposes of this demonstration, the warehouse that products are transferred from
|
||||||
|
(outgoing) will be titled "San Francisco", and the warehouse that products are transferred to
|
||||||
|
(incoming) will be titled "San Francisco 2".
|
||||||
|
|
||||||
|
Configure products for inter-warehouse replenishment
|
||||||
|
====================================================
|
||||||
|
|
||||||
|
Products must also be configured properly in order for them to be transferred between warehouses.
|
||||||
|
Navigate to :menuselection:`Inventory --> Products --> Products` and select an existing product or
|
||||||
|
:guilabel:`Create` a new one, if necessary.
|
||||||
|
|
||||||
|
Then, on the product form, go to the :guilabel:`Inventory` tab and enable the checkbox for
|
||||||
|
:guilabel:`X: Supply Product from Y`, with *X* being the warehouse receiving the transferred
|
||||||
|
products and *Y* being the warehouse that products are transferred from.
|
||||||
|
|
||||||
|
.. image:: warehouse_replenishment_transfer/product-transfer-configuration.png
|
||||||
|
:align: center
|
||||||
|
:alt: Enable the checkbox to resupply one warehouse from another.
|
||||||
|
|
||||||
|
Replenish one warehouse from another
|
||||||
|
====================================
|
||||||
|
|
||||||
|
Starting in the :menuselection:`Inventory` module, select :menuselection:`Products --> Products` and
|
||||||
|
then choose the product that will be replenished. Click the :guilabel:`Replenish` button on the top
|
||||||
|
left of the product page and fill out the pop-up form as follows:
|
||||||
|
|
||||||
|
- :guilabel:`Quantity`: the number of units that will be sent to the warehouse being replenished
|
||||||
|
- :guilabel:`Scheduled Date`: the date that the replenishment is scheduled to take place
|
||||||
|
- :guilabel:`Warehouse`: the warehouse that will be replenished
|
||||||
|
- :guilabel:`Preferred Routes`: select `X: Supply Product from Y`, with *X* being the warehouse to
|
||||||
|
be replenished and *Y* being the warehouse that the product will be transferred from
|
||||||
|
|
||||||
|
.. image:: warehouse_replenishment_transfer/product-replenishment-form.png
|
||||||
|
:align: center
|
||||||
|
:alt: The form for replenishing a product.
|
||||||
|
|
||||||
|
Click :guilabel:`Confirm` and a delivery order will be created for the outgoing warehouse along with
|
||||||
|
a receipt for the warehouse that will receive the product. Depending on the configuration settings
|
||||||
|
for the outgoing and incoming warehouses, processing delivery orders and receipts will require
|
||||||
|
between one and three steps. This document will detail how to process one-step deliveries and
|
||||||
|
receipts.
|
||||||
|
|
||||||
|
Process the delivery order
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
The first stage of a replenishment order is processing the delivery from the warehouse that the
|
||||||
|
product is being transferred from. On the :menuselection:`Inventory` dashboard, select the
|
||||||
|
:guilabel:`X to Process` button on the :guilabel:`Delivery Orders` card for the outgoing warehouse,
|
||||||
|
then the delivery order created for the replenishment. On the delivery order page, click the
|
||||||
|
:guilabel:`Check Availability` button in the top left to reserve the quantity of the product to be
|
||||||
|
transferred. Once the delivery has been dispatched, click the :guilabel:`Validate` button to
|
||||||
|
register the quantities shipped.
|
||||||
|
|
||||||
|
.. image:: warehouse_replenishment_transfer/delivery-orders-card.png
|
||||||
|
:align: center
|
||||||
|
:alt: The delivery orders card for the outgoing warehouse.
|
||||||
|
|
||||||
|
Process the receipt
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
Once the goods arrive at the incoming warehouse, the receipt created for that warehouse must be
|
||||||
|
processed as well. Return to the :menuselection:`Inventory` dashboard and select the :guilabel:`X to
|
||||||
|
Process` button on the :guilabel:`Receipts` card for the incoming warehouse, then the receipt
|
||||||
|
created for the replenishment. On the receipt page, click the :guilabel:`Validate` button in the top
|
||||||
|
left of the page to register the quantities received.
|
||||||
|
|
||||||
|
.. image:: warehouse_replenishment_transfer/receipts-card.png
|
||||||
|
:align: center
|
||||||
|
:alt: The delivery orders card for the outgoing warehouse.
|
||||||
|
|
||||||
|
After processing the receipt, the products transferred will now appear in the inventory of the
|
||||||
|
incoming warehouse. The stock numbers for both warehouses can be viewed by returning to the product
|
||||||
|
page and selecting the :guilabel:`X Units On Hand` button at the top of the screen.
|
||||||
|
|
||||||
|
Automate inter-warehouse replenishment
|
||||||
|
======================================
|
||||||
|
|
||||||
|
Using reordering rules, it is possible to automate the process of replenishing one warehouse from
|
||||||
|
another.
|
||||||
|
|
||||||
|
To get started, navigate to :menuselection:`Inventory --> Products --> Products`, and then
|
||||||
|
choose the product that will be replenished. From the product page, select the :guilabel:`Reordering
|
||||||
|
Rules` smart button at the top of the form, and then on the next page, click :guilabel:`Create` to
|
||||||
|
configure the form as follows:
|
||||||
|
|
||||||
|
- :guilabel:`Location`: the location that the reordering rule will replenish when triggered, in this
|
||||||
|
case, the incoming warehouse
|
||||||
|
- :guilabel:`Min Quantity`: when the quantity on hand at the incoming warehouse falls below this
|
||||||
|
number, the reordering rule will be triggered
|
||||||
|
- :guilabel:`Max Quantity`: when the reordering rule is triggered, the product will be replenished
|
||||||
|
at the incoming warehouse up to this quantity
|
||||||
|
- :guilabel:`Multiple Quantity`: specify if the product should be replenished in batches of a
|
||||||
|
certain quantity; for example, a product could be replenished in batches of 20
|
||||||
|
- :guilabel:`UoM`: the unit of measure used for reordering the product; this value can simply be
|
||||||
|
`Units`, or a specific unit of measurement for weight, length, etc.
|
||||||
|
|
||||||
|
.. image:: warehouse_replenishment_transfer/reordering-rule-configuration.png
|
||||||
|
:align: center
|
||||||
|
:alt: A fully configured reordering rule.
|
||||||
|
|
||||||
|
Finish by clicking :guilabel:`Save` and the reordering rule will be created. Now, when the scheduler
|
||||||
|
runs automatically each day, a transfer will be created for each reordering rule that has been
|
||||||
|
triggered.
|
||||||
|
|
||||||
|
.. tip::
|
||||||
|
To manually trigger reordering rules, start from the :menuselection:`Inventory` module and select
|
||||||
|
:menuselection:`Operation --> Run Scheduler`, then click the green :guilabel:`Run Scheduler`
|
||||||
|
button in the pop-up that appears.
|
||||||
|
|
||||||
|
After the scheduler runs, a delivery order and receipt will be created for the outgoing and incoming
|
||||||
|
warehouses, respectively. Both the delivery order and receipt should be processed using the same
|
||||||
|
method as detailed above.
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 10 KiB |
@ -9,6 +9,5 @@ Concepts
|
|||||||
:glob:
|
:glob:
|
||||||
|
|
||||||
concepts/use_routes
|
concepts/use_routes
|
||||||
concepts/inter_warehouse
|
|
||||||
concepts/cross_dock
|
concepts/cross_dock
|
||||||
concepts/stock_warehouses
|
concepts/stock_warehouses
|
||||||
|
@ -1,71 +0,0 @@
|
|||||||
=========================
|
|
||||||
Inter-warehouse transfers
|
|
||||||
=========================
|
|
||||||
|
|
||||||
When owning several warehouses, goods might need to be transferred from one warehouse to another.
|
|
||||||
This type of transfer is called an *inter-warehouse transfer*. While physically performing the
|
|
||||||
inter-warehouse transfer might be simple, the administrative part can be complex. Fortunately, Odoo
|
|
||||||
comes with an intuitive flow that helps save time when registering inter-warehouse transfers.
|
|
||||||
|
|
||||||
Create an internal transfer
|
|
||||||
===========================
|
|
||||||
|
|
||||||
The following paragraphs detail a sample inter-warehouse transfer, referred to as an *internal
|
|
||||||
transfer*, use case. The sample use case assumes that the user has already configured their second
|
|
||||||
warehouse.
|
|
||||||
|
|
||||||
To transfer eight units of a product from the first warehouse to another one, proceed as follows:
|
|
||||||
|
|
||||||
From the :guilabel:`Inventory` dashboard, select an internal movement operation of one of the two
|
|
||||||
warehouses. To do so, click on the three vertical dots icon on the top right corner of the
|
|
||||||
operation card and select :guilabel:`Planned Transfer`.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/internal-transfer-choice.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the choice between planned transfer and immediate transfer.
|
|
||||||
|
|
||||||
On the new planned transfer form, select the :guilabel:`Source Location` (in this case, the first
|
|
||||||
warehouse) and the :guilabel:`Destination Location` (in this case, the second warehouse).
|
|
||||||
|
|
||||||
Next, add the products that will be transferred by clicking on :guilabel:`Add a line`, then click
|
|
||||||
on :guilabel:`Save` and :guilabel:`Mark as ToDo` once done. After that, Odoo puts the transfer in
|
|
||||||
the :guilabel:`Waiting` status. Then, click on :guilabel:`Reserve` to reserve the number of
|
|
||||||
products in the source warehouse.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/planned-internal-transfer.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the internal transfer form.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
If :guilabel:`Immediate Transfer` was selected instead of :guilabel:`Planned Transfer`, Odoo
|
|
||||||
processes the transfer automatically after the :guilabel:`Validate` button is clicked on the
|
|
||||||
internal transfer form.
|
|
||||||
|
|
||||||
It is also possible to manually transfer each product:
|
|
||||||
|
|
||||||
#. On the :guilabel:`Inventory` dashboard, open the souce location's internal transfer operation
|
|
||||||
page.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/in-progress-internal-transfer.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the dashboard with a zoom of the pending internal transfer.
|
|
||||||
|
|
||||||
#. Open the desired transfer order form.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/internal-transfers-list.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the pending internal transfers list.
|
|
||||||
|
|
||||||
#. Click on the pencil icon in the lower right corner to open the operation details window. In this
|
|
||||||
new window, the quantity of products can be manually set.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/backorder.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of a backorder pop-up window because all products are not moved at the same time.
|
|
||||||
|
|
||||||
.. note::
|
|
||||||
To process the transfer order partially (e.g., a part of the products can't be shipped yet due
|
|
||||||
to an unexpected event), Odoo automatically asks if a *backorder* should be created.
|
|
||||||
|
|
||||||
- Create a backorder if it is expected that the remaining products will be processed later.
|
|
||||||
- Do not create a backorder if the remaining products will not be supplied/received.
|
|
Before Width: | Height: | Size: 6.0 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 6.1 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 17 KiB |
@ -35,6 +35,11 @@ applications/finance/accounting/fiscal_localizations/overview/localizations_list
|
|||||||
applications/finance/accounting/getting_started/memento.rst applications/finance/accounting/getting_started/cheat_sheet.rst # memento -> cheat_sheet
|
applications/finance/accounting/getting_started/memento.rst applications/finance/accounting/getting_started/cheat_sheet.rst # memento -> cheat_sheet
|
||||||
applications/finance/accounting/payables/supplier_bills/manage.rst applications/inventory_and_mrp/purchase/manage_deals/manage.rst # (#3302)
|
applications/finance/accounting/payables/supplier_bills/manage.rst applications/inventory_and_mrp/purchase/manage_deals/manage.rst # (#3302)
|
||||||
|
|
||||||
|
# applications/inventory
|
||||||
|
|
||||||
|
applications/inventory_and_mrp/inventory/routes/concepts/inter_warehouse.rst applications/inventory_and_mrp/inventory/management/warehouses/warehouse_replenishment_transfer.rst
|
||||||
|
applications/inventory_and_mrp/inventory/management/replenishment_strategies/virtual_warehouses.rst applications/inventory_and_mrp/inventory/management/warehouses/warehouse_replenishment_transfer.rst
|
||||||
|
|
||||||
# applications/sales
|
# applications/sales
|
||||||
|
|
||||||
applications/sales/crm/acquire_leads/generate_from_email.rst applications/sales/crm/acquire_leads/generate_leads.rst # (#986)
|
applications/sales/crm/acquire_leads/generate_from_email.rst applications/sales/crm/acquire_leads/generate_leads.rst # (#986)
|
||||||
|