Skip to content

Inventory Extensions

Custom inventory features for stock management.

Critical Configuration: MTO Route

The Replenish on Order (MTO) route MUST be enabled for the SO → PO → Delivery → FSM workflow to function correctly. Without MTO, confirming a Sales Order will NOT automatically create a Purchase Order.

MTO (Make to Order) Configuration

The MTO route ensures that each Sales Order automatically creates a Purchase Order for the vendor. This is essential for the window blinds workflow where products are custom-ordered per customer specifications.

Why MTO is Required

flowchart LR
    A[Sale Order] -->|MTO Route| B[Purchase Order]
    B --> C[Receive Products]
    C --> D[Delivery Order]
    D -->|Validate| E[FSM Order]

Without MTO enabled: - Sales Orders do NOT create Purchase Orders - You must manually create POs - The SO → PO link is broken

Step 1: Unarchive the MTO Route

The MTO route is archived by default in Odoo 15. You must unarchive it first.

  1. Go to Inventory → Configuration → Routes
  2. Click Filters → Archived to show archived routes
  3. Find Replenish on Order (MTO)
  4. Select it and click Action → Unarchive

Alternatively: 1. Go to Inventory → Configuration → Routes 2. Remove the "Archived" filter from the search bar 3. The MTO route will now appear in the list

Step 2: Configure Products for MTO

Each product that should trigger automatic PO creation needs MTO configured:

  1. Go to Inventory → Products → Products
  2. Open the product
  3. Click the Inventory tab
  4. In the Routes section, enable:
  5. Replenish on Order (MTO)
  6. Buy

Both Routes Required

MTO does NOT work alone. You MUST also select the Buy route (for purchased products) or Manufacture route (for manufactured products).

Step 3: Configure Vendor

For MTO + Buy to work, the product must have a vendor configured:

  1. On the product form, go to Purchase tab
  2. Add a vendor in the Vendors section
  3. Set the price and delivery lead time

MTO Workflow

When MTO is properly configured:

Step Action Result
1 Confirm Sale Order Draft Purchase Order created
2 Confirm Purchase Order Receipt (incoming) created
3 Validate Receipt Products in stock
4 Validate Delivery FSM Order created

Verify MTO is Working

After confirming a Sales Order:

  1. Check Purchase → Orders → Purchase Orders
  2. A new draft PO should exist with:
  3. Origin = Sales Order number (e.g., "SO0001")
  4. Vendor = Product's configured vendor
  5. Products = Same as SO lines

Common Issues

Problem Cause Solution
No PO created after SO confirm MTO route not enabled on product Enable MTO + Buy routes
No PO created MTO route still archived Unarchive the route
Error: No vendor Product missing vendor Add vendor in Purchase tab
POs merging together Standard Odoo behavior See bi_product_dimension for 1 SO = 1 PO fix

Reference

For official Odoo documentation, see: Replenish on Order (MTO) - Odoo 15.0 Documentation


Module Overview

Module Technical Name Version Description
Inventory Receipt inventory_receipt 15.0.1.0.1 Product summary on receipts
Product Dimensions bi_product_dimension - Dimension fields on products
Cancel Picking dev_picking_cancel - Cancel stock picking orders

Inventory Receipt Module

Field Value
Technical Name inventory_receipt
Version 15.0.1.0.1
Category Inventory
Dependencies stock

Overview

Adds a Product Summary tab to the stock picking form showing aggregated product quantities.

Features

  • Product Summary Tab - Added to Receipt form view
  • Quantity Display - Table showing Product, Quantity, and UoM
  • Quick Overview - See all products in receipt at a glance

Usage

  1. Open Stock Picking (Receipt)
  2. Click Product Summary tab
  3. View aggregated quantities

Tab Contents

Column Description
Product Product name
Quantity Total quantity in receipt
UoM Unit of measure

Other Inventory Modules

bi_product_dimension

Adds dimension fields to products:

  • Length
  • Width
  • Height
  • Weight
  • Volume (computed)

dev_picking_cancel

Allows cancelling stock picking orders:

  • Cancel button on picking form
  • Reverts stock moves
  • Handles related documents

Installation

# Install inventory receipt
docker compose exec odoo odoo -i inventory_receipt --stop-after-init -d DATABASE_NAME

# Install product dimensions
docker compose exec odoo odoo -i bi_product_dimension --stop-after-init -d DATABASE_NAME

# Install cancel picking
docker compose exec odoo odoo -i dev_picking_cancel --stop-after-init -d DATABASE_NAME

Module Structure

inventory_receipt

inventory_receipt/
├── __manifest__.py
├── __init__.py
└── views/
    └── stock_picking_views.xml   # Form view extension

Integration with Field Service

These inventory modules support field service operations:

flowchart TD
    A[Sale Order] --> B[Delivery Order]
    B --> C[FSM Order]
    C --> D[Technician Delivers]
    D --> E[Parts Confirmation]
    E --> F[Signature]
  1. Sale Order creates delivery order
  2. FSM Order linked to delivery
  3. Technician confirms parts delivery
  4. Customer signs for parts received

Troubleshooting

Product Summary Not Showing

  1. Verify inventory_receipt module is installed
  2. Upgrade module: -u inventory_receipt
  3. Check view is applied to correct picking type

Cancel Button Not Working

  1. Verify dev_picking_cancel is installed
  2. Check user has permission to cancel
  3. Verify picking state allows cancellation