Saved Search Formula 显示 Payment Status 时出现错误
支付老李
结论
该公式返回字符串,因此 Saved Search 的结果列应选择 Formula (Text)。如果选择 Formula (Numeric) 等其他公式类型,NetSuite 通常会显示 ERROR: Invalid Expression。
比较状态文本时通常需要区分大小写。请使用实际显示值 Paid In Full,不要写成 PAID IN FULL。
CASE
WHEN {applyingtransaction.status} = 'Paid In Full'
THEN 'Paid'
ELSE 'Waiting for Payment'
END
设置步骤
- 打开 Saved Search 的 Results 页签。
- 添加 Formula (Text) 列。
- 将上述公式填入 Formula 字段。
- 保存并运行搜索。
- 临时添加
{applyingtransaction.status}对应的普通结果列,检查该字段实际返回的状态文本。
如果状态文本比较不稳定
在部分 NetSuite 账户或搜索类型中,列表字段在公式里返回的是内部状态值,而非界面上显示的文本。这时可以尝试改用状态引用字段:
CASE
WHEN {applyingtransaction.statusref} = 'paidInFull'
THEN 'Paid'
ELSE 'Waiting for Payment'
END
paidInFull 是一种常见的状态引用形式,具体值仍要以当前账户和 Saved Search 类型的实际返回结果为准。可以先将 {applyingtransaction.statusref} 单独作为 Formula (Text) 输出,确认它返回的值。
需要注意
applyingtransaction 指应用到当前交易上的关联交易。Sales Order 本身通常没有“Paid In Full”状态,付款状态更多体现在由 Sales Order 生成的 Invoice 或相关结算交易上。因此,还需要确认:
- 当前 Saved Search 的基础类型是否支持
applyingtransaction连接。 - 付款应用到了 Sales Order,还是其生成的 Invoice。
- 一张 Sales Order 是否会生成多张 Invoice。如果会,只判断某一条关联交易的状态,无法可靠说明整张订单已经全部付款。
- 关联交易可能导致结果重复。必要时应使用 Summary Search,并根据业务关系进行汇总判断。
如果直接添加 {applyingtransaction.status} 就会报错,说明当前搜索类型不支持该连接。此时应从 Billing Transaction、Invoice 或 Customer Payment 的关系入手查询,调整 CASE 语法并不能解决这个问题。
备注:内容仅供参考。
