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

使用SuiteScript 2创建代发货采购订单时缺失行项目报错

解决SuiteScript 2创建代发货采购订单时的行项目缺失错误

问题原因

你的代码使用**动态模式(isDynamic: true)**创建采购订单时,NetSuite不会自动从关联的销售订单中拉取代发货行项目——手动创建时UI层面的自动填充逻辑,在脚本动态模式下不会自动触发,必须显式处理行项目的添加,或者切换到非动态模式利用NetSuite的自动关联逻辑。

解决方案

方案1:改用非动态模式(推荐)

非动态模式下,通过createdfrom关联销售订单ID,NetSuite会自动读取销售订单中的代发货行并生成采购订单行,无需手动添加:

var purchaseOrder = record.create({
    type: record.Type.PURCHASE_ORDER,
    isDynamic: false,
    defaultValues: {
        createdfrom: 4427821, // 关联销售订单ID,替代原soid参数
        dropship: true,
        subsidiary: 9,
        entity: 322 // 供应商ID
    }
});

purchaseOrder.setValue({
    fieldId: "employee",
    value: 3
});

log.debug("Item Count", purchaseOrder.getLineCount("item"));
purchaseOrder.save();

方案2:动态模式下手动添加行项目

如果必须使用动态模式,需要先加载销售订单,筛选出代发货行,再手动添加到采购订单中:

// 加载源销售订单
var salesOrder = record.load({
    type: record.Type.SALES_ORDER,
    id: 4427821
});

var purchaseOrder = record.create({
    type: record.Type.PURCHASE_ORDER,
    isDynamic: true,
    defaultValues: {
        dropship: true,
        subsidiary: 9,
        custid: 666,
        entity: 322,
        createdfrom: 4427821
    }
});

purchaseOrder.setValue({
    fieldId: "employee",
    value: 3
});

// 遍历销售订单行,仅添加代发货行
var soLineCount = salesOrder.getLineCount({sublistId: "item"});
for (var i = 0; i < soLineCount; i++) {
    var isDropShipLine = salesOrder.getSublistValue({
        sublistId: "item",
        fieldId: "createpo",
        line: i
    });

    if (isDropShipLine) {
        purchaseOrder.selectNewLine({sublistId: "item"});
        // 复制商品ID、数量
        purchaseOrder.setCurrentSublistValue({
            sublistId: "item",
            fieldId: "item",
            value: salesOrder.getSublistValue({sublistId: "item", fieldId: "item", line: i})
        });
        purchaseOrder.setCurrentSublistValue({
            sublistId: "item",
            fieldId: "quantity",
            value: salesOrder.getSublistValue({sublistId: "item", fieldId: "quantity", line: i})
        });
        // 关联销售订单及对应行,确保代发货关系
        purchaseOrder.setCurrentSublistValue({
            sublistId: "item",
            fieldId: "createdfrom",
            value: 4427821
        });
        purchaseOrder.setCurrentSublistValue({
            sublistId: "item",
            fieldId: "soitem",
            value: salesOrder.getSublistValue({sublistId: "item", fieldId: "line", line: i})
        });
        purchaseOrder.commitLine({sublistId: "item"});
    }
}

log.debug("Item Count", purchaseOrder.getLineCount("item"));
purchaseOrder.save();

关键注意事项(OneWorld环境)

  • 确保供应商的子公司与销售订单的子公司完全匹配,否则会触发子公司不兼容错误
  • 销售订单的目标行项目必须开启代发货设置(createpo字段值为true)
  • 使用createdfrom而非soid关联源交易,soid为旧版参数,OneWorld环境下推荐使用标准的createdfrom字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:33:23