"Salesforce MVP Spring'13" に選ばれたBrent Downeyという方が書いた"Preventing Duplicate Opportunity Products"という記事があったので読んでみました。
商談に紐付く商談商品を登録する際に既に登録済みの商談商品はエラーとする方法についてまとめてありました。
Preventing Duplicate Opportunity Products
http://adminhero.com/2013/05/02/preventing-duplicate-opportunity-products/
すごく良さそうなのだったのでDeveloper環境で試してみました。
エラー判定の作成手順は次のとおりです。
商談商品にカスタム項目を作成
項目の表示ラベル Unique Product ID
項目名 Unique_Product_ID
データ型 テキスト
ユニーク 値の重複を許可しない
文字数 255
ワークフロールールの作成
ルール名 Unique Product Update
オブジェクト 商談商品
評価条件 レコードが次の場合にルールを評価 作成されたとき、および編集されるたび
ルール条件 true
ワークフローアクションの作成(項目自動更新)
名前 Unique Product Field Update
一意の名前 Unique_Product_Field_Update
オブジェクト 商談商品
更新する項目 商談商品: Unique Product ID
項目データの種別 テキスト
数式の値 OpportunityId & '_' & PricebookEntryId & '_' & TEXT(UnitPrice)
動作確認
ワークフロールールが有効になっていることを確認して商談に紐付く商談商品を作成します。
商談に対して商談商品を追加します。
この商談に対して再度同じ商品を登録しようとするとユニーク判定でエラーが発生します。
このような感じに重複登録を防ぐことができるみたいです。
ユニーク項目には商談IDも使用されているため別の商談に対しては重複エラーは発生しません。
ユニーク項目に登録されている内容は次のようになります。
参考サイト
Preventing Duplicate Opportunity Products
http://adminhero.com/2013/05/02/preventing-duplicate-opportunity-products/