ユースケース:構成フィールドデータセットオブジェクトの表示名と見積明細の入力
SFDC でカスタムオブジェクトと Apex トリガーを設定して、 CPQ フィールドの表示名を入力する方法について説明します。
CPQ管理パッケージの一部として、SFDCの構成フィールドデータセットオブジェクトの機能は、構成の構成ID、詳細計画で使用されるすべてのフィールド変数名、そのフィールドの値、およびCPQコンフィギュレーターから保存されるたびにその値のラベルを返すことです。
ただし、組織が下流プロセスに必要な、管理パッケージによって作成されたこれらのフィールド以外の CPQ の構成には、いくつかの追加の必要性がある場合があります。 たとえば、 CPQ フィールドの表示名を入力したり、関連する構成フィールドデータオブジェクトの見積明細に簡単にジャンプしてBOMに簡単に接続したりできます。
SFDC でカスタムオブジェクトと Apex トリガーを少しセットアップすれば、すべての構成が保存された後にこれらのフィールドを自動的に入力できます。
必須条件
まだ有効にしていない場合は、[アドミン設定] で [Logik Salesforce オブジェクトに構成データをプッシュ] を有効にします。これにより、SFDC での構成フィールドデータセットオブジェクトの作成が開始されます。
表示名を入力
- [SFDC セットアップ] で、[オブジェクトマネージャー] に移動します。
- 次の属性を持つ「LGK Label」という名前の新しいカスタムオブジェクトを作成します。
- レコード名:ロジックラベル
- データタイプ:自動番号
- 表示形式:LGKLB-{0000}
- 検索を許可:オン
- このカスタムオブジェクトを保存した後に新しいカスタムタブウィザードを起動: オン
- [新しいカスタムオブジェクトタブ] ページで、[タブスタイル] フィールドをクリックし、任意のスタイルを選択します。
- [ 次へ] をクリックし、もう一度 [ 次へ ] をクリックして、[ 保存] をクリックします。
- [LGK ラベル] の [フィールドと関係] をクリックし、[ 新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
- データタイプ:TextArea
- フィールドラベル:label
- フィールド名:ラベル
- [新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
- データタイプ:TextArea
- フィールドラベル:variablename
- フィールド名:variablename
この新しい LGK ラベルオブジェクトは、SFDC でフィールド変数名とフィールドラベル名をホストする場所になります。ラベルは自動的にはインポートされません。また、CPQ アドミンのフィールドの変更や追加を頻繁に行いながら、手動で更新/インポートする必要があります。一括インポートの方法については、このガイドの後半で説明します。
- オブジェクトマネージャーで、「構成フィールドデータ」を検索します。
- [ フィールド & リレーションシップ] をクリックし、[ 新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
- データタイプ:TextArea
- フィールドラベル:表示名
- フィールド名:Display_Name
- [ トリガー] をクリックし、[ 新規] をクリックします。
- Apex コードブロックに次のコードを貼り付けます。
trigger UpdateConfigurationLabels on LGK__ConfigurationFieldData__c (before insert) { // Step 1: Collect FieldKeys from records to be inserted Set<String> fieldKeys = new Set<String>(); for(LGK__ConfigurationFieldData__c confData : Trigger.new) { fieldKeys.add(confData.LGK__FieldKey__c); } // Step 2: Query LGK_Label__c based on collected FieldKeys Map<String, LGK_Label__c> labelMap = new Map<String, LGK_Label__c>(); for(LGK_Label__c label : [SELECT label__c, variablename__c FROM LGK_Label__c WHERE variablename__c IN :fieldKeys]) { labelMap.put(label.variablename__c, label); } // Step 3: Loop through records to be inserted and update Display_Name__c for(LGK__ConfigurationFieldData__c confData : Trigger.new) { LGK_Label__c matchedLabel = labelMap.get(confData.LGK__FieldKey__c); if(matchedLabel != null) { confData.Display_Name__c = matchedLabel.label__c; } else if(confData.LGK__ValueLabel__c != null) { confData.Display_Name__c = confData.LGK__ValueLabel__c; } }
フレームワークが完成しました。新しい [表示名] フィールドを [構成フィールドデータセット] レイアウトに追加します。あとは、フィールドラベル名を LGK ラベルオブジェクトにインポートするだけです。CPQフィールドの使用方法に応じて、これを実現する方法は 3 つあります。
|
CPQラベルの手動作成
|
長所:
短所:多数のフィールドで面倒なプロセスになる可能性がある |
|
すべての CPQ フィールドのエクスポートからの一括インポート
|
長所:
短所:
|
|
詳細計画レイアウトのエクスポートからの一括インポート
|
長所:
短所:
|
インポートしたものとは異なる表示名を表示したいフィールドがある場合は、Labelオブジェクトを任意のラベルに簡単に編集でき、更新後にその方法で構成フィールドデータセットへの入力が開始されます。
見積品目を入力します
- [SFDC セットアップ] で、[オブジェクトマネージャー] に移動します。
- 「構成フィールドデータ」を検索します。
- [ フィールド & リレーションシップ] をクリックし、[ 新規] をクリックします。次の属性を持つ新しいフィールドを作成します。
- データタイプ:リレーションシップをルックアップ
- 関連先:見積依頼明細行
- フィールドラベル:見積明細行
- フィールド名:Quote_Line
- オブジェクトマネージャーで、「見積明細行」を検索します。
- [ トリガー] をクリックし、[ 新規] をクリックします。
- Apex コードブロックに次のコードを貼り付けます。
trigger PopulateConfigFieldData on SBQQ__QuoteLine__c (after insert, after update) { // Step 1: Collect the Configuration Ids from the new Quote Lines Set<String> configIds = new Set<String>(); Map<String, Id> quoteLineMap = new Map<String, Id>(); // Mapping Configuration UUID to Quote Line Id for (SBQQ__QuoteLine__c ql : Trigger.new) { if (String.isNotBlank(ql.LGK__ConfigurationId__c)) { configIds.add(ql.LGK__ConfigurationId__c); quoteLineMap.put(ql.LGK__ConfigurationId__c, ql.Id); // Storing Quote Line Id } } if (configIds.isEmpty()) { return; } // Step 2: Query the Configuration Field Data records List<LGK__ConfigurationFieldData__c> confFieldsToUpdate = [SELECT Id,LGK__ConfigurationId__c FROM LGK__ConfigurationFieldData__c WHERE LGK__ConfigurationId__c IN:configIds]; // Step 3: Update the Field Data records for (LGK__ConfigurationFieldData__c cf : confFieldsToUpdate) { Id quoteLineId = quoteLineMap.get(cf.LGK__ConfigurationId__c); if (quoteLineId != null) { cf.Quote_Line__c = quoteLineId; // Assigning the Quote Line Id } } update confFieldsToUpdate;
これで、見積もりがSFDCに保存されるたびに、親構成可能製品の見積明細が構成フィールドデータセットに入力されます。このカスタムフィールドを「構成フィールドデータセット」レイアウトに追加してタブに表示することを忘れないでください。