跳至内容

理解Odoo的转移与仓库操作:库存拣选模型解析

Odoo库存和仓库管理中央转移模型的完整指南
2026年3月10日
理解Odoo的转移与仓库操作:库存拣选模型解析
Dasolo
| 还没有评论

介绍


在 Odoo 中,模型定义了数据在数据库中的结构和存储方式。您处理的每一条业务数据,从销售订单到库存转移再到仓库操作,都存在于一个模型中。


理解 Odoo 模型对于开发者和功能顾问都至关重要。模型是 Odoo 数据架构的基础。它们定义了字段、关系和业务逻辑。


本文重点介绍库存应用中最重要的模型之一:stock.picking。无论您是在构建自定义仓库模块、集成外部系统,还是配置工作流程,您都将与该模型打交道。

什么是 stock.picking 模型


stock.picking 模型表示 Odoo 中的转移。它是跟踪仓库操作的中心位置。每个拣货记录代表从一个位置到另一个位置的单个货物转移。


Odoo 中的此模型在库存模块中使用。收货、交付和内部转移都会创建 stock.picking 记录。当您确认销售的交付订单、接收采购的货物或在仓库之间移动库存时,您正在创建或更新 stock.picking 记录。


该模型在库存模块中定义。其他模块通过 Odoo 模型继承扩展它。销售模块添加与交付相关的字段。采购模块添加收货工作流。制造模块添加生产移动。每个模块根据需要添加内容,而不重复核心结构。


stock.picking 模型继承自 mail.thread 和 mail.activity.mixin。这意味着您可以直接跟踪更改、添加聊天消息并安排转移活动。

模型中的关键字段


以下是 stock.picking 模型中最重要的 Odoo 字段。理解这些将帮助您有效地处理转移和仓库操作。


1. name

类型:Char。此字段存储转移的参考。它通常是从序列自动生成的(例如 WH/OUT/00001)。它显示在转移表单的标题中,是拣货的主要标识符。


2. origin

类型:Char。源文档参考。对于交付,这可能是销售订单名称。对于收货,则是采购订单。它有助于追踪转移的来源。


3. state

类型:Selection。转移的状态。值:草稿、等待其他操作、等待、准备、完成、已取消。每个状态决定可用的操作。Odoo 根据相关的库存移动计算此值。


4. picking_type_id

类型:Many2one (stock.picking.type)。操作类型。定义这是收货、发货还是内部转移。必填。每种拣货类型都有默认的源和目的地位置。


5. move_ids

类型:One2many (stock.move)。库存移动。每一行代表一个产品和要移动的数量。这是转移的核心。所有的预留和可用性逻辑都基于这些移动。


6. move_line_ids

类型:One2many (stock.move.line)。详细操作。当您有批次或序列跟踪时,这些行存储特定的批次和位置。用于拣货、包装和验证。


7. location_id

类型:Many2one (stock.location)。源位置。产品取自的地方。必填。对于发货,这通常是库存位置。对于收货,则是供应商位置。


8. location_dest_id

类型:Many2one (stock.location)。目的地位置。产品移动到的地方。必填。对于发货,这通常是客户位置。对于收货,则是库存位置。


9. partner_id

类型:Many2one (res.partner)。联系人。对于发货,客户。对于收货,供应商。用于文件上的地址和承运人集成。


10. scheduled_date

类型:日期时间。转移计划处理的时间。用于规划和优先级。手动设置时,将为所有库存移动设置预期日期。


11. date_deadline

类型:日期时间。截止日期。通常来自销售订单或采购订单。用于标记延迟转移和客户承诺日期。


12. date_done

类型:日期时间。转移被验证或取消的时间。只读。当拣货完成时自动设置。


13. priority

类型:选择。优先级水平。产品首先为优先级较高的转移保留。用于紧急订单。


14. move_type

类型:选择。运输政策。值:尽快(允许部分交付)或当所有产品准备好时(全有或全无)。影响拣货处理的时间。


15. user_id

类型:多对一(res.users)。负责的用户。用于分配和工作负载跟踪。创建时默认为当前用户。


16. company_id

类型:Many2one (res.company)。公司。与拣货类型相关。在多公司设置中,这决定了哪个公司拥有该转移。


17. group_id

类型:Many2one (procurement.group)。采购组。将相关移动链接在一起。当多个拣货来自同一订单时使用。


18. backorder_id

类型:Many2one (stock.picking)。当转移部分验证时,会为剩余部分创建一个补单。此字段链接到原始拣货。


19. backorder_ids

类型:One2many (stock.picking)。从此拣货创建的补单。当您部分验证并需要稍后处理其余部分时使用。


