企业 销售 订阅

Odoo 企业版订阅伙伴关系为什么不是“关单就停权益”:cancel、renew 与 grade/pricelist 回写链讲透

sale_subscription_partnership 在订阅取消、关闭、续费、重开时会联动 commercial partner 的 grade 与 pricelist;权益边界不由 subscription_state 单独决定。

企业 销售
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 7 阅读

订阅带伙伴权益时,很多实施会只盯着 subscription_state:关闭了就没权益,开启了就有权益。sale_subscription_partnership 的源码提醒你,真正的权益边界在 partner 主数据上:commercial partner 的 grade_id 和特定 pricelist 要跟着订阅生命周期回写。

主要参考源码:

  • enterprise/sale_subscription_partnership/models/sale_order.py

一、取消与关闭都会触发权益移除

_action_cancel()set_close() 在执行父层逻辑后都会调 _remove_partnership()。它不是只改订单字段,而是检查 partner 当前 grade_id 是否等于这张订阅的 assigned_grade_id;如果是,就把 grade 清掉,并在价目表仍等于该等级默认价目表时一并清空。

二、续费和重开会重新把权益加回去

_confirm_renewal()_add_partnership()set_open() 则只对 progress state 中的订阅执行加回。也就是说,权益恢复既取决于动作类型,也取决于订阅是否真的回到有效进行中状态。

三、为什么不能只看订单状态

因为权益最终落点不是订单,而是 partner:

  • grade 影响伙伴身份;
  • pricelist 影响后续报价和价格;
  • commercial partner 还会影响同公司联系人共享同一权益口径。

如果只改 subscription_state,而不回写 partner,销售和门户价格就会继续沿用旧权益。

四、这条链路真正跨了哪些边界

  • 订阅单生命周期;
  • commercial partner 等级;
  • partner 默认价目表;
  • 后续销售报价与权益口径。

这正是典型的“跨模块链路”:订阅动作影响的不只是订阅本身,而是后续整个销售主数据口径。

五、结论

订阅伙伴关系不是“关单就停权益”。企业版真正做的是把cancel / close / renew / reopen 四类动作映射到 partner grade 与 pricelist 的回写规则里,让权益变化在销售主数据上真正落地。

DISCUSSION

评论区

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