我试图用脚本完成的是,当用户在销售订单上设置子列表行以创建代发货采购订单时 - 保存时,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
};
});
没关系,我需要将其更改为 selectLine,然后 setCurrentSublistValue,然后 commitLine。
salesOrderRecord.selectLine({
sublistId: 'item',
line: i
})
salesOrderRecord.setCurrentSublistValue({
sublistId: 'item',
fieldId: 'custcol_vencode',
value: vendorCode,
ignoreFieldChange: true
});
salesOrderRecord.commitLine({
sublistId: 'item'
})