NetSuite SuiteScript问题:创建发票时修改关联销售订单字段无效果
问题原因与解决方案
核心问题:未保存修改后的销售订单
你的脚本成功加载并修改了销售订单字段,但缺少关键的保存步骤,导致修改仅停留在内存中,没有同步到NetSuite系统,所以销售订单字段值无变化且无报错。
修复后的完整代码
function afterSubmit(context) { // 仅在发票创建时执行,避免编辑发票时重复修改销售订单 if (context.type !== context.UserEventType.CREATE) { return; } var curRec = context.newRecord; var piId = curRec.getValue({ fieldId: 'createdfrom' }); // 校验来源是否为有效销售订单,避免空ID或非订单记录引发异常 if (!piId || curRec.getText({ fieldId: 'createdfrom' }).indexOf('Sales Order') === -1) { return; } var loadPI = record.load({ type: record.Type.SALES_ORDER, id: piId, isDynamic: true, }); loadPI.setValue({ fieldId: 'custbody55', value: true }); // 关键步骤:保存修改后的销售订单 loadPI.save({ enableSourcing: false, ignoreMandatoryFields: false }); } return { afterSubmit: afterSubmit };
额外优化说明
- 上下文过滤:添加
context.type判断,确保脚本只在发票创建触发,防止后续编辑发票时重复执行逻辑。 - 有效性校验:检查
createdfrom的合法性,避免加载无效记录导致潜在错误。 - 权限确认:确保脚本部署的角色拥有销售订单的编辑权限,以及自定义字段
custbody55的编辑权限。 - 动态模式兼容:如果
custbody55是主体字段,当前isDynamic: true的配置无需额外调整;若字段位于子列表或需要切换标签页,可能需要先定位到对应页面元素再赋值。
内容的提问来源于stack exchange,提问作者Shahriar
相关产品推荐
相关产品推荐

