[IMP] inventory: update replenish on order (mto) setting

closes odoo/documentation#16674

Signed-off-by: Felicia Kuan (feku) <feku@odoo.com>
Co-authored-by: theRealThagomizer <96515928+theRealThagomizer@users.noreply.github.com>
This commit is contained in:
huisit
2026-03-02 15:42:51 -08:00
parent e029786e70
commit ea892d1691
5 changed files with 40 additions and 51 deletions

View File

@@ -14,9 +14,9 @@ Replenish on order (MTO)
a draft order every time a product is needed to fulfill a sales order (SO) or as a component in a
manufacturing order (MO).
- For :doc:`purchased products <../../../purchase/manage_deals/rfq>`, Odoo creates an |RFQ|
- For :doc:`purchased products <../../../purchase/manage_deals/rfq>`, Odoo creates an |RFQ|.
- For :doc:`manufactured products
<../../../manufacturing/basic_setup/configure_manufacturing_product>`, it creates an |MO|
<../../../manufacturing/basic_setup/configure_manufacturing_product>`, it creates an |MO|.
If stock is available, no |RFQ| or |MO| is generated and the sale proceeds normally. Otherwise, the
|RFQ| or |MO| is generated and directly linked to the originating |SO| through a smart button.
@@ -25,65 +25,50 @@ This approach offers clear traceability, since each |RFQ| or |MO| is tied back t
.. important::
The |RFQ| or |MO| generated by |MTO| is designed to fulfill the originating |SO|. These documents
should normally be confirmed or adjusted rather than cancelled. If the demand changes, update the
document instead of cancelling it.
should normally be confirmed or adjusted rather than canceled. If the demand changes, update the
document instead of canceling it.
.. note::
If an |RFQ| or |MO| is cancelled, Odoo does not automatically generate a replacement. A new
If an |RFQ| or |MO| is canceled, Odoo does not automatically generate a replacement. A new
replenishment document must be created manually, but it **cannot** be linked back to the original
|SO| through the smart button.
Finally, click :guilabel:`Save` to save the change.
.. _inventory/warehouses_storage/unarchive-mto:
.. _inventory/mto/configuration:
Unarchive MTO route
===================
Configuration
=============
In order to use the |MTO| route, the :guilabel:`Multi-Step Routes` feature must be enabled. To do
so, navigate to :menuselection:`Inventory app --> Configuration --> Settings`, and tick the checkbox
next to :guilabel:`Multi-Step Routes`, under the :guilabel:`Warehouse` heading.
.. _inventory/mto/enable-mto:
By default, Odoo sets the |MTO| route as *archived*. This is because |MTO| is a somewhat niche
workflow that is only used by certain companies. However, it is easy to unarchive the route in just
a few simple steps.
Enable the MTO route
--------------------
To do so, begin by navigating to :menuselection:`Inventory app --> Configuration --> Routes`. On the
:guilabel:`Routes` page, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon on the right
side of the search bar, and click the :guilabel:`Archived` filter to enable it.
In order to use the |MTO| route, the :guilabel:`Replenish on order (MTO)` setting must be enabled.
To do so, navigate to :menuselection:`Inventory app --> Configuration --> Settings`. Go to the
:guilabel:`Warehouse` section at the end of the page, and select the checkbox next to
:guilabel:`Replenish on order (MTO)`. Click :guilabel:`Save` to confirm the setting.
.. image:: mto/archived-filter.png
:align: center
:alt: The archived filter on the Routes page.
.. image:: mto/mto-setting.png
:alt: Select the Replenish on order (MTO) checkbox.
After enabling the :guilabel:`Archived` filter, the :guilabel:`Routes` page shows all routes which
are currently archived. Tick the checkbox next to :guilabel:`Replenish on Order (MTO)`, then click
the :icon:`fa-cog` :guilabel:`Actions` button to reveal a drop-down menu. From the drop-down menu,
select :guilabel:`Unarchive`.
.. _inventory/mto/configure-mto-product:
.. image:: mto/unarchive-button.png
:align: center
:alt: The unarchive action on the Routes page.
Configure a product for MTO
---------------------------
Finally, remove the :guilabel:`Archived` filter from the search bar. The :guilabel:`Routes` page now
shows all unarchived routes, including :guilabel:`Replenish on Order (MTO)`, which is selectable on
the *Inventory* tab of each product page.
With the |MTO| route enabled, products can now be configured to use replenish on order. To do so,
begin by going to :menuselection:`Inventory app --> Products --> Products`, then select an existing
product, or click :guilabel:`New` to configure a new product.
Configure product for MTO
=========================
With the |MTO| route unarchived, products can now be properly configured to use replenish on order.
To do so, begin by going to :menuselection:`Inventory app --> Products --> Products`, then select an
existing product, or click :guilabel:`New` to configure a new one.
On the product page, select the :guilabel:`Inventory` tab and enable the :guilabel:`Replenish on
Order (MTO)` route in the :guilabel:`Routes` section, along with the :guilabel:`Buy` or
:guilabel:`Manufacture` route.
In the product form, go to the :guilabel:`Inventory` tab. Under the *Operations* section, select the
checkbox next to the :guilabel:`Replenish on Order (MTO)` option in the :guilabel:`Routes` field.
.. important::
The :guilabel:`Replenish on Order (MTO)` route **does not** work unless another route is selected
as well. This is because Odoo needs to know how to replenish the product when an order is placed
for it (buy or manufacture it).
The :guilabel:`Replenish on Order (MTO)` route does not work if the :guilabel:`Purchase` route is
enabled. To ensure the product is configured for manufacturing, make sure the checkbox next to
the :guilabel:`Purchase` route is not selected.
.. image:: mto/select-routes.png
:align: center
@@ -108,6 +93,8 @@ so, click the :guilabel:`Bill of Materials` smart button at the top of the scree
For a full overview of |BOM| creation, see the documentation on :doc:`bills of materials
<../../../manufacturing/basic_setup/bill_configuration>`.
.. _inventory/mto/replenish-mto-product:
Replenish using MTO
===================
@@ -147,13 +134,15 @@ Finally, click the :guilabel:`Delivery` smart button at the top of the order to
order. Once the products have been shipped to the customer, click :guilabel:`Validate` to confirm
the delivery.
Cancelling an SO with an MTO product
------------------------------------
.. _inventory/mto/cancel-mto-sales-order:
When a |SO| is cancelled, and it had created an |RFQ| or |MO|, the related delivery order is
cancelled automatically. However, the |RFQ| or |MO| themselves are **not** cancelled. Instead, a
warning appears in their chatter noting the |SO| cancellation. These documents remain active, so the
user can either cancel them manually or repurpose the replenishment for another order.
Cancel an MTO sales order
=========================
When a |SO| that had created an |RFQ| or |MO| is canceled, the related delivery order is canceled
automatically. However, the |RFQ| or |MO| themselves are **not** canceled. Instead, a warning
appears in their chatter noting the |SO| cancellation. These documents remain active, so the user
can either cancel them manually or repurpose the replenishment for another order.
.. seealso::
For information on workflows that include the |MTO| route, see the following documentation:

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

View File

@@ -81,8 +81,8 @@ MTO
~~~
To replenish products using the make-to-order method, go to the product form and ensure the
:ref:`MTO route is unarchived <inventory/warehouses_storage/unarchive-mto>`, so it appears in the
:guilabel:`Routes` section of the :guilabel:`Inventory` tab.
:ref:`MTO route is unarchived <inventory/mto/enable-mto>`, so it appears in the :guilabel:`Routes`
section of the :guilabel:`Inventory` tab.
With the resupply and |MTO| routes ticked, jump to the section titled: :ref:`Replenish from another
warehouse <inventory/warehouses_storage/resupply-workflow>`.