DEV Community

Techvaria
Techvaria

Posted on

Building a Reliable Odoo Subcontracting Workflow: Inventory, BOMs, and Cost Tracking


Outsourcing a manufacturing operation introduces an interesting systems problem: the physical production process moves outside the factory, but the business still needs to track its materials, costs, and expected output.

Consider a manufacturer that sends 500 metal components to an external vendor for heat treatment. The vendor processes the components and returns them several days later. During that period, the manufacturer needs to know how many components remain with the vendor, how many have been processed, and whether the returned quantity matches the expected production output.

If the ERP system records only the dispatch and final receipt, the intermediate inventory position can become difficult to verify. This is where Odoo subcontracting becomes relevant. Rather than treating outsourced manufacturing as an isolated purchase, Odoo can connect subcontracting orders with bills of materials, inventory locations, component consumption, and finished-product receipts.

Let's examine how the workflow fits together and what developers and ERP implementers should consider when configuring it.

1. Start With the Inventory Model

Before configuring a subcontracting workflow, it helps to distinguish between two things:

  • Physical location: Where the material is currently stored.
  • Ownership: Which business owns the material.

When a manufacturer sends company-owned components to a subcontractor, the physical location changes, but ownership does not necessarily change.
An ERP inventory model should preserve that distinction. Otherwise, material may appear to have disappeared from the warehouse without a clear record of where it went.

Odoo supports tracking supplied components at a subcontracting location. This allows the business to represent inventory held at an external processor without treating the transfer as an ordinary sale. For implementation teams, this means the inventory workflow should be designed around traceable movements rather than informal dispatch records.

A useful starting point is to define:

  • The materials supplied by the manufacturer.
  • The subcontractors that receive those materials.
  • The location structure used to represent external stock.
  • The transactions that record dispatch and return.
  • The reconciliation process for outstanding quantities.

Where vendor-level reporting is important, separate subcontracting locations can help distinguish material balances across different subcontractors.

2. Model the Outsourced Operation With a Bill of Materials

A Bill of Materials (BOM) describes the components and quantities required to produce a product. In a subcontracting workflow, it also establishes the expected consumption associated with the outsourced operation.

Suppose a vendor receives 100 metal blanks. The agreed process is expected to produce 98 acceptable components, with the remaining two units representing normal process loss. If the BOM and operational assumptions do not reflect this expectation, the system's consumption records may produce recurring variances that are difficult to interpret.

The BOM should reflect the actual manufacturing arrangement, including:

  • Components supplied by the manufacturer.
  • Expected quantities consumed by the operation.
  • Relevant packaging or consumables supplied by the manufacturer.
  • Differences between subcontractors where their processes or material requirements vary.

Components purchased directly by the subcontractor should not automatically be treated as manufacturer-supplied inventory.

This distinction matters because inaccurate component definitions can affect both stock reporting and cost calculations.

Keep process assumptions separate from unexplained loss

Not every material difference indicates a production problem.
Normal process loss, defective output, counting errors, and unexplained shortages are different situations. Manufacturing teams should define reasonable consumption expectations and investigate deviations that exceed those expectations.

Developers should avoid assuming that every variance can be explained by the BOM alone. Actual production data and the business's quality procedures remain important.

3. Connect Purchasing With Inventory Movements

A typical Odoo subcontracting workflow links the purchase of a subcontracted product with the movement of the components needed to produce it.

The process generally follows this sequence:

  1. Configure the subcontracted product and its subcontracting BOM.
  2. Create a Purchase Order for the subcontracted product.
  3. Transfer manufacturer-supplied components to the subcontracting location as required by the configured workflow.
  4. Allow the subcontractor to perform the operation.
  5. Receive the processed product.
  6. Record the associated vendor bill and review the resulting costs.

The exact transaction sequence depends on the Odoo version, subcontracting configuration, and material-supply arrangement.
The important design principle is that each stage should produce a reliable record of what happened.

For example, a dispatch should not be considered sufficient evidence that the subcontractor has completed the work. The system also needs a record of the returned output and the consumption associated with the operation.

This creates a clearer relationship between purchasing commitments, inventory movements, and actual production activity.

4. Understand the Costing Implications

Subcontracting affects more than inventory quantities. It also changes how the business should evaluate the cost of a finished component.
A subcontractor might charge ₹12 per unit for processing, but that fee does not necessarily represent the complete cost of the outsourced operation.

