NetSuite已保存搜索:PO履行交易日期组合公式无结果求助
NetSuite 已保存搜索PO排查方案
问题根源排查
日期计算精度问题
你用SYSDATE - {fulfillingtransaction.trandate}计算天数时,SYSDATE包含时分秒,而trandate是纯日期型(默认不带时分),这种减法会得到带小数的结果(比如90.1天),NetSuite对数值判断时可能做整数截断,导致符合条件的记录被误过滤。应该先截断时分秒再计算,用TRUNC(SYSDATE) - TRUNC({fulfillingtransaction.trandate}) > 90。多履行交易的关联逻辑
一个PO可能对应多条履行交易,直接引用{fulfillingtransaction.trandate}会返回每条履行交易的日期,CASE WHEN逻辑会逐行判断——只要有一条履行日期未超90天,整个PO就不会被筛选出来。需要用聚合函数取最晚的履行日期来判断,确保只要最晚的履行日期超90天就符合条件。CASE WHEN逻辑的隐性问题
合并两个条件到CASE里可能触发NetSuite的字段关联优先级问题,拆分条件反而更可靠。
修正方案
方案1:拆分条件(推荐)
直接在已保存搜索的「标准」标签下添加两个独立条件:
- 条件1:
{fulfillingtransaction.trandate}不为空 - 条件2:
{fulfillingtransaction.trandate}小于TRUNC(SYSDATE) - 90
方案2:修正CASE公式(含聚合)
如果必须用CASE WHEN,改用聚合函数确保逻辑正确:
CASE WHEN MAX({fulfillingtransaction.trandate}) IS NOT NULL AND TRUNC(SYSDATE) - TRUNC(MAX({fulfillingtransaction.trandate})) > 90 THEN 1 ELSE 0 END
设置公式类型为公式(数字),并设置条件为「公式等于1」。
额外检查点
- 确认PO的状态范围(是否排除了已关闭、已取消的PO)
- 检查履行交易的类型是否全部包含(比如是否漏了销售订单、调拨单等履行类型)
内容的提问来源于stack exchange,提问作者Jennie Barnett
相关产品推荐
相关产品推荐

