All posts
Functional5 min read

Combining Subcontracting with In-House Assembly in Odoo Manufacturing

Configure Odoo manufacturing to blend subcontracted operations with in-house assembly - sending components to a vendor for processing then receiving the semi-finished goods for final assembly.

Hybrid Subcontracting and In-House Assembly in Odoo#

Real manufacturing is rarely 100% in-house or 100% outsourced. A common model: send raw components to a subcontractor for specialized processing (painting, coating, machining), receive the processed parts, then complete final assembly in-house.

Configuring the Hybrid Flow#

Example: Widget requires:

  1. Raw Metal → subcontracted powder coating → Coated Shell (done externally)
  2. Coated Shell + Electronics + Wiring → final assembly (done in-house)

Step 1 - Subcontracting BOM for the Coated Shell#

Manufacturing → Bills of Materials → New:

  • Product: Coated Shell
  • BOM Type: Subcontracting
  • Subcontractors: Coating Vendor Co.

Components:

  • Raw Metal Sheet (sent to the vendor)
  • Powder Coat Material (if vendor supplies - leave out if vendor provides)

When you create a PO for Coated Shell from Coating Vendor Co., Odoo automatically creates a "Send to Subcontractor" picking to ship the raw components.

Step 2 - In-House BOM for the Final Widget#

Manufacturing → Bills of Materials → New:

  • Product: Widget
  • BOM Type: Manufacture

Components:

  • Coated Shell (received from subcontractor)
  • Electronics Assembly
  • Wiring Harness

This is a normal manufacturing BOM - the MO uses the subcontracted Coated Shell as a component.

The Full Flow#

  1. Purchase Order to Coating Vendor Co. for Coated Shells
  2. Odoo creates a Send to Subcontractor transfer: Raw Metal → Vendor
  3. Vendor processes and returns Coated Shells
  4. Receive Subcontracted Goods: validate the PO receipt
  5. Coated Shells enter stock
  6. Manufacturing Order for Widgets: consumes Coated Shells + other components
  7. Finished Widgets enter stock → ready for delivery

Cost Tracking#

Subcontracted goods cost = (components sent) + (vendor invoice for processing).

The vendor invoice for processing is posted as a cost against the subcontracted product. When the Coated Shell is used in the Widget MO, its full cost (including subcontracting fee) flows into the Widget's cost of production.

Quality Control at Receipt#

When subcontracted parts arrive:

  1. Create a quality control point on the receipt operation for the subcontracted product
  2. Inspect before accepting into stock
  3. If quality fails → return to vendor or scrap

This prevents defective subcontracted parts from entering production.

Reporting on Subcontracting Costs#

Manufacturing → Reporting → Subcontracting Moves: view all subcontracted BOMs with:

  • Components sent
  • Goods received
  • Vendor invoices linked
  • Cost per subcontracted unit

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free