為什麼 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