有没有办法通过 SuiteScript 获取销售订单中项目行的系统信息(系统注释或更改历史记录)?

Is there way to get System information (System Notes or History of changes) for the item line in a sales order via SuiteScript?

我正在为销售订单编写简单的用户事件脚本(在我的例子中使用 beforeSave 条目),它读取其中的每个项目行并根据给定情况更改项目行中的一些值。

我遇到的问题:

如果管理员(角色)刚才或之前更改了销售订单中项目行的某些字段,则我的脚本不应更改此字段。通过 N/runtime 模块,我可以获得当前用户角色并验证他刚刚更改了某些内容,但是如果更改在当前编辑 "session".

之前完成,那将无济于事

我怎么知道管理员是否更改了某些内容? 我可以获取销售订单中每个项目行的一些 history/log/system 信息吗?

提前致谢

如果您需要防止您的代码仅在管理员是最初设置值的人时更改子列表(在您的情况下是销售订单上的项目列表)上的值,那么我建议使用自定义记录您可以存储由管理员更改的每笔交易的字段列表或数据的位置。例如,在创建销售订单时,您的 beforeSubmit 用户事件将创建此数据跟踪自定义记录并设置一些字段以将其 one-to-one 绑定到您的销售订单(意味着每个销售订单都有 1 个自定义记录,但是永远不会超过 1,您甚至可以将该自定义记录的内部 ID 存储在隐藏字段中的销售订单中,这样您就不必在以后的编辑中查找它)。在您的自定义记录中,您可以使用长文本字段(我相信有 100 万个字符的限制)来存储 JSON 数据,这些数据表示管理员 set/changed 的字段或值。在每次编辑时,您的用户事件代码应检查与销售订单交互的用户的角色,并相应地 read/update 自定义记录。这将适用于创建、编辑、复制等等(无法对销售订单上的项目列表进行内联编辑,因此无需考虑这些)。这将需要相当数量的代码才能每次进行查找和检查,但自定义记录速度超快并且使用很少的治理,因此您的用户应该不会看到任何明显的性能损失。我认识到这远非理想的解决方案,但它比 'always helpful' NetSuite 'support' 解决方案更可行。祝你好运,希望对你有所帮助!

Todd 的解决方案可行,但获取所有字段 ID 并将其存储在自定义记录中有点矫枉过正,因为您只想知道某个字段是否有更改。

如果有一个客户端脚本在“字段已更改”上勾选复选框 运行 将是更简单的解决方案。客户端脚本将检测它是否是您正在跟踪的列或字段(如果需要)。如果是字段,则只需将复选框设置为 'T'。然后在您的预定脚本上,您只需在更新记录之前选中此复选框。