SuiteScript 使用 afterSubmit 更新记录问题

问题描述 投票:0回答:1

我试图用脚本完成的是,当用户在销售订单上设置子列表行以创建代发货采购订单时 - 保存时,NetSuite 创建采购订单,然后脚本打开采购订单,读取采购订单上的供应商名称字段PO 并将其分配给销售订单上的自定义记录字段。

我的问题是我可以使用 beforeSubmit 执行此操作,但用户必须创建 PO,然后再次重新编辑销售订单并提交,以便脚本能够找到已创建的 PO。我希望通过使用 afterSubmit 来避免这种情况,其中应该在此时分配和链接 PO?

我在下面提出的内容不会出错,但它不会更新该字段。我尝试在 setSublistValue 之后添加提交行,但随后收到有关“请选择要添加的项目”的错误。任何帮助将不胜感激。

/**
 *@NApiVersion 2.1
 *@NScriptType UserEventScript
 */
define(['N/record', 'N/runtime', 'N/search'], (record, runtime, search) => {
    function afterSubmit(context) {
        if (context.type === context.UserEventType.DELETE) return;
        log.debug('afterSubmit::context', context);
          var salesOrderId = context.newRecord.id;
          var salesOrderRecord = record.load({
                type: record.Type.SALES_ORDER,
                id: salesOrderId,
                isDynamic: true
          });
        var dropshipId = salesOrderRecord.getSublistValue({
            sublistId: 'links',
            fieldId: 'id',
            line: 0
        });
        if (dropshipId) {
            var purchaseOrderRecord = record.load({
                type: record.Type.PURCHASE_ORDER,
                id: dropshipId,
                isDynamic: true
            });
            const numLines = salesOrderRecord.getLineCount({
                sublistId: 'item'
            });
            for (let i = 0; i < numLines; i += 1) {
                var vendorCode = purchaseOrderRecord.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'vendorname',
                    line: i
                });
                salesOrderRecord.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'custcol_vencode',
                    value: vendorCode,
                    line: i
                });
            }
        salesOrderRecord.save();
        }
      
    }
    return {
        afterSubmit
    };
});
netsuite suitescript2.0
1个回答
0
投票

没关系,我需要将其更改为 selectLine,然后 setCurrentSublistValue,然后 commitLine。

                salesOrderRecord.selectLine({
                    sublistId: 'item',
                    line: i
                })
                salesOrderRecord.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'custcol_vencode',
                    value: vendorCode,
                    ignoreFieldChange: true
                });
                salesOrderRecord.commitLine({
                    sublistId: 'item'
                })
© www.soinside.com 2019 - 2024. All rights reserved.