销售单确认后,Odoo 是怎样一路生成发货与补货动作的
从 sale.order._action_confirm 到 sale.order.line._action_launch_stock_rule,再到 stock.rule.run、_run_pull、_run_buy,讲清楚销售如何触发库存、采购与补货链。
TOPIC PICKS
从 sale.order._action_confirm 到 sale.order.line._action_launch_stock_rule,再到 stock.rule.run、_run_pull、_run_buy,讲清楚销售如何触发库存、采购与补货链。
可以顺着继续读的相邻方向
sale_renting_planning 把 planning.slot 和 rental sale order 做成双向回写:改排班会推回租期,改租期也会推回 slots,并在资源缺失时重新分配。
sale_purchase_inter_company_rules 的关键不是“自动建采购单”五个字,而是确认时如何找到对方公司、切换 intercompany
很多团队以为项目型物料转售,只是在出库后手工往销售订单补一行材料费。Odoo 的 `sale_project_stock` 不是这么做的。本文围绕 `button_validate()`、`_sale_get_invoice_price()`、`_sale_prepare_sale_line_values()` 和 `project_id` 传递链路,讲清项目物料为何能从 stock move 自动长出销售行。
很多人把包邮理解成“把 delivery line 价格改成 0”;但标准 Odoo 在 sale_loyalty_delivery 里真正做的是保留原始运费行,再新增一条 shipping reward 负行,并把 delivery line 排除在积分门槛与积分累计之外,还限制同一时间只能有一个 shipping reward。本文把这套边界设计讲透。
很多人以为费用转嫁只是在报销单上选一张销售单;但标准 Odoo 真正做的是先用 expense_policy 决定是否可转嫁,再在过账时补齐 analytic_distribution,通过解析分录识别目标销售单,并强制一笔费用对应一条独立 sale.order.line。本文重点讲清这条“费用事实如何进入销售开票对象”的桥接链。
sale_commission_margin 代码不多,却明确告诉你企业版毛利提成落点不在订单表单,而在 achievement report 的计算 SQL 上。