# Odoo Manufacturing Technical Model Names Reference

> Source: https://netray.co/tools/odoo-manufacturing-technical-model-names-reference
> Publisher: Netray (netray.co), AI and integration engineering for ERP and manufacturing systems.
> Section: Free Tools

## Short answer

Searchable lookup of the Odoo models behind manufacturing, inventory, purchasing and sales, with the fields you query most.

## Category

other-erp

## Erp

Odoo

## Industry

Discrete Manufacturing

## Audience

- ERP developer
- ERP consultant
- Odoo administrator

## Tool

**Kind:** worksheet

**Mode:** reference

**Columns:**

#### Technical model

**Key:** model

**Type:** text

#### What it holds

**Key:** meaning

**Type:** text

#### Odoo app

**Key:** app

**Type:** text

#### Commonly used fields

**Key:** fields

**Type:** text

**Rows:**

**Model:** mrp.production

**Meaning:** Manufacturing order

**App:** Manufacturing

**Fields:** product_id, product_qty, bom_id, state, date_start

**Model:** mrp.bom

**Meaning:** Bill of materials header

**App:** Manufacturing

**Fields:** product_tmpl_id, product_qty, type, bom_line_ids

**Model:** mrp.bom.line

**Meaning:** BOM component line

**App:** Manufacturing

**Fields:** bom_id, product_id, product_qty, product_uom_id

**Model:** mrp.bom.byproduct

**Meaning:** By-product line on a BOM

**App:** Manufacturing

**Fields:** bom_id, product_id, product_qty

**Model:** mrp.routing.workcenter

**Meaning:** BOM operation (routing step), Odoo 13 and later

**App:** Manufacturing

**Fields:** bom_id, workcenter_id, name, time_cycle_manual

**Model:** mrp.workcenter

**Meaning:** Work center

**App:** Manufacturing

**Fields:** name, capacity, time_efficiency, costs_hour

**Model:** mrp.workorder

**Meaning:** Work order generated from a BOM operation

**App:** Manufacturing

**Fields:** production_id, workcenter_id, state, duration_expected

**Model:** mrp.workcenter.productivity

**Meaning:** Time tracking entries on a work center

**App:** Manufacturing

**Fields:** workcenter_id, workorder_id, date_start, date_end, loss_id

**Model:** mrp.unbuild

**Meaning:** Unbuild order

**App:** Manufacturing

**Fields:** mo_id, product_id, product_qty, state

**Model:** product.template

**Meaning:** Product template (the item as users see it)

**App:** Inventory

**Fields:** name, type, uom_id, tracking, standard_price

**Model:** product.product

**Meaning:** Product variant (the stockable record)

**App:** Inventory

**Fields:** default_code, product_tmpl_id, barcode

**Model:** uom.uom

**Meaning:** Unit of measure

**App:** Inventory

**Fields:** name, category_id, factor, uom_type

**Model:** stock.warehouse

**Meaning:** Warehouse

**App:** Inventory

**Fields:** name, code, lot_stock_id

**Model:** stock.location

**Meaning:** Stock location

**App:** Inventory

**Fields:** complete_name, usage, location_id

**Model:** stock.picking.type

**Meaning:** Operation type (receipt, delivery, manufacturing)

**App:** Inventory

**Fields:** name, code, warehouse_id

**Model:** stock.picking

**Meaning:** Transfer (receipt, delivery, internal)

**App:** Inventory

**Fields:** picking_type_id, partner_id, state, scheduled_date

**Model:** stock.move

**Meaning:** Planned or done stock movement

**App:** Inventory

**Fields:** product_id, product_uom_qty, location_id, location_dest_id, state

**Model:** stock.move.line

**Meaning:** Detailed operation line with lot and location

**App:** Inventory

**Fields:** move_id, lot_id, quantity (qty_done before Odoo 17)

**Model:** stock.quant

**Meaning:** On-hand quantity per product, location and lot

**App:** Inventory

**Fields:** product_id, location_id, lot_id, quantity, reserved_quantity

**Model:** stock.lot

**Meaning:** Lot or serial number (stock.production.lot before Odoo 17)

**App:** Inventory

**Fields:** name, product_id

**Model:** stock.scrap

**Meaning:** Scrap order

**App:** Inventory

**Fields:** product_id, scrap_qty, location_id, scrap_location_id

**Model:** stock.warehouse.orderpoint

**Meaning:** Reordering rule (min/max)

**App:** Inventory

**Fields:** product_id, location_id, product_min_qty, product_max_qty

