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

Apex を使用したサービスレポートの作成

作業指示、作業指示品目、サービス予定に対する [サービスレポートを作成] アクションは、Apex コードを使用してコールすることもできます。以下に示すコード例は、createServiceReport アクションの REST API リソースに対して Apex コールアウトを実行し、2 つの署名を使用してサービスレポートを作成します。
各サービスレポートには、親レコードのデータと、顧客、技術者など、サインする必要がある人の署名が含まれます。API コールでは、レポートで使用される 1 つ以上の署名を定義できます。署名の数と種別は、サービスレポートテンプレートの署名設定と一致する必要があります。
  • このコード例は、API バージョン 41.0 以降に適用されます。API バージョン 40.0 で生成されたサービスレポートには、署名を 1 つだけ含めることができます。
  • このコード例は、REST コールアウトを実行するためにリモートサイトの設定が有効になっていることを前提としています。詳細は、「リモートサイトの設定の追加」を参照してください。
  • コード例の疑似レコード ID は 0WOxx000000001E です。疑似サービスレポートテンプレート ID は 0SLR00000004DBFOA2 です。

メモ

API Endpoint (v41.0): /services/data/v41.0/actions/standard/createServiceReport

1String salesforceHost = System.Url.getSalesforceBaseURL().toExternalForm();
2String url = salesforceHost + '/services/data/v41.0/actions/standard/createServiceReport';
3// Create HTTP request
4HttpRequest request = new HttpRequest();
5request.setEndpoint(url);
6request.setMethod('POST');
7request.setHeader('Content-Type', 'application/json');
8request.setHeader('Authorization', 'OAuth ' + UserInfo.getSessionId());
9// Set the body as a JSON object
10request.setBody('{"inputs" : [ {"entityId" : "0WOxx000000001E","signatures" : [{"data":"Base64 code for the captured signature image","contentType":"image/png","name":"Customer Signature","signatureType":"Default","place":"San Francisco","signedBy":"John Doe","signedDate":"2019-06-05 12:00:00"}],"templateId" : "0SLR00000004DBFOA2"} ]}');
11Http http = new Http();
12HttpResponse response = http.send(request);
13// Parse the JSON response
14if (response.getStatusCode() != 201) {
15    System.debug('The status code returned was not expected: ' +
16                 response.getStatusCode() + ' ' + response.getStatus());
17} else {
18    System.debug(response.getBody());
19}

次のコード例では、2 つの署名を使用するペイロードを作成します。

1{
2   "inputs":[
3      {
4         "entityId":"0WOxx000000001E",
5         "signatures":[
6            {
7               "data":"Base64 code for the captured signature image",
8               "contentType":"image/png",
9               "name":"Customer Signature",
10               "signatureType":"Customer",
11               "place":"San Francisco",
12               "signedBy":"John Doe",
13               "signedDate":"Thu Jul 13 22:34:43 GMT 2017"
14            },
15            {
16               "data":"Base64 code for the captured signature image",
17               "contentType":"image/png",
18               "name":"Technician Signature",
19               "signatureType":"Technician"
20            }
21         ],
22         "templateId":"0SLR00000004DBFOA2"
23      }
24   ]
25}

項目の説明

  • entityId: サービスレポートを作成する作業指示、作業指示品目、サービスレポートの ID。
  • signatures: デジタル署名の JSON 定義のリスト。
    • data: (必須) 画像の base64 コード。
    • contentType: (必須) 署名のファイルの種類。
    • signatureType: (必須) 署名者の役割 (「顧客」など)。[署名種別] 選択リストの値は、Salesforce システム管理者によって事前に定義されます。各署名ブロックには異なる署名種別を使用する必要があり、コールで定義する署名種別は、サービスレポートテンプレートの署名種別と一致する必要があります。
    • name: 署名ブロックのタイトル。この値は、生成されたサービスレポートに表示されます。
    • place: 署名の��所。この値は、生成されたサービスレポートに表示されます。
    • signedBy: 署名者の名前。この値は、生成されたサービスレポートに表示されます。
    • signedDate: 署名の日付。この値は、生成されたサービスレポートに表示されます。
  • templateId: レポートに使用されたサービスレポートテンプレートの ID。ID を検索するには、ServiceReportLayout オブジェクトに対して SOQL クエリを実行します。

制限事項

ゲストユーザーで Future アノテーションを使用している場合、ContentDocument オブジェクトを作成できないため、サービスドキュメントも作成できません。