【问题标题】:How to set NetSuite system date in the future or past for testing?如何设置 NetSuite 系统日期在未来或过去进行测试?
【发布时间】:2015-08-12 07:33:48
【问题描述】:

是否可以临时更改 NetSuite 中的系统日期以测试日期触发脚本?如果没有,是否有办法重载所有 NetSuite 日期函数,以便可以在沙盒中为给定用户模拟未来或过去的日期?

我们会根据特定 NetSuite 记录到期前的天数发送电子邮件通知。我不想让用户等待几天来测试此功能或更改记录的到期日期,而是提供一个 UI 以允许更改 NetSuite 系统日期。

我希望日期覆盖特定于用户而不是整个沙盒实例,这样多个用户可以模拟未来/过去的日期。日期覆盖需要在客户端和服务器 SuiteScript 代码以及计划脚本中都起作用。

【问题讨论】:

  • 感谢您迄今为止的创造性回答。一切都很好,但还没有完美的解决方案。我在这里大声思考,但是使用 JavaScript 我想知道是否可以覆盖日期函数的原型(或者 JS 是否不允许这样做)并对调试模式进行特殊逻辑检查,如果调试模式使用偏移变量调整日期,否则正常获取日期。

标签: javascript netsuite suitescript


【解决方案1】:

一种可能的解决方法是创建两个脚本参数。指示脚本处于调试模式的复选框和调试日期,您可以在其中指定所需的任何日期。

然后在你的脚本上,检查复选框是否被选中。如果选中,则使用日期参数中的值而不是系统日期进行比较。

【讨论】:

  • 这是我的想法,但这不允许触发预定的脚本。我想你可以有一个类似的设计,并使用一个工作流或其他用户事件脚本,根据时间调用预定的脚本。需要进一步测试以确认
  • 我也喜欢这个。对于预定的脚本,也许我必须添加一个参数来传递测试日期/时间。 JavaScript 是否允许更改系统日期函数的原型?如果是这样,则可以这样做并确定返回真实日期还是模拟日期的逻辑。这甚至可能不起作用,具体取决于 NS 如何触发预定脚本。有没有人讨厌 NetSuite(开发),但后来学会了喜欢它?
【解决方案2】:

您可以创建部署参数字段 {testDays}。

在生产中使其为零。在测试环境中给它一些负数。

创建类似以下的内容

newTempDate = nlapiAddDays({expirydate}, {testDays})

并在任何地方使用 newTempDate 作为您的标准。

【讨论】:

    【解决方案3】:

    我不确定 Netsuite 中是否有这样的功能可让您自定义系统日期。就我而言,您的日程安排脚本将始终选择服务器实例的时间戳。无论您是否更改日期/时区,您的所有交易、记录、脚本和登录时间都将显示服务器计算机所在的太平洋时间。一种解决方案可能是在脚本中定义您自己的日期,而不是更改服务器日期(在如果您不想更改记录中的日期)并对照它验证您的记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多