NetSuite计算销售订单总重量UserEventScript脚本运行报错求助
NetSuite销售订单总重量计算脚本问题修复
现有代码错误点
- 模块引入缺失:代码未引入SuiteScript必须的
N/record模块,调用记录操作API时会触发未定义报错 - 钩子选择错误:
afterSubmit阶段获取的context.currentRecord为只读状态,直接调用setValue不会生效,也无法触发二次保存 - 子列表索引错误:NetSuite SuiteScript 2.x所有子列表的行下标从0开始,现有循环从1开始遍历会跳过首行,且循环终止条件设置为
i < lines+1会导致最后一次遍历索引超出范围,抛出无效行号错误 - 空值未做兼容:如果行项目的单个重量字段无值,计算时会出现
NaN异常,最终总重量赋值失败
修正后的User Event脚本(推荐用beforeSubmit触发)
/** *@NApiVersion 2.0 *@NScriptType UserEventScript */ define(['N/record'], function(record) { function beforeSubmit(context) { var objRecord = context.newRecord; var lineCount = objRecord.getLineCount({sublistId: 'item'}); var totalWeight = 0 ; // 子列表从0开始遍历到lineCount-1 for (var i = 0; i < lineCount; i++) { var weight = objRecord.getSublistValue({ sublistId: 'item', fieldId: 'custcol_individual_weight', line: i }) || 0; // 空值默认取0避免NaN var quantity = objRecord.getSublistValue({ sublistId: 'item', fieldId: 'quantity', line: i }) || 0; totalWeight += weight * quantity; } objRecord.setValue({ fieldId: 'custbody_items_total_weight', value: totalWeight }); } return { beforeSubmit: beforeSubmit }; });
部署注意事项
- 脚本部署到销售订单记录类型,触发场景勾选创建、编辑即可
- 确认自定义字段
custcol_individual_weight、custbody_items_total_weight的权限已开放给脚本执行的角色,没有字段级权限限制 - 如果需要实时在前端编辑时就显示总重量,可以配套使用Client Script的
fieldChanged、sublistChanged钩子复用上面的汇总逻辑即可
内容的提问来源于stack exchange,提问作者etornet
相关产品推荐
相关产品推荐

