契約と注文への取引記録の対応付け
学習の目的
この単元を完了すると、次のことができるようになります。
- 取引記録の項目と契約と注文の項目を対応付ける。
- 取引記録と参照オブジェクト項目の対応付けの例を確認する。
- 対象プログラムリベート種別を取得 API の動作を説明する。
項目の対応付けとは
前の単元で学んだように、リベート種別の対象資格基準によって、契約で選択できるリベートのリストが生成されます。追加した商品に基づき注文に適用可能と表示されるリベート種別も、対象資格基準によって判断されます。
リベート種別がプログラムリベート種別パネルの [対象] または [適用済み] タブに表示されると、アプリケーションによって条件が評価され、契約の取引先テリトリーがリベート種別に設定された対象資格の条件と一致するリベート種別が検索されます。対象資格の条件は、取引記録の項目に基づいてレコードを絞り込むように設定されています。
アプリケーションでこの条件が評価されるには、契約の取引先テリトリー項目と取引記録の同様の項目の対応付け、または注文品目の商品項目と取引記録の商品名項目の対応付けが指定されている必要があります。
高度に設定可能な統合により、任意のオブジェクトとその項目を取引記録とその項目に対応付けることができます。これによって、任意のオブジェクトのレコードで対象リベート種別と適用済みリベート種別の評価を実行することができます。
項目の対応付けの作成方法
項目の対応付けを作成するために、Cindy は ObjectHierarchyRelationship メタデータ API の設定データをダウンロードし、必要な変更を行ってから再びアップロードする必要がありました。組織から設定データをダウンロードするには、任意の API ツールで retrieve()
コールを実行します。
Cindy は API コールを使用して設定データを取得しました。次に、対応付けを定義するために .txt コンポーネントファイルを作成しました。ObjectHierarchyRelationship コンポーネントは、ObjectHierarchyRelationship.settings
というサフィックスを使用し、ObjectHierarchyRelationship フォルダーに保存されます。対応付けごとに 1 つのファイルを作成しました。
- 契約と取引記録 (parentObjectMapping)
- 注文と取引記録 (parentObjectMapping)
- 注文品目と取引記録 (childObjectMapping)
対応付けが作成されていない場合、次のシナリオが発生します。
- リベート種別で設定された条件に関係なく、契約の対象リベート種別のリストにすべてのリベート種別が表示される。
- 契約の取引先がすでにリベートプログラムに登録されていても、[適用済み] タブに適用済みリベート種別が表示されない。
次に、Cindy は次の手順を使用して、契約と取引記録、注文と取引記録の間で項目を対応付けます。
- 対応付けの XML を作成して入力オブジェクト、出力オブジェクト、項目の対応付けを定義します。
- API コールを使用して組織に対応付けの XML をリリースします。
対応付けの XML
理解しやすいように対応付けの例を見てみましょう。対応付けのコンポーネントファイルには、次の重要な属性が含まれています。
対応付け属性 |
値 |
---|---|
入力オブジェクト |
対応付けるソース項目を含む入力オブジェクト種別の名前。 例: 契約、注文、契約品目、注文品目 |
出力オブジェクト |
データ変換を受信する出力オブジェクト種別の名前。 例: 取引記録 |
入力項目 |
入力オブジェクトの項目。 例: 取引先、商品 |
出力項目 |
出力オブジェクトの項目。 例: メンバー、商品 |
利用状況の種別 |
対応付けが使用される利用状況の名前。 EligibleProgramRebateType |
次は、契約と取引記録の項目の対応付けの例です。契約の取引先 ID と取引先テリトリーが、取引記録のメンバー ID と取引先テリトリーにそれぞれ対応付けられています。
<?xml version="1.0" encoding="UTF-8"?> <ObjectHierarchyRelationship xmlns="http://soap.sforce.com/2006/04/metadata"> <parentObjectMapping> <inputObject>Contract</inputObject> <outputObject>TransactionJournal</outputObject> <mappingFields> <inputField>AccountId</inputField> <outputField>MemberId</outputField> </mappingFields><mappingFields> <inputField>Account Territory</inputField> <outputField>Account Territory</outputField> </mappingFields> </parentObjectMapping> <usageType>EligibleProgramRebateType</usageType> </ObjectHierarchyRelationship>
次は、注文と取引記録の項目の対応付けの例です。対応付けられている項目は、注文の取引先 ID と取引記録のメンバー IDです。さらに、取引記録の Product2 が注文品目の商品に対応付けられています。
<?xml version="1.0" encoding="UTF-8"?> <ObjectHierarchyRelationship xmlns="http://soap.sforce.com/2006/04/metadata"> <parentObjectMapping> <inputObject>Order</inputObject> <outputObject>TransactionJournal</outputObject> <mappingFields> <inputField>AccountId</inputField> <outputField>MemberId</outputField> </mappingFields> </parentObjectMapping> <childObjectMapping> <inputObject>OrderItem</inputObject> <outputObject>TransactionJournal</outputObject> <mappingFields> <inputField>Product2Id</inputField> <outputField>ProductId</outputField> </mappingFields> </childObjectMapping> <usageType>EligibleProgramRebateType</usageType> </ObjectHierarchyRelationship>
リリース
リリースには、ObjectHierarchyRelationship メタデータ API が使用されます。Cindy はパッケージを用意しました。
各パッケージには、対応付けの xml ファイルが 1 つと、package.xml ファイルが含まれます。対応付けの .xml ファイルは、.settings ファイルに追加されます。package.xml ファイルは、基本的に組織の API バージョンとメタデータ型を定義するプロジェクトマニフェストです。詳細は、「zip ファイルを使用したメタデータのリリースと取得」を参照してください。
API ツールの 2 つのリリースパッケージの構造を次に示します。
契約の対応付けパッケージ:
ObjectHierarchyRelationship ObjectHierarchyRelationshipContract.settings package.xml
注文の対応付けパッケージ:
ObjectHierarchyRelationship ObjectHierarchyRelationshipOrder.settings package.xml
フォルダーを圧縮すると、リリースの準備が整います。
Cindy は対応付けのコンポーネントファイルと package.xml ファイルが入っている zip フォルダーをアップロードしました。変更された設定データが Salesforce にアップロードされるように、この zip ファイルを Rayler Parts 組織にリリースする必要がありました。その手順は次のとおりです。
- ルートに package.xml ファイルを入れたフォルダーと、その下にコンポーネント名を付けたサブフォルダーを作成します。
- フォルダーを圧縮します。
- Postman または任意の API ツールにアクセスし、ユーザー名とパスワードを入力してログインします。
-
[Migration (移行)] タブをクリックします。[Deploy (リリース)] セクションを選択します。
-
[Choose file (ファイルを選択)] オプションをクリックします。
- リリースのすべてのオプションを確認します。
-
[Deploy (リリース)] をクリックします。
- プロセスが完了するのを待ちます。正常に完了しなかった場合は、ファイルにエラーがないか確認します。
メタデータ API を使用した Postman での取得とリリースの方法については、Postman 学習センターを参照してください。
Cindy は最初の設定ステップを完了し、Vance が対象リベート種別を契約に追加できるようにする画面フローの設計という次の要件に取り掛かりました。
API と連携するカード
画面フローを作成する前に、Cindy は内部でどのような処理が行われるのかを理解したいと考えました。
プログラムリベート種別パネルカードでは、すべての対象リベート種別のリストが取得され、その情報がカードの [対象] タブに表示されます。この動作は、対象プログラムリベート種別を取得 API によってトリガーされます。詳細は、こちらのトピックを参照してください。
Cindy はこの情報に対して何もする必要はありませんが、プログラムリベート種別パネルカードと連携して情報を表示する API があることを知っておくと役に立ちます。Cindy は対象リベートを表示するために、API を使用して直接 UI を作成または変更することができます。
対象リベート種別を定義する評価条件は次のとおりです。
- 参照オブジェクト (契約) は取引記録に対応付けられている必要がある。
- リベート種別は [統合可] とマークされている必要がある (リベート種別レコードにあるチェックボックス)。
- リベート種別は [有効] になっている必要がある (リベート種別レコードにあるチェックボックス)。
- リベート種別の対象資格基準は参照レコードのデータと一致する必要がある。リベート種別に対象資格基準が定義されていない場合、参照オブジェクトのすべてのレコードが対象として表示される。
また API は、関連付けられたリベートプログラムのメンバー ID が参照レコードの取引先 ID と一致すると、参照レコードにすでに適用済みのリベート種別のリストも取得します。このリベート種別は、プログラムリベート種別パネルカードの [適用済み] タブに表示されます。
リソース
- Salesforce ヘルプ: 対象および適用済みのリベート種別の項目の対応付け
- Salesforce ヘルプ: 対象リベート種別と適用済みリベート種別の対応付けの作成
- Salesforce 開発者ガイド: ObjectHierarchyRelationship