Salesforce 公式逻辑

Salesforce formula Logic

我正在尝试编写一个计算金额的公式,但如果 serviceFee 字段有值,它将使用该值。

所以

Field1 = Amount
Field2 = ServiceFee

如果服务费有值,金额必须等于服务费
如果任何 ClientTypes 匹配,公式将不会查看 ServiceFee

我试过部署这个,但公式似乎只执行 ServiceFee 部分

IF(ClientType.Id = '123456', 
   Amount- Discount, 
   IF(ClientType.Id = '7891011', 
      Amount + 1,
      IF(NOT(ISBLANK(ServiceFee)), 
         Amount = ServiceFee, 
      )
   )
)

问题是您试图在最后一条语句中为 Amount 赋值,这在公式语法中不起作用。它不会编译,因为它实际上被解析为比较语句(returning 一个布尔值)。

相反,首先确定公式应该是什么 return。如果您有多个客户端 ID,请尝试 CASE 函数。这样就很清楚每种情况下会发生什么。例如:

CASE(ClientType.Id,
  '123456',  Amount - Discount,
  '7891011', Amount + 1,
  IF(ISBLANK(ServiceFee), 0, ServiceFee)
)

最后一个参数是 CASE 函数的默认值,如果 ClientType.Id 不是之前的任何一个值,将对其进行计算。