Odoo 10中stock_move与stock_picking表的区别及用途咨询
Hey there! Let's break down the difference between stock_move and stock_picking in Odoo 10—these two core inventory tables work hand in hand but serve totally distinct purposes.
stock_picking - The "Logistics Task Container"
Think of this as the overarching document that represents a complete inventory operation. It's the wrapper for all related product movements, storing high-level details about the task itself:
- The type of operation (outgoing shipment to a customer, incoming receipt from a vendor, internal transfer between warehouses)
- Source and destination locations/partners
- Overall status of the task (draft, confirmed, done, cancelled)
- Dates and responsible users
Typical Scenarios:
- Creating a customer delivery order for an ecommerce order
- Processing a vendor receipt for purchased goods
- Setting up an internal transfer to restock a retail store from a central warehouse
stock_move - The Individual Product Movement Line
This table tracks the specific, granular movement of a single product (or batch/serial number of a product). Each stock_move is tied to a stock_picking and stores the nitty-gritty details of what's being moved:
- Exact product ID, quantity, and unit of measure
- Source and destination stock locations (down to specific bins if you use location tracking)
- Batch/serial number (if the product uses tracking)
- Status of this individual line (e.g., one line might be backordered while others are fulfilled)
Typical Scenarios:
- Tracking that 5 units of "Wireless Headphones" move from Warehouse Bin A to Customer X's shipping address
- Logging that 10 units of "Raw Steel" are transferred from the receiving dock to the production floor
- Monitoring that a specific serial-numbered laptop is being returned from a customer to the repair depot
Let's distill the critical distinctions between the two:
- Granularity:
stock_pickingis macro-level (the entire task), whilestock_moveis micro-level (individual product lines within the task). - Status Independence: A picking's overall status reflects the task's progress, but individual moves can have their own statuses. For example, a picking might show "partially done" if some moves are fulfilled and others are still pending.
- Data Focus:
stock_pickingstores metadata about the operation, whilestock_movestores the actionable details of product flow. - Relationship: One
stock_pickingcan have manystock_moverecords (a one-to-many relationship), but everystock_movemust belong to exactly one picking (with rare exceptions for ad-hoc, unplanned inventory adjustments).
If you're sending a package to a friend with 3 items inside:
- The shipping label and package itself are the
stock_picking(the overall task with sender/receiver info) - Each item's packing slip entry is a
stock_move(detailing what's inside, where it came from, where it's going)
内容的提问来源于stack exchange,提问作者M.E.