**Model:** stock.route

**Meaning:** Route such as Buy or Manufacture

**App:** Inventory

**Fields:** name, rule_ids

**Model:** stock.rule

**Meaning:** Procurement rule inside a route

**App:** Inventory

**Fields:** route_id, action, picking_type_id

**Model:** stock.valuation.layer

**Meaning:** Inventory valuation layer

**App:** Inventory (accounting)

**Fields:** product_id, quantity, value, stock_move_id

**Model:** purchase.order

**Meaning:** Purchase order

**App:** Purchase

**Fields:** partner_id, state, date_planned, order_line

**Model:** sale.order

**Meaning:** Sales order

**App:** Sales

**Fields:** partner_id, state, commitment_date, order_line

**Model:** res.partner

**Meaning:** Customer, vendor or contact

**App:** Contacts

**Fields:** name, supplier_rank, customer_rank

**Notes:** Field names shift between Odoo versions. Confirm in Settings > Technical > Models with developer mode on, or with fields_get, before relying on a field in code.

## Content

**Intro:** Every Odoo screen is backed by a model with a technical name, and every integration, report or import eventually needs those names. This reference lists the manufacturing, inventory, purchase and sales models you meet most often, with the fields people query.

**Sections:**

#### How to use this reference

**Body:** Search by model name, plain-language meaning or field. Use the technical name in XML-RPC and JSON-RPC calls, in import templates (the Import button accepts model field names), in automated actions, and when you write custom reports in the database. Switch on developer mode in Odoo and open Settings, Technical, Models to confirm the exact fields in your version before you code against them.

**Bullets:**

- Search the list for mrp to see all manufacturing models
- Use product.template for item master data and product.product for variants
- Check the Odoo version column notes for renamed models
- Export the table to Excel to share with a consultant

#### How the models connect

**Body:** A manufacturing order (mrp.production) points to a BOM (mrp.bom), whose lines (mrp.bom.line) become raw material stock.move records. Operations on the BOM (mrp.routing.workcenter) become work orders (mrp.workorder) on a work center (mrp.workcenter). Physical stock lives in stock.quant, one row per product, location and lot. Moves change quants when they reach the done state. Understanding that chain tells you where to look when a number looks wrong.

#### Version differences that bite

**Body:** Odoo renames things between releases. Lots moved from stock.production.lot to stock.lot in Odoo 17, and the done quantity field on move lines changed from qty_done to quantity. Routings were a separate model in older releases and became BOM operations in Odoo 13. Always test a query on a copy of your database for your exact version, and keep the version in the name of any script you share.

#### Common mistakes

**Body:** Querying product.template when you need the variant, so stock numbers come back wrong. Writing to stock.quant directly instead of using inventory adjustments, which skips valuation and moves. Assuming a quant quantity is available; reserved_quantity must be subtracted. Treating draft moves as stock. Each of these produces plausible numbers that do not match what the warehouse sees.

**Cta:** If you want to ask questions of your Odoo or other ERP data in plain English instead of writing RPC calls, Netray can set that up read-only and on-prem.

**Faq:**

#### How do I find a model's technical name in Odoo?

**Answer:** Turn on developer mode, then open any record and use the bug icon menu to view fields, or go to Settings, Technical, Models and search. The Model column shows the technical name such as mrp.production, and the Fields tab lists every field with its type.

#### Is there a database table for each model?

**Answer:** Yes. Odoo stores each model in PostgreSQL with dots replaced by underscores, so mrp.production becomes the mrp_production table. Direct SQL is fine for read-only reporting, but use the ORM or the external API for any write so computed fields and stock logic still run.

#### Which model holds on-hand inventory?

**Answer:** stock.quant holds on-hand quantity per product, location and lot or serial. Available quantity is quantity minus reserved_quantity. Stock moves record the history, but quants are the current state, so inventory reports and reorder logic read from them.

#### Do these names work in Odoo Online and Odoo.sh?

**Answer:** Yes for the standard apps, since the models are the same. Odoo Online restricts custom code and direct database access, so use the external API there. Enterprise-only apps such as Quality add their own models that are not in this list.

## Search terms

odoo mrp.production model, odoo mrp.bom fields, odoo stock.quant fields, odoo technical model names, odoo manufacturing database tables, odoo mrp.workorder, odoo orderpoint model, odoo developer cheat sheet

---
Talk to an engineer: https://netray.co/contact?intent=erp_ai | Machine catalog: https://netray.co/agent/catalog.json
