この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Partner Order Submit API

Partner Order Submit API を使用すると、注文をすぐに送信したり、非同期で送信したりできます。

構文

1channel_orders.ServiceOrderProcessor.sendOrder()
2channel_orders.ServiceOrderProcessor.sendOrderAsync()

使用方法

複数の注文を作成または更新し、同じトランザクションで送信する場合、sendOrderAsync を使用します。詳細は、このセクションの例を参照してください。

ルールとガイドライン

これは Apex 実装であるため、Apex のすべての使用ルールおよび制限が適用されます。現在、コールごとに 1 つの注文のみをサポートしています。

Partner Submit API は、有効な [Service Order ID (サービス注文 ID)] を使用して注文を作成した後に、注文を送信するために使用されます。Channel Order App、データ読み込み、または自動処理を使用して、サービス注文およびサービス注文の詳細レコードを作成できます。

各注文には、次の項目を含める必要があります。

別途記載がない限り、項目名には CHANNEL_ORDERS__ というプレフィックスが付きます。

メモ

表 1. [Service Order (サービス注文)] の項目
項目表示ラベル 項目名 説明
Created with New COA (新しい COA で作成されている) Created_with_new_COA__c Channel Order App の最新バージョンを使用していることを示します。

適切に処理するために必ずこの項目を確認してください。

メモ

Contract (契約) Partner_Contract_Rules__c この項目は、契約条件レコードへのルックアップです。
Customer Company Name (顧客の会社名) Customer__c この項目は、住所や組織の詳細が含まれる顧客レコードへのルックアップです。

既存の顧客レコードを使用する必要があります。API を使用して顧客名および住所項目を入力することはできません。

メモ

Date Partner Received Customer Order (パートナーが顧客の注文を受信した日付) Date_Partner_Received_Customer_Order__c 注文を受信した日付。
Date Customer Accepted SFDC Service Agreement (顧客が SFDC サービス契約に同意した日付) Date_Customer_Accepted_SFDC_Svc_Agrmnt__c 顧客が salesforce.com サービス契約に同意した日付。OEM 契約の場合にのみ必要になります。
I Certify a Corresponding Order is Rec'd (対応する注文を受信したことを証明します) I_certify__c 注文を受信したことの確認。
Order Type (注文種別) Order_Type__c 使用可能な値:
  • Initial (新規)
  • Add-On (追加)
  • Reduction (削減)
  • Cancellation Order (解約注文)
  • Upgrade-Partner App (アップグレード-パートナーアプリケーション)
  • Upgrade-Org Edition (アップグレード-組織エディション)
Service Order ID (サービス注文 ID) Name サービス注文の ID。(標準項目。CHANNEL_ORDERS__ のプレフィックスは付かない)
Service Order Status (サービス注文の状況) Service_Order_Status__c サービス注文の現在の状況。
  • Draft (ドラフト)
  • Error (エラー)
  • Received (受信済み)
  • Processed (処理済み)

状況が [Draft (ドラフト)] の注文のみ送信できます。

メモ

Service Start Date (サービス開始日) Service_Start_Date__c サービスの開始日。
表 2. [Service Order Details (サービス注文の詳細)] の項目
項目表示ラベル 項目名 説明
Billing Frequency (請求サイクル) pc_Billing_Frequency__c 上書き権限が付与されていない限り、salesforce.com との契約と一致する必要があります。
Cancellation Terms (days) (解約期間 (日)) pc_Cancellation_Terms__c 上書き権限が付与されていない限り、salesforce.com との契約と一致する必要があります。
Contract Auto Renew (契約の自動更新) pc_Contract_Auto_Renew__c 上書き権限が付与されていない限り、salesforce.com との契約と一致する必要があります。
Contract Length (契約期間) pc_Contract_Length__c 上書き権限が付与されていない限り、salesforce.com との契約と一致する必要があります。
Customer Price (顧客価格) Customer_Price_Per_Month__c 毎月の単位あたりの価格。PNR 商品の場合にのみ必要になります。
Partner Contract Term (パートナー契約条件) pc_Partner_Contract_Term__c この項目は、契約条件レコードへのルックアップです。
Product (商品) Product_Name__c この項目は、商品カタログレコードへのルックアップです。
Renewal Terms (months) (更新期間 (月)) pc_Renewal_Terms__c 上書き権限が付与されていない限り、salesforce.com との契約と一致する必要があります。
Service Orders (サービス注文) Partner_Order__c この項目は、サービス注文へのルックアップです。
SFDC Invoice Description (SFDC 請求書の説明) Product_Line_Description__c 省略可能。この項目には、請求書の追加情報 (識別情報など) が含まれます。
Total Quantity (合計数量) Quantity__c サービス注文の商品カタログの合計数量。

メソッド

ServiceOrderProcessor オブジェクトでは、次のメソッドがサポートされています。

名前 引数 説明
sendOrder ID 1 つの ID を使用してすぐに注文を送信します。
sendOrder ID のセット ID のセットを使用してすぐに注文を送信します。
sendOrderAsync ID 1 つの ID を使用して非同期に注文を送信します (@future)。
sendOrderAsync ID のセット ID のセットを使用して非同期に注文を送信します (@future)。

例: Partner Order Submit API の一括処理

上記のとおり、一度に処理できるコールは 1 つのみです。次の例では、一括処理ジョブを使用してこの制限を回避しています。

次の例では、状態が [Draft (ドラフト)] の注文が 100 件ある場合、100 回の実行が含まれる 1 つの一括処理ジョブが最後の行で作成されます (1 回の実行で処理できるレコードは 1 つのみであるためです) 。
1//Batch Apex class
2global class COABatchClass implements Database.batchable<sObject>, Database.AllowsCallouts, Database.Stateful{
3   final String DRAFT_STATUS = 'Draft';
4   global final String query =
5      'select Id, CHANNEL_ORDERS__Service_Order_Status__c ' +
6      ' from CHANNEL_ORDERS__Service_Order__c where CHANNEL_ORDERS__Service_Order_Status__c =: DRAFT_STATUS';
7
8   global Database.QueryLocator start(Database.BatchableContext BC){
9      return Database.getQueryLocator(query);
10   }
11
12   global void execute(Database.BatchableContext info, List<CHANNEL_ORDERS__Service_Order__c> scope){
13       for(CHANNEL_ORDERS__Service_Order__c s : scope){
14         CHANNEL_ORDERS.ServiceOrderProcessor.sendOrder(s.Id);
15         }
16   }
17   global void finish(Database.BatchableContext BC){}
18}
19
20//Batch call
21Id batchInstanceId = Database.executeBatch(new COABatchClass(), 1);