NetSuite Case 语句在保存的搜索中有效,但在工作流中无效

NetSuite Case statement works in Saved Search but doesn't work in Workflow

我对 NetSuite 工作流中的公式案例语句有疑问,我在保存的搜索中使用了相同的案例语句并且它工作正常,但在采购日期的工作流公式中生成错误,以设置从销售订单创建的现金销售记录上的日期字段。

NetSuite 公式基本上说明它是 10:00 PM (22:00) 还是在增加一天之后,否则使用 datecreated 日期。 (这用于计算银行对账匹配的结算日期)

工作流事件是“创建”现金销售记录时的“记录加载前”,这绝对是服务器端事件。我也独立拔出来了

to_date({createdfrom.datecreated}) + 1

{createdfrom.datecreated}

按预期独立工作,没有错误,真的不确定我做错了什么

CASE WHEN to_number(to_char({createdfrom.datecreated}, 'HH24')) >= 22 THEN to_date({createdfrom.datecreated}) + 1 ELSE {createdfrom.datecreated} END

这是我在保存的搜索中使用的 case 语句,效果很好

CASE WHEN to_number(to_char({datecreated}, 'HH24')) >= 22 THEN to_char(({datecreated} + 1), 'DD/MM/YYYY') ELSE to_char(({datecreated}), 'DD/MM/YYYY') END

所以基本上在加载之前创建记录用户事件使用:

CASE WHEN to_number(to_char({sysdate}, 'HH24')) >= 22 THEN {sysdate} + 1 ELSE {sysdate} END

我看到你已经澄清了你的问题。

{trandate} 是日期字段,而公式正在生成日期时间字段

因此,由于您的公式旨在填充日期字段,因此您必须将日期时间转换为日期:

TRUNC(CASE WHEN to_number(to_char({createdfrom.datecreated}, 'HH24')) >= 22 THEN {createdfrom.datecreated} + 1 ELSE {createdfrom.datecreated} END)

不幸的是,Netsuite Workflow 公式值在使用 运行 保存的搜索中的 Netsuite 公式方面并不可靠。有些有效,有些无效。在这种情况下,To_char 和日期格式似乎根本无法识别。

解决方案是一个名为“创建时间”的自定义字段,它从保存的搜索中动态获取价值。该字段在销售订单和现金销售交易表单中公开(您也可以隐藏它)。然后我使用该字段作为我的比较来实现将设置日期值的条件。我测试了几个旧的销售订单转换为现金销售并且效果很好

Custom field hours

Hours saved search

Workflow to evaluate hours

希望这对遇到相同或类似问题的其他人有所帮助。