企业 采购 / 跨公司回链

Odoo 企业版跨公司采购为什么要双向写回引用:partner_ref、client_order_ref、auto_generated 与 posted 自动确认

从 sale_purchase_inter_company_rules 讲清 SO/PO 互生时为什么要同时维护 partner_ref 与 client_order_ref,并用 auto_generated 与 intercompany_document_state 防止循环和未受控自动过账。

企业 采购
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 4 阅读

跨公司采购最容易被低估的,不是自动生成对方公司的单据,而是生成以后能不能双向追得回来。企业版在 sale_purchase_inter_company_rules 里做的重点,正是让采购单和销售单之间形成可回溯、可防环的文档对链。

从采购侧看,button_approve() 审批通过后才会在目标公司生成销售单;从销售侧看,_action_confirm() 也可能反向生成采购单。于是系统必须同时维护两种引用:让对方公司知道“这张单来自谁”,也让原公司知道“我已经在对面生成了什么”。partner_refclient_order_ref 的存在,就是为了让双方不是各自孤立。

但只做回链还不够。跨公司单据如果没有防环,SO 生成 PO,PO 又回头生成 SO,很快就会进入死循环。所以源码里会给自动生成的单据打上 auto_generated,并用公司参数 intercompany_document_state 控制生成后是保持草稿还是进一步自动确认/过账。这里的重点不是自动化越多越好,而是自动化必须被拦在受控状态机里。

这条链还包含公司、用户和权限切换。单据不是以当前审批人的身份直接写进对方公司,而是切到对方公司的 intercompany user,再在那个公司上下文里落单。也就是说,回链信息和权限切换是绑在一起设计的。

因此,跨公司采购真正要守住的是四件事:源单和目标单之间能互认;自动生成的单据不会再次触发同类生成;目标公司确认策略可控;以及整个过程始终发生在正确的公司身份下。只做到“自动建单”,远远不够。

遇到链路异常时,最应该查的是引用字段有没有写回、auto_generated 是否被自定义逻辑覆盖、intercompany_document_state 配置是否超出了团队预期。很多所谓“跨公司自动单失控”,根因其实是防环机制被破坏。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。