20. return_id

类型:Many2one (stock.picking)。如果此拣货是作为退货创建的,则此字段链接到原始拣货。用于退货工作流程。


21. note

类型:Html。内部备注。对仓库用户可见。可以包括特殊说明或处理要求。


22. signature

类型:图像。交付验证时捕获的签名。用于交付证明。作为附件存储。


23. is_signed

类型:布尔值。根据签名计算。指示交付是否已签署。


24. owner_id

类型:Many2one (res.partner)。验证时分配的所有者。用于托运或当产品属于第三方时。


25. package_level_ids

类型:One2many (stock.package_level)。使用打包时的包裹级别。将移动行分组到包裹中以进行运输。


26. create_date

类型:日期时间。记录创建的时间。由Odoo自动管理。从基础模型继承。


27. write_date

类型:日期时间。记录最后修改的时间。自动管理。从基础模型继承。


28. active

类型:布尔值。软删除标志。当为 False 时,记录被归档。继承自基础模型。

该模型在业务工作流程中的使用方式


1. 销售与交付

当销售订单被确认时,Odoo 创建一个交付订单(stock.picking)。该交付通过 origin 链接到销售订单。仓库工作人员进行拣货和打包,然后进行验证。状态从草稿变为准备就绪,再到完成。


2. 采购与收货

当采购订单被确认时,Odoo 创建一个入库收据。该收据将产品从供应商位置接收至库存。partner_id 是供应商。验证更新库存数量。


3. 内部转移

在仓库或位置之间移动库存会创建内部拣货。picking_type_id 的代码为 'internal'。位置和目的地都是内部库存位置。


4. 退货与补货

当销售被退回时,会创建一个退货拣货。return_id 链接到原始交付。当交付部分验证时,backorder_ids 保存剩余工作。


5. 制造与生产

制造订单为原材料(消耗)和成品(生产)创建拣货。stock.picking 模型通过 mrp 模块扩展以支持这些流程。

开发者如何扩展该模型


开发人员使用多种模式扩展 stock.picking。Odoo 模型继承是主要机制。


模型继承

使用 _inherit = 'stock.picking' 来扩展模型。添加新字段、重写方法或添加约束。Odoo 中的继承模型将您的更改保存在单独的模块中,以便于升级。


添加字段

在您继承的模型中定义新的 Odoo 字段。使用正确的字段类型:Char、Many2one、Boolean、Integer、Text、Selection。考虑多公司环境下的公司相关字段。


Python 扩展

重写 button_validateaction_assign_create_backorder 来添加逻辑。使用 super() 调用原始方法。注意状态转换和移动创建。


Odoo Studio

Odoo Studio 让您无需代码即可添加字段。适合快速自定义,如自定义标签或额外备注。对于复杂逻辑或承运人集成,自定义模块更易于维护。

最佳实践


  • 手动创建拣货时,始终设置 picking_type_id。它驱动默认位置和行为。
  • 使用 origin 字段追溯到源文档。这有助于报告和调试。
  • 在构建 API 集成时,stock.picking 模型通过 Odoo API 完全暴露。通过 move_ids 关系创建移动。不要在没有移动的情况下创建拣货。
  • 使用 scheduled_date 进行规划。它影响保留和优先级。
  • 对于自定义字段,请使用x_前缀或模块前缀,以避免与未来的Odoo版本发生冲突。

常见错误


  • 创建拣货单时未设置picking_type_id。这可能导致默认位置错误。
  • 在确认后修改move_ids而不理解状态机。状态转换可能很复杂。
  • 忘记为交付设置partner_id。承运人和文档需要联系信息。
  • 重写button_validate而不调用super()。这可能会破坏补货单的创建和其他模块。
  • 假设move_ids和move_line_ids始终保持同步。移动行在您保留或使用详细操作时创建。

结论


stock.picking模型是Odoo库存的核心。它存储转移、交付和收据。理解其字段以及模块如何扩展它将帮助您有效配置、定制和集成Odoo。


无论您是映射仓库流程的功能顾问,还是构建自定义模块的开发人员,扎实掌握stock.picking将节省时间并防止错误。

准备优化您的 Odoo 仓库


Dasolo帮助公司实施、定制和优化Odoo。我们专注于API集成和Odoo开发。我们的团队在Odoo数据架构和像stock.picking这样的模型方面拥有丰富的经验。


如果您需要帮助进行Odoo实施、自定义仓库模块或集成,我们随时为您提供帮助。 预约演示 以讨论您的项目。

理解Odoo的转移与仓库操作:库存拣选模型解析
Dasolo 2026年3月10日
分析这篇文章
登录 留下评论