MODULE_DOES_NOT_EXIST for Custom SuiteScript Lib

The error could be caused by many problems and I think I just found a niche one. Scope The finding is just for non-AMD situations, where @NAmdConfig is not used and only the routes to the library files are referenced in the define([]) #1 Did you miss .js in the file name? Credit to this... » read more

如何隐藏wordpress toolbar

这个是wordpress的toolbar和解释(图片来自wordpress.org) 第一式 针对某一用户 针对某个用户隐藏toolbar直接去Users->All Users,选中该用户,然后选中Toolbar = false。大部分情况我们都不会这么做因为几乎没有情景我们需要如此。 第二式 functions.php修改 直接去主题/子主题的functions.php中,添加如下代码。这里有个前提是你的WP不是魔改版本,否则这个方法不奏效。如果你添加了代码,位置也正确,而且你用了某些模板,那么请移步第三式。 第三式 在主题中修改 有时候主题中有对于这个的设置,建议摸索一下。这里有个原则就是单一变量原则,每次只动一个设置,如果无效就返回;如果有效,找个小本本记下来你修改的什么地方。 第四式 Google搜索你的模板教你怎么做 Google一下不寒掺。比如我正在使用的Thimpress模板,直接用第二式的方法是无效的。 搜索的关键词是“thimpress hide toolbar”,果然给出了很多种方案,有的是从functions.php出发,有的用CSS;有的有条件,比如对管理员仍然显示,有的是全部禁用。

Customer Payment记录类型UNDEPOSITED FUNDS字段的bug

当用SuiteScript操作customer payment记录的时候,选择isDynamic=true,此时如果输入了科目(account)字段的值,UNDEPOSITED FUNDS就会被取消,然后科目旁边的radio button会被选中。但是当某些逻辑需要反转选项,把account设置为空,UNDEPOSITED FUNDS这个radio button却不会被选中。 这种情况下尝试rec.setValue({fieldId: "undepfunds", value: true})是无效的,会提示You have entered an Invalid Field Value true for the following field: undepfunds 正确的方法是! 这个bug很明显来自SuiteScript不能很好兼容radio button

Saved Search多个formula结果字段产生bug及应对

之前做过几个项目都有saved search中使用formula搜索结果列的情况,个人感觉当同一个类型的formula结果列出现多次但formula的内容不一样的情况下很容易产生bug。 今日的例子中,在对于invoice的搜索中我使用了如下的searchColumn,对应结果中的formulacurrency和formulacurrency_1 搜索结果反馈是正常的。之后我添加了两个搜索列,对应结果中的formulacurrency_2和formulacurrency_3 问题来了:用于显示结果的suitelet上,4个列返回的数字是一样的,返回的都是133.14,明显不正确;但log显示的结果是正确的,如下: 这种情况下因为上面代码中formulacurrency_2和formulacurrency_3公式比较简单,可以直接使用字段进行搜索,避免formulacurrency的使用,即可避免问题 此时返回结果是正确的 问题得以解决。 如果更复杂的情况确实需要多个formula的情况呢,这种情况可以考虑把searchResult当作JSON进行处理,直接用Object[key]的方式取值。不过这种情况需要考虑未来SuiteScript更改返回结果结构的情况,方案可能随时失效。 暂时没有用过N/query处理过类似情况,如果有人做过也可以来说说。

Item Type(货品类型)的枚举值

在使用 SuiteScript 2.0 版本技术开发 RESTLet API 的过程中,我们遇到了加载项目记录的常见问题。必须先按类型限定项目,然后才能执行常规记录操作。为了帮助解决这个问题,我制作了一个快速函数来说明了解项目类型和等效负载记录操作所需的查找。 以下函数对于基本的 NetSuite 软件库可能很有价值。请注意,此功能为pseudocode。

SuiteScript时区介绍、冲突及解决办法

服务器端脚本 服务器端的脚本是指SuiteScript中Server-side Script,即运行是在服务器上完成的脚本。这类包括User Event(用户事件),Map/Reduce(映射/减少),RESTlet(外界调用NetSuite的接口),Mass Update(大量更新),Scheduled(定时)等等类型,即非客户端脚本都是服务器端脚本。 在开发时如果使用new Date()创建,JavaScript的时间类型的对象的时区是服务器时间,一般为GMT(格林威治时间)。 客户端脚本 客户端脚本(ClientScript)的时区是由本地设备通过浏览器提供的,一般情况下是本地设备设置的时区和时间。 潜在冲突例一:服务端脚本根据当前日期做逻辑推断 比如用户位于东八区,当创建一条记录之后与一个日期型字段custbody_deadline作比较判断哪个日期更靠后,结果有时候正确,有时候错误。 这种情况下首先不确定因素之一就是new Date()的返回的日期实际是带有时间的日期,而通过recObj.getValue()返回的值是不带日期的,而比较过程是将二者转换成为毫秒再比较,日期一样的情况下new Date()几乎绝对大于get到的时间(除非0点0分0秒那一瞬间,几乎不可能)。 (待续)