You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Odoo中通过自动化操作从销售订单创建订阅记录?

解决Odoo销售订单BOM内订阅产品自动创建订阅的问题

你的代码存在几个关键问题导致RPC_ERROR,以下是问题分析和修正方案:

问题分析

  1. 硬编码公司ID:直接写死company_id:3会导致多公司环境下出错,不符合Odoo数据一致性原则。
  2. 链式调用空值风险:self.order_line.product_id.bom_ids.bom_line_ids.product_id.subscription_template_id.id的链式调用中,任何环节(比如产品无BOM、BOM子件无订阅模板)为空都会触发AttributeError,进而引发RPC_ERROR。
  3. 未处理订单行集合:order_line是订单行集合,直接取product_id无法正确遍历所有行的产品。
  4. 手动提交事务:Odoo自动化操作中手动执行self.env.cr.commit()会破坏事务管理,可能引发数据不一致或异常。

修正后的代码

# 遍历销售订单的所有订单行
for line in self.order_line:
    product = line.product_id
    # 仅处理包含BOM的产品
    if product.bom_ids:
        # 遍历该产品的所有BOM
        for bom in product.bom_ids:
            # 遍历BOM中的所有子件
            for bom_line in bom.bom_line_ids:
                sub_product = bom_line.product_id
                # 检查子件是否关联了订阅模板
                if sub_product.subscription_template_id:
                    # 构造订阅记录的字段值
                    vals = {
                        'company_id': self.company_id.id,  # 使用订单所属公司ID
                        'partner_id': self.partner_id.id,
                        'pricelist_id': self.pricelist_id.id,
                        'template_id': sub_product.subscription_template_id.id,
                        'code': self.name,
                        'name': f"{self.partner_id.name} - {sub_product.name}"  # 生成有意义的订阅名称
                    }
                    # 创建订阅记录
                    self.env['sale.subscription'].create(vals)
# 无需手动提交事务,Odoo会自动处理

关键注意事项

  • 触发时机配置:将自动化操作的触发时机设置为销售订单确认后(如状态变为sale或done),避免重复创建订阅。
  • 权限检查:确保自动化操作的执行用户拥有sale.subscription模型的创建权限。
  • 重复创建防护:若需避免重复创建,可在创建前增加判断,比如检查是否已存在该订单+订阅模板的订阅记录:
    existing_sub = self.env['sale.subscription'].search([
        ('code', '=', self.name),
        ('template_id', '=', sub_product.subscription_template_id.id)
    ], limit=1)
    if not existing_sub:
        self.env['sale.subscription'].create(vals)
    
  • 日志排查:开启Odoo调试模式,查看后台日志获取RPC_ERROR的具体异常信息,便于精准定位问题。

内容的提问来源于stack exchange,提问作者AlwaysTryingMyBest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:15:38