[IMP] Inventory: MTO update
closes odoo/documentation#10976
X-original-commit: 72c6e76906
Signed-off-by: Samuel Lieber (sali) <sali@odoo.com>
Signed-off-by: John Holton (hojo) <hojo@odoo.com>
@ -2,121 +2,138 @@
|
|||||||
Replenish on order (MTO)
|
Replenish on order (MTO)
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
.. |SO| replace:: :abbr:`SO (sales order)`
|
||||||
|
.. |SOs| replace:: :abbr:`SOs (sales orders)`
|
||||||
|
.. |MO| replace:: :abbr:`MO (manufacturing order)`
|
||||||
|
.. |PO| replace:: :abbr:`PO (purchase order)`
|
||||||
.. |MTO| replace:: :abbr:`MTO (make to order)`
|
.. |MTO| replace:: :abbr:`MTO (make to order)`
|
||||||
.. |RFQ| replace:: :abbr:`RFQ (request for quotation)`
|
.. |RFQ| replace:: :abbr:`RFQ (request for quotation)`
|
||||||
.. |BOM| replace:: :abbr:`BOM (bill of materials)`
|
.. |BOM| replace:: :abbr:`BOM (bill of materials)`
|
||||||
|
|
||||||
*Replenish on order*, also known as *MTO* (make to order), is a replenishment strategy that creates
|
*Replenish on order*, also known as *MTO* (make to order), is a replenishment strategy that creates
|
||||||
a draft order for a product every time a sales order is created for it. For products that are
|
a draft order for a product every time it is required to fulfill a sales order (SO), or when it is
|
||||||
purchased from a vendor, a request for quotation (RFQ) is created, while a sales order for a product
|
needed as a component in a manufacturing order (MO).
|
||||||
manufactured in-house triggers the creation of a manufacturing order. The creation of a |RFQ| or
|
|
||||||
manufacturing order occurs every time a sales order is created, regardless of the current stock
|
|
||||||
level of the product being ordered.
|
|
||||||
|
|
||||||
Unarchive the Replenish on Order (MTO) route
|
For products that are purchased from a vendor, a request for quotation (RFQ) is created to replenish
|
||||||
============================================
|
the product, while an |MO| is created for products that are manufactured. The creation of an |RFQ|
|
||||||
|
or |MO| occurs every time an |SO| or |MO| that requires the product is confirmed, regardless of the
|
||||||
|
current stock level of the product being ordered.
|
||||||
|
|
||||||
|
.. important::
|
||||||
|
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.
|
||||||
|
|
||||||
|
Finally, click :guilabel:`Save` to save the change.
|
||||||
|
|
||||||
|
Unarchive MTO route
|
||||||
|
===================
|
||||||
|
|
||||||
By default, Odoo sets the |MTO| route as *archived*. This is because |MTO| is a somewhat niche
|
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
|
workflow that is only used by certain companies. However, it is easy to unarchive the route in just
|
||||||
a few simple steps.
|
a few simple steps.
|
||||||
|
|
||||||
To do so, begin by navigating to :menuselection:`Inventory --> Configuration --> Routes`. On the
|
To do so, begin by navigating to :menuselection:`Inventory app --> Configuration --> Routes`. On the
|
||||||
:guilabel:`Routes` page, click the :guilabel:`Filters` button and select the :guilabel:`Archived`
|
:guilabel:`Routes` page, click the :icon:`fa-caret-down` :guilabel:`(down arrow)` icon on the right
|
||||||
option. This shows all routes that are currently archived.
|
side of the search bar, and click the :guilabel:`Archived` filter to enable it.
|
||||||
|
|
||||||
.. image:: mto/archived-filter.png
|
.. image:: mto/archived-filter.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: The archived filter on the Routes page.
|
:alt: The archived filter on the Routes page.
|
||||||
|
|
||||||
Enable the checkbox next to :guilabel:`Replenish on Order (MTO)`, then click the :guilabel:`Action`
|
After enabling the :guilabel:`Archived` filter, the :guilabel:`Routes` page shows all routes which
|
||||||
button to reveal a drop-down menu. From the drop-down menu, select :guilabel:`Unarchive`.
|
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`.
|
||||||
|
|
||||||
.. image:: mto/unarchive-button.png
|
.. image:: mto/unarchive-button.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: The unarchive action on the Routes page.
|
:alt: The unarchive action on the Routes page.
|
||||||
|
|
||||||
Finally, remove the :guilabel:`Archived` filter from the :guilabel:`Search...` bar. The
|
Finally, remove the :guilabel:`Archived` filter from the search bar. The :guilabel:`Routes` page now
|
||||||
:guilabel:`Routes` page will now show all available routes, including :guilabel:`Replenish on Order
|
shows all unarchived routes, including :guilabel:`Replenish on Order (MTO)`, which is selectable on
|
||||||
(MTO)`, which is now selectable on the inventory tab of each product page.
|
the *Inventory* tab of each product page.
|
||||||
|
|
||||||
.. image:: mto/unarchived-mto.png
|
Configure product for MTO
|
||||||
:align: center
|
=========================
|
||||||
:alt: The MTO route appears on the Routes page after unarchiving it.
|
|
||||||
|
|
||||||
Configure a product to use the MTO route
|
|
||||||
========================================
|
|
||||||
|
|
||||||
With the |MTO| route unarchived, products can now be properly configured to use replenish on order.
|
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 --> Products --> Products`, then select an
|
To do so, begin by going to :menuselection:`Inventory app --> Products --> Products`, then select an
|
||||||
existing product, or click :guilabel:`Create` to configure a new one.
|
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
|
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 one other route.
|
Order (MTO)` route in the :guilabel:`Routes` section, along with the :guilabel:`Buy` or
|
||||||
|
:guilabel:`Manufacture` route.
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
The :guilabel:`Replenish on Order (MTO)` route **does not** work unless another route is selected
|
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
|
as well. This is because Odoo needs to know how to replenish the product when an order is placed
|
||||||
for it (buy it, manufacture it, etc.).
|
for it (buy or manufacture it).
|
||||||
|
|
||||||
.. image:: mto/select-routes.png
|
.. image:: mto/select-routes.png
|
||||||
:align: center
|
:align: center
|
||||||
:alt: Select the MTO route and a second route on the Inventory tab.
|
:alt: Select the MTO route and a second route on the Inventory tab.
|
||||||
|
|
||||||
If the product is purchased from a vendor to fulfill sales orders, enable the :guilabel:`Can be
|
If the product is purchased from a vendor to fulfill |SOs|, enable the :guilabel:`Can be Purchased`
|
||||||
Purchased` checkbox under the product name. Doing so makes the :guilabel:`Purchase` tab appear
|
checkbox under the product name. Doing so makes the :guilabel:`Purchase` tab appear alongside the
|
||||||
alongside the other settings tabs below.
|
other tabs below.
|
||||||
|
|
||||||
Select the :guilabel:`Purchase` tab and specify a :guilabel:`Vendor` and the :guilabel:`Price` they
|
Click the :guilabel:`Purchase` tab and specify a :guilabel:`Vendor` and the :guilabel:`Price` they
|
||||||
sell the product for.
|
sell the product for.
|
||||||
|
|
||||||
.. image:: mto/specify-vendor.png
|
.. important::
|
||||||
:align: center
|
Specifying a vendor is essential for this workflow, because Odoo cannot generate an |RFQ| without
|
||||||
:alt: Enable "Can be Purchased" and specify a vendor.
|
knowing who the product is purchased from.
|
||||||
|
|
||||||
If the product is manufactured, make sure that it has a bill of materials (BOM) configured for it.
|
If the product is manufactured, make sure it has a bill of materials (BOM) configured for it. To do
|
||||||
To do so, click the :guilabel:`Bill of Materials` smart button at the top of the screen, then click
|
so, click the :guilabel:`Bill of Materials` smart button at the top of the screen, then click
|
||||||
:guilabel:`Create` on the :guilabel:`Bill of Materials` page to configure a new |BOM| for the
|
:guilabel:`New` on the :guilabel:`Bill of Materials` page to configure a new |BOM| for the product.
|
||||||
product.
|
|
||||||
|
|
||||||
On the blank |BOM| form, add the components used to manufacture the product on the
|
.. seealso::
|
||||||
:guilabel:`Components` tab, along with the operations required for the manufacturing workflow on the
|
For a full overview of |BOM| creation, see the documentation on :doc:`bills of materials
|
||||||
:guilabel:`Operations` tab.
|
<../../../manufacturing/basic_setup/bill_configuration>`.
|
||||||
|
|
||||||
Finally, click :guilabel:`Save` to save the |BOM|.
|
Replenish using MTO
|
||||||
|
===================
|
||||||
Fulfill a sales order using the MTO route
|
|
||||||
=========================================
|
|
||||||
|
|
||||||
After configuring a product to use the |MTO| route, a replenishment order is created for it every
|
After configuring a product to use the |MTO| route, a replenishment order is created for it every
|
||||||
time a sales order including the product is confirmed. The type of order created depends on the
|
time an |SO| or |MO| including the product is confirmed. The type of order created depends on the
|
||||||
second route selected in addition to |MTO|.
|
second route selected in addition to |MTO|.
|
||||||
|
|
||||||
For example, if *Buy* was the second route selected, then a purchase order is created upon
|
For example, if *Buy* was the second route selected, then a |PO| is created upon confirmation of an
|
||||||
confirmation of a sales order.
|
|SO|.
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
When the |MTO| route is enabled for a product, a replenishment order is always created upon
|
When the |MTO| route is enabled for a product, a replenishment order is always created upon
|
||||||
confirmation of a sales order. This is the case even if there is enough stock of the product
|
confirmation of an |SO| or |MO|. This is the case, even if there is enough stock of the product
|
||||||
on-hand to fulfill the sales order, without buying or manufacturing additional units of it.
|
on-hand to fulfill the |SO|, without buying or manufacturing additional units of it.
|
||||||
|
|
||||||
While the |MTO| route can be used in unison with a variety of other routes, the *Buy* route is used
|
While the |MTO| route can be used in unison with the *Buy* or *Manufacture* routes, the *Buy* route
|
||||||
as the example for this workflow. Begin by navigating to the :menuselection:`Sales` app, then click
|
is used as the example for this workflow. Begin by navigating to the :menuselection:`Sales` app,
|
||||||
:guilabel:`Create`, which opens a blank quotation form.
|
then click :guilabel:`New`, which opens a blank quotation form.
|
||||||
|
|
||||||
On the blank quotation form, add a :guilabel:`Customer`, then click :guilabel:`Add a product` under
|
On the blank quotation form, add a :guilabel:`Customer`. Then, click :guilabel:`Add a product` under
|
||||||
the :guilabel:`Order Lines` tab, and enter a product that has been configured to use the *MTO* and
|
the :guilabel:`Order Lines` tab, and enter a product configured to use the *MTO* and *Buy* routes.
|
||||||
*Buy* routes. Click :guilabel:`Confirm` and the quotation is turned into a sales order.
|
Click :guilabel:`Confirm`, and the quotation is turned into an |SO|.
|
||||||
|
|
||||||
A :guilabel:`Purchase` smart button now appears in the top-right corner of the sales order. Clicking
|
A :guilabel:`Purchase` smart button now appears at the top of the page. Clicking it opens the |RFQ|
|
||||||
it opens the |RFQ| associated with the sales order.
|
associated with the |SO|.
|
||||||
|
|
||||||
Click :guilabel:`Confirm Order` to confirm the |RFQ|, and turn it into a purchase order. A green
|
Click :guilabel:`Confirm Order` to confirm the |RFQ|, and turn it into a |PO|. A purple
|
||||||
:guilabel:`Receive Products` button now appears at the top of the purchase order. Once the products
|
:guilabel:`Receive Products` button now appears above the |PO|. Once the products are received,
|
||||||
are received, click :guilabel:`Receive Products` to register them into inventory.
|
click :guilabel:`Receive Products` to open the receipt order, and click :guilabel:`Validate` to
|
||||||
|
enter the products into inventory.
|
||||||
|
|
||||||
Return to the sales order by clicking the :guilabel:`SO` breadcrumb, or by navigating to
|
Return to the |SO| by clicking the :guilabel:`SO` breadcrumb, or by navigating to
|
||||||
:menuselection:`Sales --> Orders --> Orders`, and selecting the sales order.
|
:menuselection:`Sales app --> Orders --> Orders`, and selecting the|SO|.
|
||||||
|
|
||||||
Finally, click the :guilabel:`Delivery` smart button in the top-right of the order to be taken to
|
Finally, click the :guilabel:`Delivery` smart button at the top of the order to open the delivery
|
||||||
the delivery order. Once the products have been shipped to the customer, click :guilabel:`Validate`
|
order. Once the products have been shipped to the customer, click :guilabel:`Validate` to confirm
|
||||||
to confirm the delivery.
|
the delivery.
|
||||||
|
|
||||||
|
.. seealso::
|
||||||
|
For information on workflows that include the |MTO| route, see the following documentation:
|
||||||
|
|
||||||
|
- :doc:`resupply_warehouses`
|
||||||
|
- :doc:`../../../manufacturing/subcontracting/subcontracting_basic`
|
||||||
|
- :doc:`../../../manufacturing/advanced_configuration/sub_assemblies`
|
||||||
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 13 KiB |