出库时的 stock.move.line 是如何确定的
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
CATEGORY FOCUS
聚合 Odoo 开发基础、源码理解、ORM、模型、视图、安全与扩展实践。
TOPIC PICKS
用通俗但不失源码细节的方式,讲清楚 Odoo 出库时 stock.move.line 的生成逻辑:从 stock.move、stock.quant、移除策略到 lot/serial 拆行。
这篇不再只讲“采购到收货链”,而是把采购订单、收货、Vendor Bill、付款控制和库存估值边界一起讲清。你会真正看懂 Odoo 里的三单匹配到底在匹配什么。
很多人以为 Odoo CRM 里的 expected revenue 会跟着概率一起“改金额”。源码其实不是这么设计的:系统自动算的是概率,金额本体通常不动,真正被联动的是 prorated revenue、won/lost 语义和关闭时间。
很多团队把工作日历理解成每周一到周五几点到几点。Odoo 的 resource_calendar 源码却明显把它当成人力制度底座:双周制、弹性工时、公共休假复制、小时/天换算和 FTE 比例都从这里长出来。
很多团队把员工技能当成一组静态标签,觉得会 Python 就把等级改成高级。Odoo 的 hr_skills 源码却在强调另一件事:技能和认证都带时间语义,修改不该覆盖历史,到期还可能触发活动提醒。
很多人能看懂单张拣货单、采购单、制造单,却一到“这条需求链到底是怎么从销售一路串到补货和履约”的问题就开始迷路。本文把 procurement.group、move_orig_ids、move_dest_ids 讲成人话,解释 Odoo 是怎么把一条需求变成一串彼此关联的 move 链的。
很多人以为 Odoo CRM 的 merge 只是“把两条重复线索收纳到一起”。源码其实更像“选一个主记录,再把其他记录的依赖搬过去”。一旦你把不同来源的线索合并,campaign / medium / source 往往只会保留主记录那一套。