NetSuite SuiteScript 2.x用户事件脚本if条件逻辑错误修复请求
NetSuite SuiteScript 2.x 用户事件脚本逻辑修正
问题分析
原脚本存在两个核心逻辑错误:
- 条件
subTotal < 2000000 || subTotal < 10000000逻辑冗余,等价于subTotal < 10000000,导致金额等于2000000时会触发True的赋值 else if(subTotal = 2000000)使用了赋值运算符=而非比较运算符===,既无法正确判断相等,还会意外修改subTotal的值
修正后代码
/** *@NApiVersion 2.x *@NScriptType UserEventScript *@author Test */ define(['N/ui/serverWidget','N/record','N/runtime','N/search'], function (serverWidget, record, runtime, search){ function beforeSubmit(context){ try{ var newRecord = context.newRecord; var type = context.type; if (type === context.UserEventType.CREATE || type === context.UserEventType.EDIT){ var subTotal = newRecord.getValue({ fieldId:'subtotal' }); // 优先处理等于2000000的特殊情况 if(subTotal === 2000000){ newRecord.setValue({ fieldId: 'custbody_me_trans_code', value: false, ignoreFieldChange: true }); } // 满足小于10000000的其他情况设为True else if(subTotal < 10000000){ newRecord.setValue({ fieldId: 'custbody_me_trans_code', value: true, ignoreFieldChange: true }); } // 大于等于10000000的情况可根据需求补充,此处保持原逻辑不处理 } } catch (error){ log.debug("error", error); throw "Something Error " + error; } } function afterSubmit(context) { try { log.debug("After Submit") } catch (error) { log.debug("error", error); throw "Something Error " + error; } } return { beforeSubmit: beforeSubmit, afterSubmit: afterSubmit }; })
逻辑说明
- 先判断金额是否严格等于2000000,如果是则设置字段为
False,优先处理特殊值避免被其他条件覆盖 - 再判断金额是否小于10000000,满足则设置字段为
True,这包含了金额小于2000000的情况,同时排除了等于2000000的特殊场景 - 所有条件判断使用严格相等运算符
===,避免类型转换导致的意外错误
内容的提问来源于stack exchange,提问作者antechf11
相关产品推荐
相关产品推荐

