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

Odoo自动动作创建重复订阅问题及服务产品添加需求

Odoo销售订单生成订阅问题修复方案

问题分析

当前代码存在两个核心问题:

  1. 订阅数量超出预期:循环逻辑错误,未按服务产品维度创建订阅,且数据处理导致重复/多余订阅生成;
  2. 订阅行添加失败:One2many字段写入格式错误,赋值逻辑有误,仅能添加最后一个产品行。

修复后代码

for order in records:
    # 遍历当前销售订单的所有行
    for order_line in order.order_line:
        # 获取订单行产品对应的BOM组件集合
        bom_components = order_line.product_id.bom_ids.mapped('bom_line_ids.product_id')
        # 遍历每个BOM组件产品
        for prod in bom_components:
            # 筛选需要生成订阅的服务产品(recurring_invoice为True)
            if prod.recurring_invoice:
                # 为单个服务产品创建订阅
                sub_vals = {
                    'company_id': order.company_id.id,
                    'partner_id': order.partner_id.id,
                    'pricelist_id': order.pricelist_id.id,
                    'template_id': prod.subscription_template_id.id if prod.subscription_template_id else False,
                    'name': f"订阅 - {prod.name} ({order.name})"
                }
                sub = env['sale.subscription'].create(sub_vals)
                
                # 为订阅添加对应的产品行
                line_vals = {
                    'price_unit': prod.list_price,
                    'product_id': prod.product_variant_id.id,
                    'uom_id': prod.uom_id.id,
                    'name': prod.name,
                    'quantity': order_line.product_uom_qty
                }
                sub.write({'recurring_invoice_line_ids': [(0, 0, line_vals)]})

关键修复点说明

针对问题1(多余订阅):

  • 调整循环层级:按「销售订单→订单行→BOM组件产品」的层级遍历,确保每个符合条件的服务产品单独生成一个订阅;
  • 使用mapped方法获取BOM组件,避免重复产品数据;
  • 订阅名称关联产品名称与订单号,便于后续识别;
  • 兼容subscription_template_id为空的场景,避免空值报错。

针对问题2(订阅行添加失效):

  • 将订阅行写入操作移至产品循环内部,每个服务产品对应添加一行;
  • 修正uom_id赋值:使用产品本身的单位ID(prod.uom_id.id),原代码错误地将订单行数量赋值给单位字段;
  • 删除(5, 0, 0)清空指令,改为用(0, 0, line_vals)逐个添加行,避免覆盖已有数据;
  • 添加quantity字段,关联订单行的产品数量,匹配业务逻辑。

额外注意事项

确保自动动作的触发配置正确:建议设置为「销售订单状态变为已确认」时触发,避免重复执行导致多余订阅生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:48:58