為什麼 Validation 無效? Validation of Opportunity Product (OpportunityLineItem) doesn't work.
症狀
明明設了 validation 規定某些特定 product 不可以打折 ( UnitPrice 不能低於 ListPrice)
Opportunity Product Validation Rule:
AND(CONTAINS( Product2.Name , "Usage_"),
UnitPrice < ListPrice
)
但 user 仍然可以成功地在 create new opportunity product 的時候輸入較低的 UnitPrice。
不過如果嘗試再回頭編輯這筆 opportunity product,validation rule 又會作動如常。
除非 user 把 UnitPrice 調整到不低於 ListPrice 的數字,不然 validation rule 就會讓他無法存檔。
原因
概念上來說,這是因為在 OpportunityLineItem record 被創建的當下,OpportunityLineItem 上 Product2 這個欄位還沒有建立起這個關聯。
所以在 validation rule 裡面任何參照到 Product2 的條件都是一場空。
解方
不要參照 Product2,改成參照 PricebookEntry.Product2。
不要參照 ListPrice,改成參照 PricebookEntry.UnitPrice。
將 validation rule 改寫如下,即可:
AND(
CONTAINS( PricebookEntry.Product2.Name , "Usage_"),
UnitPrice < PricebookEntry.UnitPrice
)
參考資料
https://salesforce.stackexchange.com/questions/254096/validation-rule-that-limits-what-products-to-add-to-opportunity-by-opprecordid-n
留言
張貼留言