NetSuite SuiteScript中FOR循环与IF语句逻辑问题排查
NetSuite免运费脚本IF逻辑异常排查求助
我在NetSuite环境开发免运费脚本,需求是读取销售订单行项目上来自物料主数据的「排除免运费」复选框值,汇总所有需要排除免运费的行项目金额。但IF语句逻辑执行异常:当前销售订单共3行,2行符合免运费条件,1行需排除,预期flTotalItemAmount结果应为183.75美元,但现在IF错误把行0和行1都纳入了计算。附上代码和调试截图,求排查原因。
现有代码
try{ var totalQuantity = 0; var flTotalItemAmount = 0; var flAmount = 0; var itemCount = newSOIDbfs.getLineCount('item'); log.debug("itemCount:", itemCount); for (var i = 0; i < itemCount; i++) { var stExcludeFromFreeFreight = newSOIDbfs.getSublistValue('item', 'custcol_exclude_from_free_freight', i); if(stExcludeFromFreeFreight != 'F') { log.debug("Free 1:", stExcludeFromFreeFreight); flAmount = newSOIDbfs.getSublistValue('item', 'amount', i); log.debug("flAmount:", flAmount); flTotalItemAmount = forceParseFloat(flTotalItemAmount) + forceParseFloat(flAmount); log.debug("flTotalItemAmount:", flTotalItemAmount); } // end if statement } // end for loop } // end try statement catch(exception){ log.debug("GetInputDate Error Message:",exception); }
调试截图

问题原因及修正方案
- 逻辑完全反向:需求是汇总「需要排除免运费」的行项目,但当前
if(stExcludeFromFreeFreight != 'F')的条件,是把「不排除免运费(即符合免运费)」的行加入计算,和需求完全相反。 - NetSuite复选框字段返回规则:复选框勾选时返回
'T',未勾选返回'F'。要汇总勾选了「排除免运费」的行,IF条件应改为stExcludeFromFreeFreight === 'T'。 - 从调试截图日志可验证:行0、行1的
stExcludeFromFreeFreight值为'F',当前逻辑把它们纳入计算,导致结果错误;行2的值为'T',才是需要汇总的目标行。
修正后的IF语句:
if(stExcludeFromFreeFreight === 'T')
内容的提问来源于stack exchange,提问作者Brad D.
相关产品推荐
相关产品推荐

