PAYATHON 2026

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

设置步骤

  1. 打开 Saved Search 的 Results 页签。
  2. 添加 Formula (Text) 列。
  3. 将上述公式填入 Formula 字段。
  4. 保存并运行搜索。
  5. 临时添加 {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 语法并不能解决这个问题。

备注:内容仅供参考。