场景:
在英文环境中写的Saved Search运行的好好的,但是在中文状态下失效了。因为saved search中使用了如下的公式。
case when {type}='Sales Order' then {amount} else 0 end
这是个新手常犯的错误,因为在做Transaction的Saved Search时,有个陷阱字段就是Type字段。这个字段会跟随系统语言而呈现“中英文”的数值。以下图为例,同一个Saved Search在中英文下其“Type”字段的值是不同的。
如果避免这个问题?
我们从数据字典上寻求答案。在数据字典上,可以看到Type字段类型为Select,而另外一个Record Type字段的类型为Text。前者会伴随环境语言而呈现不同的数值,但是后者不会。
我们做一个测试如下:
可以看出Record Type字段跟环境语言无关,其数值始终是英文。那么就意味着我们今后在写跟“记录类型”相关的Saved Search的Formula时,需要选择Record Type字段,而非Type字段。
我们收集了Record Type的数值列表如下,以供大家今后使用:
类型 Type | 记录类型 RecordType |
高级公司间日记账 | advintercompanyjournalentry |
装配件生产 | assemblybuild |
装配件分拆 | assemblyunbuild |
库位转移 | bintransfer |
库位入库处理工作表 | binworksheet |
一揽子采购订单 | blanketpurchaseorder |
现金退款 | cashrefund |
现金交易 | cashsale |
支票 | check |
佣金 | commission |
信用卡 | creditcardcharge |
贷项通知单 | creditmemo |
交叉计费日记账 | crosschargejournal |
客户存款 | customerdeposit |
付款 | customerpayment |
客户退款 | customerrefund |
存款 | deposit |
存款应用程序 | depositapplication |
报价单 | estimate |
费用报告 | expensereport |
货币重新估价 | fxreval |
库存调整 | inventoryadjustment |
库存成本重估 | inventorycostrevaluation |
库存盘点 | inventorycount |
库存转移 | inventorytransfer |
库存工作表 | inventoryworksheet |
发票 | invoice |
货品实施情况 | itemfulfillment |
货品收据 | itemreceipt |
日记账 | journalentry |
佣金 | partnercommission |
采购合同 | purchasecontract |
采购订单 | purchaseorder |
请购单 | purchaserequisition |
报价请求 | requestforquote |
退货授权 | returnauthorization |
收入安排 | revenuearrangement |
销售订单 | salesorder |
转账 | transfer |
库存转移订单 | transferorder |
账单 | vendorbill |
用贷记方法支付账单 | vendorcredit |
账单付款 | vendorpayment |
供应商预付款 | vendorprepayment |
供应商预付款核销 | vendorprepaymentapplication |
供应商报价请求 | vendorrequestforquote |
供应商退货审批 | vendorreturnauthorization |
工作单 | workorder |
工作单关闭 | workorderclose |
工作单完成 | workordercompletion |
工作单发放 | workorderissue |
因此本文开头的公式应该改为如下:
case when {recordtype}='salesorder' then {amount} else 0 end