A cost review may need to consider:

  • The value of materials supplied by the manufacturer.
  • The subcontractor's processing charge.
  • Relevant transportation costs.
  • Material loss and rejected output.
  • Inspection or rework expenses, where applicable.

For example, a batch could contain ₹30,000 worth of supplied material, ₹6,000 in processing charges, and ₹1,000 in transportation expenses. These amounts represent ₹37,000 in associated costs before any other relevant adjustments.

Looking only at the processing invoice would give an incomplete picture.
Landed Cost may be relevant when allocating eligible acquisition expenses, such as certain freight or import-related costs, to purchased materials. However, transportation associated with a separate subcontracting operation may require different accounting treatment.

The ERP configuration should follow the organization's costing method and accounting policies rather than assuming that every additional expense automatically becomes inventory value.

5. Design Reconciliation Around Actual Material Balances

A subcontracting workflow is only as reliable as its ability to explain the difference between material sent and material accounted for.

Consider this simplified example:

  • Components sent to the subcontractor: 500
  • Accepted components received: 485
  • Components documented as scrap: 10
  • Components still being processed: 5

In this case, the quantities reconcile to the original 500 components.

If the five outstanding components were missing from the subcontractor's records, the manufacturer would need to investigate the discrepancy instead of automatically writing it off.

A useful reconciliation process should compare:

  • Opening material balance.
  • New component transfers.
  • Accepted output received.
  • Documented scrap or rejected quantities.
  • Material still held at the subcontractor.
  • Adjustments supported by appropriate records.

Regular reconciliation is generally easier to manage than reconstructing several months of transactions at once.
For developers, this also highlights why reports should distinguish between stock movements, production output, and adjustments rather than combining them into one unexplained quantity.

6. Evaluate Subcontractors Using Operational Data

Once inventory movements and expected consumption are recorded consistently, manufacturers can use the resulting information to evaluate external processors.

Purchase price alone is an incomplete performance indicator.

Other useful measures include:

  • Material yield: The proportion of supplied material converted into acceptable output.
  • Turnaround time: The time between dispatch and receipt.
  • Quality performance: The frequency of rejected or reworked components.
  • Cost per acceptable unit: The relevant total cost divided by the quantity of acceptable output.
  • Inventory accuracy: The agreement between recorded and confirmed material balances.

For example, a vendor charging less for each processed component may produce more scrap or require additional rework. A higher quoted rate may be commercially preferable if it results in a lower overall cost and more dependable output.

These comparisons are meaningful only when the underlying measurements are consistent across vendors.

7. Practical Considerations for Odoo Developers

When implementing or extending subcontracting functionality, focus on preserving the relationship between operational transactions and inventory records.

Validate the standard workflow first

Before writing custom code, confirm that the standard subcontracting configuration supports the business's material-supply model.

Test purchase orders, component transfers, receipts, and vendor bills using representative transactions.

Test edge cases

Include scenarios such as partial receipts, rejected output, unexpected consumption, and materials that remain at the subcontractor after a completed receipt.

The objective is to understand how the configured system records these cases and which exceptions require additional business procedures.

Avoid duplicating inventory logic

Custom modules should not create parallel stock balances that conflict with Odoo's inventory records. If a custom report or workflow is required, it should remain consistent with the underlying stock movements and valuation processes.

Keep costing and physical quantities distinct

A material discrepancy and a valuation discrepancy are not the same problem. The first concerns quantities and movements; the second concerns how the relevant transactions affect costs and accounting records.

Separating these concerns makes testing and troubleshooting more manageable.

Document version-specific behavior

Odoo functionality can vary between versions and configurations. Implementation documentation should identify the version tested and describe any relevant customizations instead of assuming that every deployment behaves identically.

Conclusion

Odoo subcontracting brings purchasing, inventory tracking, component consumption, and finished-product receipts into a connected workflow. Its practical value depends on more than enabling a feature: the material model, BOM assumptions, transaction sequence, and reconciliation procedures must accurately represent the real manufacturing process.

For manufacturers, this can provide a stronger basis for controlling externally held inventory, evaluating material yield, and understanding outsourced production costs.

For developers and ERP implementers, the central challenge is maintaining consistency between what physically happens at the subcontractor's premises and what the system records.

A reliable subcontracting implementation does not eliminate every production variance. It makes those variances easier to identify, investigate, and explain.

Top comments (0)