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

如何通过WORKFLOW和CUSTOM RECORD生成关联采购订单的送货单?

NetSuite 采购订单物料同步到自定义送货单解决方案

前置准备(必做)

先完善自定义送货单(Delivery Docket)的字段配置:

  • 新增关联采购订单字段:类型选「List/Record」,关联「Purchase Order」,设为必填,记录好字段ID(比如custrecord_dd_link_po)
  • 新增物料子列表:子列表类型选「Inline Editor」,添加以下字段:
    • 物料(Item):List/Record类型,关联Item
    • 数量(Quantity):Number类型
    • 单位(Unit):List/Record类型,关联Unit(可选)
      记录好子列表ID(比如custrecord_dd_item_sublist)

方案1:纯Workflow无脚本实现(适合零代码需求)

利用NetSuite原生Workflow的字段复制功能,无需编写代码:

  1. 修改现有触发「Create Delivery Docket」按钮的Workflow:
    • 在「Go to Record」动作中,设置默认字段值,将当前采购订单的ID填充到自定义记录的「关联采购订单」字段
  2. 给自定义送货单新建一个独立Workflow:
    • 触发条件:当「关联采购订单」字段被修改且不为空时触发
    • 添加「Copy Fields from Record」动作:
      • 源记录类型选「Purchase Order」,源记录取「关联采购订单」字段的值
      • 字段映射:将采购订单的「Item」子列表字段(Item、Quantity、Unit)一一映射到自定义送货单的物料子列表对应字段
  3. 保存激活Workflow后,点击采购订单上的按钮,打开的自定义记录会自动同步PO物料

方案2:极简User Event脚本辅助(更稳定高效,适合基础编程能力)

如果纯Workflow的子列表复制出现字段映射问题,用极简NetSuite 2.1脚本实现:

  1. 新建User Event脚本,代码如下(替换注释中的自定义字段ID为你实际的ID):
/**
 * @NApiVersion 2.1
 * @NScriptType UserEventScript
 */
define(['N/record'], (record) => {
    const beforeLoad = (context) => {
        // 仅在创建送货单时触发
        if (context.type !== context.UserEventType.CREATE) return;
        
        // 从URL参数获取采购订单ID(Workflow打开时传递)
        const poId = context.request.parameters.po;
        if (!poId) return;

        const deliveryRec = context.newRecord;
        // 关联采购订单
        deliveryRec.setValue({
            fieldId: 'custrecord_dd_link_po', // 替换为你的关联PO字段ID
            value: poId
        });

        // 加载采购订单
        const poRec = record.load({
            type: record.Type.PURCHASE_ORDER,
            id: poId
        });

        const poLineCount = poRec.getLineCount({sublistId: 'item'});
        // 循环复制物料行到送货单
        for (let i = 0; i < poLineCount; i++) {
            deliveryRec.selectNewLine({sublistId: 'custrecord_dd_item_sublist'}); // 替换为你的子列表ID
            // 复制物料
            deliveryRec.setCurrentSublistValue({
                sublistId: 'custrecord_dd_item_sublist',
                fieldId: 'custrecord_dd_item', // 替换为你的物料字段ID
                value: poRec.getSublistValue({sublistId: 'item', fieldId: 'item', line: i})
            });
            // 复制数量
            deliveryRec.setCurrentSublistValue({
                sublistId: 'custrecord_dd_item_sublist',
                fieldId: 'custrecord_dd_quantity', // 替换为你的数量字段ID
                value: poRec.getSublistValue({sublistId: 'item', fieldId: 'quantity', line: i})
            });
            deliveryRec.commitLine({sublistId: 'custrecord_dd_item_sublist'});
        }
    };

    return {beforeLoad};
});
  1. 部署脚本到自定义送货单记录上,设置触发时机为「Create」
  2. 修改现有采购订单的Workflow按钮:
    • 在「Go to Record」动作的「URL参数」中添加po=${record.id},把当前PO的ID传递给自定义记录

注意事项

  • 自定义字段/子列表的ID必须替换为你实际创建的ID(可在NetSuite字段设置页面查看)
  • 纯Workflow方案需确保子列表字段的类型与采购订单的Item子列表完全匹配,否则复制会失败
  • 脚本方案需确保有足够的权限(比如采购订单的查看权限、自定义记录的编辑权限)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:10:33