diff --git a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic.rst b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic.rst index 7c30dab646a..5fc5b68ad95 100644 --- a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic.rst +++ b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic.rst @@ -7,195 +7,141 @@ Basic subcontracting .. |POs| replace:: :abbr:`POs (Purchase Orders)` .. |BoM| replace:: :abbr:`BoM (Bill of Materials)` -In manufacturing, subcontracting is the process of a company engaging a third-party manufacturer, or -subcontractor, to manufacture products that are then sold by the contracting company. +In basic subcontracting, a company's product is produced entirely by a subcontractor. The product is +first purchased from the subcontractor, who acquires their own components, manufactures the final +product, then delivers the final product to the contracting company's warehouse. -In basic subcontracting, the subcontractor is responsible for acquiring the necessary components. -This means that the contracting company only has to worry about what happens to subcontracted -products once they are produced. - -The workflow for purchasing a product manufactured using basic subcontracting is similar to the one -used when purchasing a non-subcontracted product from a vendor. The main differences are the way -that subcontracted products are configured, and the fact that subcontracted products take longer to -be sent from the vendor, since they must first be manufactured by them. +The following documentation covers how to configure a subcontracted product and trigger the +subcontracting process. Configuration ============= -To use subcontracting in Odoo, navigate to :menuselection:`Manufacturing app --> Configuration --> -Settings`, and tick the checkbox next to the :guilabel:`Subcontracting` setting, under the -:guilabel:`Operations` heading. Then, click :guilabel:`Save`. +To use subcontracting, contractors must first configure products with a :ref:`vendor pricelist +` as well as a subcontracting-type |BoM|. -Once the :guilabel:`Subcontracting` setting is enabled, it is also necessary to properly configure -the subcontracted product, and the product's |BoM|. +The pricelist allows the contracting company to purchase the product from the vendor (subcontractor) +through a |PO|, while the |BoM| allows the product to be manufactured externally by the +subcontractor. .. _manufacturing/workflows/subcontracting_basic/product-config: -Configure product ------------------ +Configure product vendor +------------------------ -To configure a product for basic subcontracting, navigate to :menuselection:`Inventory app --> -Products --> Products`, and select a product, or create a new one by clicking :guilabel:`New`. +To configure a product's vendor for basic subcontracting, navigate to :menuselection:`Inventory app +--> Products --> Products`. Then, select a product or create a new one. -On the product form, select the :guilabel:`Purchase` tab, and add the product's subcontractor as a -vendor by clicking :guilabel:`Add a line`, selecting the subcontractor in the :guilabel:`Vendor` -drop-down menu, and entering a price in the :guilabel:`Price` field. +On the product form, click the :guilabel:`Purchase` tab and add the product's subcontractor as a +vendor by clicking :guilabel:`Add a line`. Select the subcontractor in the :guilabel:`Vendor` +drop-down menu. -Then, click on the :guilabel:`Inventory` tab, and use the :guilabel:`Routes` field to configure a -route that determines what happens to the finished product once it has been manufactured by the -subcontractor. +Then, enter the price of the product in the :guilabel:`Price` field. -If the finished product is shipped back to the contracting company, make sure the :guilabel:`Buy` -route is selected. In addition, select the :guilabel:`Replenish on Order (MTO)` route to -automatically create a |PO| for the product upon confirmation of a sales order (SO), unless there is -enough stock on-hand to fulfill the |SO|. +Finally, set a :doc:`lead time <../../inventory/warehouses_storage/replenishment/lead_times>` for +the product in the :guilabel:`Delivery Lead Time` field to specify the number of days for the +subcontractor to produce and deliver the final product. -If the finished product is shipped directly to the customer by the subcontractor, make sure that -**only** the :guilabel:`Dropship` route is selected. +.. note:: + Since contractors are only responsible for purchasing and receiving the final product, they do + not need to additionally configure manufacturing lead times on a |BoM|. Instead, provide only a + single *Delivery Lead Time* on the vendor pricelist that factors in both the subcontractor's + manufacturing and delivery time. + +.. _manufacturing/workflows/subcontracting_basic/bom-config: Configure BoM ------------- -To configure a |BoM| for basic subcontracting, click the :guilabel:`Bill of Materials` smart button -on the product form, and select the desired |BoM|. +After specifying the vendor, configure a subcontracting-type |BoM| for the product. Click the +:guilabel:`Bill of Materials` smart button on the product form. Then, select the desired |BoM| or +create a new one. -Alternatively, navigate to :menuselection:`Manufacturing app --> Products --> Bills of Materials`, -and select the |BoM| for the subcontracted product. +.. tip:: + Alternatively, navigate to :menuselection:`Manufacturing app --> Products --> Bills of + Materials`, and select the |BoM| for the subcontracted product. -.. seealso:: - For a full overview of |BoM| configuration, see the :doc:`Bill of materials - <../basic_setup/bill_configuration>` documentation. +In the :guilabel:`BoM Type` field, select :guilabel:`Subcontracting`. In the resulting +:guilabel:`Subcontractors` field, add one or more subcontractors. -In the :guilabel:`BoM Type` field, select the :guilabel:`Subcontracting` option. Then, add one or -more subcontractors in the :guilabel:`Subcontractors` field that appears below. +Because the components and manufacturing are both handled by the subcontractor, there is no need to +list any components in the :guilabel:`Components` tab of the |BoM|. -.. image:: subcontracting_basic/bom-type.png - :align: center - :alt: The "BoM Type" field on a BoM, configured to manufacture the product using subcontracting. +.. image:: subcontracting_basic/basic-sbc-bom.png + :alt: Bill of Materials configuration for subcontracting in Odoo. -Finally, click on the :guilabel:`Miscellaneous` tab. In the :guilabel:`Manuf. Lead Time` field, -enter the number of days it takes the subcontractor to manufacture the product. This number is -factored in when calculating the product's expected arrival date. - -.. note:: - When using basic subcontracting, there is no need to list components in the - :guilabel:`Components` tab of the |BoM|, since the components required for manufacturing, and the - means by which they are acquired, are handled by the subcontractor. +.. _subcontracting_basic/workflow: Basic subcontracting workflow ============================= -The basic subcontracting workflow consists of up to four steps: - -#. Create a sales order (SO) for the subcontracted product; doing so creates a |PO| to purchase the - product from the subcontractor. -#. Confirm the |PO| created in the previous step, or create a new |PO|; doing so creates a receipt - order or a dropship order. -#. Process the receipt once the subcontractor has finished manufacturing the subcontracted product, - and shipped it back to the contracting company, **OR** process the dropship order to ship the - product directly to the customer. -#. If the workflow was started by creating an |SO|, and the finished product is not dropshipped to - the end customer, process the delivery order once the product is shipped to the customer. - -The specific number of steps depends on the reason that the subcontracted product is being purchased -from the subcontractor. - -If the reason is to fulfill a specific customer order, the process starts with creating an |SO|, and -ends with delivering the product to the customer, or having the subcontractor dropship it to them. - -If the reason is to increase the quantity of stock on-hand, the process starts with creating a |PO|, -and ends with receiving the product into inventory. +.. image:: subcontracting_basic/subcontracting-flow.png + :alt: Basic subcontracting workflow diagram in Odoo. -Create SO ---------- +The basic subcontracting workflow begins by :ref:`creating a PO +` to purchase the product from the subcontractor (1). -It is only necessary to complete this step if the product is being purchased from the subcontractor -to fulfill a customer need. If the product is being purchased to increase the quantity of stock -on-hand, move on to the next step. +The contractor (YourCompany) then confirms the |PO|, which creates a receipt to transfer the final product +(2). The subcontractor manufactures the product and delivers it back to the contractor when done. -To create a new |SO|, navigate to :menuselection:`Sales app --> Orders --> Orders`, and click -:guilabel:`New`. +Once the product has been produced and received, the contractor :ref:`validates the receipt +` (5) to trigger :ref:`inventory moves +` from the subcontractor to the company's stock (3, +4). -Select the customer in the :guilabel:`Customer` drop-down menu. Then, click :guilabel:`Add a -product` on the :guilabel:`Order Lines` tab, select a subcontracted product in the -:guilabel:`Product` drop-down menu, and enter a quantity in the :guilabel:`Quantity` field. +.. _subcontracting_basic/workflow/create_po: -Click :guilabel:`Confirm` to confirm the |SO|, at which point a :guilabel:`Purchase` smart button -appears at the top of the page. This opens the |PO| created to purchase the subcontracted product -from the subcontractor. +Create and confirm PO +--------------------- -.. note:: - An |SO| for the product only creates a |PO| if the *Replenish on Order (MTO)* route is enabled on - the product's form, **and** there is not enough stock of the product on-hand to fulfill the |SO|. - - If there is enough stock on-hand, confirming an |SO| for the product creates a delivery order - instead, because Odoo assumes that the |SO| is fulfilled using the stock in the warehouse. - - This is not the case for subcontracted products that are dropshipped to the end customer. In that - case, a |PO| is **always** created, even if there is enough stock on-hand. - -Process PO ----------- - -If a |PO| was created in the previous step, navigate to it by clicking the :guilabel:`Purchase` -smart button at the top of the |SO|, or by going to :guilabel:`Purchase app --> Orders --> Purchase -Orders`, and selecting the |PO|. Then, click :guilabel:`Confirm Order` to confirm it, and move on to -the next step. - -If a |PO| was not created in the previous step, do so now by navigating to :menuselection:`Purchase -app --> Orders --> Purchase Orders`, and clicking :guilabel:`New`. +To create a |PO| for the subcontracted product, navigate to :menuselection:`Purchase app --> Orders +--> Purchase Orders`, and click :guilabel:`New`. Begin filling out the |PO| by selecting a subcontractor from the :guilabel:`Vendor` drop-down menu. In the :guilabel:`Products` tab, click :guilabel:`Add a product` to create a new product line. -Select a subcontracted product in the :guilabel:`Product` field, and enter the quantity in the -:guilabel:`Quantity` field. Finally, click :guilabel:`Confirm Order` to confirm the |PO|. +Select the subcontracted product in the :guilabel:`Product` field, and enter the quantity in the +:guilabel:`Quantity` field. -When a |PO| is confirmed for a product manufactured using basic subcontracting, a receipt or -dropship order is automatically created, and can be accessed from the corresponding -:guilabel:`Receipt` or :guilabel:`Dropship` smart button that appears at the top of the |PO|. +After adding the product, the :guilabel:`Expected Arrival` field is updated with the finished +product's expected delivery date, as configured earlier with the vendor's *Delivery Lead Time*. -.. figure:: subcontracting_basic/subcontractor-po.png - :align: center - :alt: A PO for a basic subcontracting product, with a Receipt smart button at the top of the page. +Finally, click :guilabel:`Confirm Order` to confirm the |PO|. A receipt is automatically created, +and a :guilabel:`Receipt` smart button appears at the top of the form. - PO for a basic subcontracting product, with a Receipt smart button at the top of the page. - -Process receipt or dropship order ---------------------------------- - -Once the subcontractor has finished manufacturing the product, they either ship it to the -contracting company, or dropship it to the end customer, depending on how the product was -:ref:`configured `. +.. _subcontracting_basic/workflow/validate_receipt: Process receipt -~~~~~~~~~~~~~~~ +--------------- -If the subcontractor ships the finished product to the contracting company, once it has been -received, navigate to :menuselection:`Purchase app --> Orders --> Purchase Orders`, and select the -|PO|. +After the order is confirmed, the subcontractor manufactures the product and delivers the finished +good back to the contracting company. -Click the :guilabel:`Receive Products` button at the top of the |PO|, or the :guilabel:`Receipt` -smart button at the top of the page, to open the receipt. Then, click :guilabel:`Validate` at the -top of the receipt to enter the product into inventory. +To receive the finished product from the subcontractor, click the :guilabel:`Receive Products` +button on the |PO|, or click the :guilabel:`Receipt` smart button at the top of the page. Then, +click :guilabel:`Validate` to enter the incoming shipment into inventory. -Process dropship order -~~~~~~~~~~~~~~~~~~~~~~ +.. note:: + If :doc:`multi-step inventory flows <../../inventory/shipping_receiving/daily_operations>` are + enabled, additional transfers must be validated to enter the incoming product into stock. -If the subcontractor dropships the product, once they have sent it, navigate to -:menuselection:`Purchase app --> Orders --> Purchase Orders`, and select the |PO|. +.. _subcontracting_basic/workflow/track-inventory: -Select the :guilabel:`Dropship` smart button at the top of the page to open the dropship order, and -click :guilabel:`Validate` at the top of the order to confirm that the product has been sent to the -customer. +Track inventory moves +--------------------- -Process delivery order ----------------------- +After validating a receipt, Odoo automatically generates inventory moves to track the movement of +subcontracted products between locations. To view these inventory moves, navigate to +:menuselection:`Inventory app --> Reporting --> Moves History`. -If the subcontracting workflow was started by a customer |SO|, and the finished product was **not** -dropshipped to the customer, but rather delivered to the contracting company, it is necessary to -ship the product to the customer, and process the delivery order. +To track inventory movement in subcontracting, Odoo sends any product components to a dedicated +*Subcontracting Location*. A :ref:`virtual location ` +called *Production* then consumes the components and produces the finished good. Once produced, the +good then moves back to the *Subcontracting Location* before finally entering the contractor's stock +when the receipt is validated. -Once the product has been shipped to the customer, navigate to the :menuselection:`Sales` app, and -select the |SO|. Select the :guilabel:`Delivery` smart button at the top of the page to open the -delivery order, and click :guilabel:`Validate` on the order to confirm that the product has been -shipped. +.. image:: subcontracting_basic/basic-sbc-moves.png + :alt: Moves History page to see subcontracting moves in Odoo. + +.. note:: + Because no components are sent in basic subcontracting, there is no movement from the + *Subcontracting Location* to the *Production* location. diff --git a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/basic-sbc-bom.png b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/basic-sbc-bom.png new file mode 100644 index 00000000000..b0152020bcc Binary files /dev/null and b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/basic-sbc-bom.png differ diff --git a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/basic-sbc-moves.png b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/basic-sbc-moves.png new file mode 100644 index 00000000000..4100822f25f Binary files /dev/null and b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/basic-sbc-moves.png differ diff --git a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/bom-type.png b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/bom-type.png deleted file mode 100644 index bd0c39e29ce..00000000000 Binary files a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/bom-type.png and /dev/null differ diff --git a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/subcontracting-flow.png b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/subcontracting-flow.png new file mode 100644 index 00000000000..a8edb4aa32e Binary files /dev/null and b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/subcontracting-flow.png differ diff --git a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/subcontractor-po.png b/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/subcontractor-po.png deleted file mode 100644 index b35cf695012..00000000000 Binary files a/content/applications/inventory_and_mrp/manufacturing/subcontracting/subcontracting_basic/subcontractor-po.png and /dev/null differ