[IMP] Inventory: Update inter-warehouse replenishment
closes odoo/documentation#3967 Signed-off-by: John Holton (hojo) <hojo@odoo.com>
@ -10,7 +10,6 @@ Warehouse Management
|
|||||||
|
|
||||||
management/products
|
management/products
|
||||||
management/warehouses
|
management/warehouses
|
||||||
management/replenishment_strategies
|
|
||||||
management/delivery
|
management/delivery
|
||||||
management/incoming
|
management/incoming
|
||||||
management/misc
|
management/misc
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
:nosearch:
|
|
||||||
|
|
||||||
====================
|
|
||||||
Inventory Adjustment
|
|
||||||
====================
|
|
||||||
|
|
||||||
.. 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 |
@ -9,3 +9,4 @@ Warehouses
|
|||||||
:glob:
|
:glob:
|
||||||
|
|
||||||
warehouses/difference_warehouse_location
|
warehouses/difference_warehouse_location
|
||||||
|
warehouses/warehouse_replenishment_transfer
|
||||||
|
@ -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,129 +0,0 @@
|
|||||||
=========================
|
|
||||||
Inter-warehouse transfers
|
|
||||||
=========================
|
|
||||||
|
|
||||||
When owning several warehouses, you might need to transfer goods from one warehouse to another.
|
|
||||||
Proceeding to such behavior is called *inter-warehouse transfers*. If this action is physically
|
|
||||||
easy to perform, the administrative part can be arduous. Fortunately, Odoo comes with an intuitive
|
|
||||||
flow that helps save time when registering those transfers.
|
|
||||||
|
|
||||||
Configuration
|
|
||||||
=============
|
|
||||||
|
|
||||||
First of all, go to :menuselection:`Configuration --> Settings` and enable **Storage Locations**.
|
|
||||||
Then, hit save.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/feature-storage-location.png
|
|
||||||
:align: center
|
|
||||||
:alt: Enabling the storage location feature in Odoo Inventory.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
If you want to manage several routes within your warehouses, then enable **Multi-Step Routes**
|
|
||||||
and check :doc:`use-routes`.
|
|
||||||
|
|
||||||
Creating a new warehouse
|
|
||||||
========================
|
|
||||||
|
|
||||||
The next step is to create your new warehouse. To do so, go to :menuselection:`Configuration -->
|
|
||||||
Warehouse Management --> Warehouses` and click on **Create**.
|
|
||||||
|
|
||||||
Fill out a **Warehouse Name** and a **Short Name**. The short name is five characters maximum.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/create-new-warehouse.png
|
|
||||||
:align: center
|
|
||||||
:alt: Short name field of a warehouse on Odoo Inventory.
|
|
||||||
|
|
||||||
.. important::
|
|
||||||
The **Short Name** appears on your transfer orders and other warehouse documents. We recommend
|
|
||||||
using an understandable one (e.g.: WH/[first letters of location]).
|
|
||||||
|
|
||||||
Now, go back to your dashboard. There, new operations related to your warehouse have been
|
|
||||||
automatically generated.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/new-transfer-types.png
|
|
||||||
:align: center
|
|
||||||
:alt: Inventory app dashboard displaying new transfer type for the recently created warehouse.
|
|
||||||
|
|
||||||
Creating a new inventory
|
|
||||||
========================
|
|
||||||
|
|
||||||
If you create a new warehouse, you might already have an existing inventory in it. In that case, you
|
|
||||||
should create an inventory in Odoo. If this is not the case, you can skip this step.
|
|
||||||
|
|
||||||
Into the inventory application, select :menuselection:`Operations --> Inventory Adjustment`.
|
|
||||||
Then, create a new inventory by clicking on **Create**. Fill in the **Inventory Reference**,
|
|
||||||
**Date** and make sure to select the right warehouse and location.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/annual-inventory.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the inventory adjustment form before hitting the start button.
|
|
||||||
|
|
||||||
Next, click on **Start Inventory**. You will be able to input your existing products in the new
|
|
||||||
window. Select add an item and indicate the **Real Quantity** available in the warehouse.
|
|
||||||
The theoretical quantity can not be changed as it represents a computed one from purchase and sales
|
|
||||||
orders.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/in-progress-annual-inventory.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the actual physical inventory of the new warehouse.
|
|
||||||
|
|
||||||
.. tip::
|
|
||||||
Don't forget to validate your inventory once you have recorded the state of all your products.
|
|
||||||
|
|
||||||
Create an internal transfer
|
|
||||||
===========================
|
|
||||||
|
|
||||||
The final step is to create your internal transfer. If you want to transfer eight units of a product
|
|
||||||
from your first warehouse to another one, proceed as follows:
|
|
||||||
|
|
||||||
From your dashboard, select an internal movement of one of the two warehouses. To do so, click on
|
|
||||||
:menuselection:`Manage --> 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 window, select the source location zone (in this case, your "old" warehouse) and the
|
|
||||||
destination location zone (in this case, your "new" warehouse).
|
|
||||||
|
|
||||||
Add the products you want to transfer by clicking on **Add an Item**, then click on **Save** and
|
|
||||||
**Mark as TODO** once you are done.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/planned-internal-transfer.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the internal transfer form.
|
|
||||||
|
|
||||||
If you selected **Immediate Transfer**, Odoo processes the transfer automatically after you clicked
|
|
||||||
on **Validate**.
|
|
||||||
|
|
||||||
If you select **Mark as TODO**, Odoo puts the transfer in **Waiting Availability** status.
|
|
||||||
Click on **Reserve** to reserve the number of products in your source warehouse.
|
|
||||||
|
|
||||||
It is also possible to manually transfer each product:
|
|
||||||
|
|
||||||
- Via your dashboard, select the transfer order in the source location.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/in-progress-internal-transfer.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the dashboard with a zoom of the pending internal transfer.
|
|
||||||
|
|
||||||
- Select the right transfer order.
|
|
||||||
|
|
||||||
.. image:: inter_warehouse/internal-transfers-list.png
|
|
||||||
:align: center
|
|
||||||
:alt: View of the pending internal transfers list.
|
|
||||||
|
|
||||||
- Click on the little pencil logo in the lower right corner to open the operation details window.
|
|
||||||
In this new window you can manually indicate how many products you process.
|
|
||||||
|
|
||||||
.. 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::
|
|
||||||
If you decide 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 you wish to create a
|
|
||||||
**backorder**.
|
|
||||||
|
|
||||||
- Create a backorder if you expect to process the remaining products later.
|
|
||||||
- Do not create a backorder if you will not supply/receive the remaining products.
|
|
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)
|
||||||
|