エンタープライズリソース計画への請求書の連携

Coupa請求書をエンタープライズリソース計画と連携するための手順。

ヒント:

このドキュメントは、Microsoft Word形式で「Coupa Invoices to ERP.docx」としても提供されています。

API設定に関する一般的な考慮事項

制限されたペイロード:フィールドとAPIフィルター

CoupaのAPIは、デフォルトで多くのデータを返します(例えば、関連するオブジェクトの完全なオブジェクト)。 APIリターンペイロードのサイズは非常に大きくなることがあり、その場合所要時間も長くなります。 その結果必要のないデータまで処理することになり、時間がかかるだけでなく、リソースの無駄な消費にもつながります。

より簡単にするために、Coupaには、オブジェクトのスキーマ全体とすべての関連付けの代わりに、制限されたJSONまたはXML応答を返す「フィールド」パラメーターとAPIフィルターの概念があります。

  • API応答フィルター

  • API:「return object」の代替として新しいAPIクエリパラメータ「fields」を使用

この記事で説明されているユースケース

請求書には通常エンタープライズリソース計画の内部番号が含まれています。 本ドキュメントでは、このエンタープライズリソース計画ドキュメント番号がCoupa請求書ヘッダーのカスタムフィールドであると仮定しています。 この例では、カスタムフィールド cf_erp_invoice_numberERP Invoice Numberという名前で作成されました。 この記事では、Coupa請求書をエンタープライズリソース計画に連携するための3つの異なるオプションについて説明します(作成と更新の両方)。

これらのオプションは、Coupaからの連携の監視方法を変更するものです。

  • オプション1:請求書ヘッダーで定義したカスタムフィールドに基づく単純なモニタリング

  • オプション2:連携履歴レコードを使用した高度なモニタリング

  • オプション3: Coupa連携の完全なモニタリングの活用

3つのオプションにおいて、Coupa請求書はエクスポートフラグに基づいてエンタープライズリソース計画にプッシュされます。 エラーが発生した場合は、CoupaのUI上で請求書を手動で修正する必要があります。この操作によりエクスポートフラグがリセットされ、請求書は次回の実行時に再び処理されます。

ヒント:

Coupaサポートに連絡し、変更のたびに最後にエクスポートした請求書をリセットするオプションを有効にすることが推奨されています。 この設定はUIにのみ適用されます。 APIで行われた変更は、エクスポート済みステータスを変更するものではありません。

APIの専用連携と連絡先を作成する

オプション2と3では、次を作成する必要があります。

  1. 実装するAPIオーケストレーションごとの専用連携

  2. 連携に失敗した場合にアラートが送信される各連携の1つ以上の連携連絡先。

ヒント:

Coupaサポートに連絡し、ドキュメントタイプ別連携履歴へのリンクを有効にするオプションを有効にすることが推奨されています。 このオプションでは、設定ページにリンクが追加され、文書タイプごとに完全な連携履歴が表示されます。

オプション1:カスタムフィールドに基づく単純なモニタリング

Description

このシナリオでは、請求書ごとに、1つ以上の請求書ヘッダーカスタムフィールドに現在の連携ステータスが追加されます。 カスタムフィールド cf - integration - statusIntegration Statusという名前で作成されました。 標準請求書データテーブルを使用し、次のURLでドキュメントの連携ステータスをフォローアップしてください。

https ://<your instance hostname>/invoices

オーケストレーションダイアグラム

手順/API呼び出しの詳細

手順1

エンタープライズリソース計画で作成/更新するCoupa請求書のリストと詳細を取得します。

選択基準にはエクスポートフラグと請求書のステータスが含まれます。

メソッド

GET

API

https ://<your instance hostname>/api/invoices/

クエリパラメータ

フィールド=<your API filter name>

offset = 10

exported=false

status [in] =承認済み、無効

サンプルURL

https ://<your instance hostname>/api/invoices? filter =<your API filter name>& offset = 10 & exported = false&status [in] = approved, voided

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

手順2

個々の請求書をエクスポート済みとしてマーク

メソッド

PUT

API

https://<your instance hostname>/api/invoices/<Invoice id>

クエリパラメータ

exported = true

fields = [" id ", "exported "]

サンプルURL

https ://<your instance hostname>/api/invoices/<Invoice id>? exported = true&fields =[" id "," exported "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

{" id ": <Invoice id>," exported ": true}

ステップ3

レポートとエンタープライズリソース計画文書番号のカスタムフィールドを更新する

メソッド

PUT

API

https ://<your instance hostname>/api/invoices/<Invoice id>

クエリパラメータ

fields = [" id ", "exported ", {" custom_fields ": {}}]

サンプルURL

https ://<your instance hostname>/api/invoices/<Invoice id>? fields = [" id ", "exported ", {" custom_fields ": {}}]

クエリ本文のサンプル

{" id ": <Invoice_id>," exported ": true ," custom - fields ":{" cf - erp - invoice - number ":"<Invoice number in the ERP>"," cf - integration - status ":"成功:請求書がERPに複製されました"}}

または

{" custom - fields ":{" cf - integration - status ":"エラー:請求書をERPに複製できませんでした"}}

レスポンス本文のサンプル

{" id ": <Invoice_id>," exported ": true ," custom - fields ":{" cf - erp - invoice - number ":"<Invoice number in the ERP>"," cf - integration - status ":"成功:請求書がERPに複製されました"}}

または

{" id ": <Invoice id>," exported ": true ," custom - fields ":{" cf - erp - invoice - number ": null ," cf - integration - status ":"エラー[2]:請求書がERPに正しく複製されました"}}

オプション2:連携履歴を使用した高度なモニタリング

説明

このシナリオでは、請求書ごとに次のことを行います。

  • ドキュメントの以前の連携履歴レコードを解決する

  • 連携履歴レコードを作成する

  • エラーが発生した場合に連携連絡先にアラートを送信する

各文書には連携履歴の詳細が含まれています。

標準請求書連携履歴データテーブルを使用し、ドキュメントの連携ステータスをフォローアップしてください。 これは次の場所で見つけることができます。

https ://<your instance hostname>/integration_history_records/invoices

レスポンスコードのフィルターを使用すると、正常に複製された文書と失敗した文書を区別できます。

オーケストレーションダイアグラム

手順/API呼び出しの詳細

手順1

エンタープライズリソース計画で作成/更新するCoupa請求書のリストと詳細を取得します。 選択基準にはエクスポートフラグと請求書のステータスが含まれます。

メソッド

GET

API

https ://<your instance hostname>/api/invoices/

クエリパラメータ

filter =<your API filter name>

offset = 10

exported=false

status [in] =承認済み、無効

サンプルURL

https ://<your instance hostname>/api/invoices? filter =<your API filter name>& offset = 10 & exported = false&status [in] = approved, voided

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

手順2

個々の請求書をエクスポート済みとしてマーク

メソッド

PUT

API

https ://<your instance hostname>/api/invoices/<Invoice id>

クエリパラメータ

exported = true

fields = [" id ", "exported "]

サンプルURL

https ://<your instance hostname>/api/invoices/<Invoice id>? exported = true&fields =[" id "," exported "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

{" id ": <Invoice id>," exported ": true}

ここでは、エンタープライズリソース計画での請求書の作成/更新が行われます。

ステップ3 a

未解決の連携履歴レコードを取得する

メソッド

GET

API

https ://<your instance hostname>/api/integration_history_records

クエリパラメータ

resolved = false

document - type = InvoiceHeader

document - id =<Invoice id>

fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records? resolved = false&document - type = InvoiceHeader&document - id =<Invoice id>& fields = [" id ", "document - id "," status ", "resolved "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

[{" id ": <Old Integration History Record id>," document - id ": <Invoice id>," status ":" Error "," resolved ": false}]

ステップ3 b

以前の連携履歴レコードを解決する

メソッド

PUT

API

https ://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve

クエリパラメータ

fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve? fields = [" id ", "document - id "," status ", "resolved "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

[{" id ": <Old Integration History Record id>," document - id ": <Invoice id>," status ":" Error "," resolved ": true}]

ステップ4 a

エンタープライズリソース計画文書番号のカスタムフィールドを更新する(成功)

メソッド

PUT

API

https ://<your instance hostname>/api/invoices/<Invoice id>

クエリパラメータ

fields = [" id ", "exported ", {" custom_fields ": {}}]

サンプルURL

https ://<your instance hostname>/api/invoices/<Invoice id>& fields = [" id ", "exported ", {" custom_fields ": {}}]

クエリ本文のサンプル

{" custom - fields ":{" cf - erp - invoice - number ":"<Invoice number in the ERP>"}}

レスポンス本文のサンプル

{" id ": <Invoice id>," exported ": true ," custom - fields ":{" cf - erp - invoice - number ":"<Invoice number in the ERP>"}}

ステップ4 b

連携履歴を作成する(成功)

メソッド

PUT

API

https ://<your instance hostname>/api/integration_history_records

クエリパラメータ

fields = [" id ", "document - id "," status "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records? fields = [" id ", "document - id "," status "]

クエリ本文のサンプル

{" document - type ":" InvoiceHeader "," document - id ": <Invoice id>," document - status ":"<Invoice status>"," contact - alert - type ":" Functional "," status ":" Success "," integration ":{" code ":"<Customer Integration id>"}," responses ":[{" response - code ":" Success -1234 "," response - message ":" ERPでの統合はうまくいった"}]}

レスポンス本文のサンプル

{" id ": <New Integration History Record id>," document - id ": <Invoice id>," status ":"成功"}

ステップ4 c

連携履歴を作成して(エラー)、連携連絡先にアラートを送信する

メソッド

PUT

API

https ://<your instance hostname>/api/integration_history_records/create_alert

クエリパラメータ

fields = [" id ", "document - id "," status "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records/create_alert? fields = [" id ", "document - id "," status "]

クエリ本文のサンプル

{" document - type ":" InvoiceHeader "," document - id ": <Invoice id>," document - status ":"<Invoice status>"," contact - alert - type ":" Functional "," status ":" Error "," integration ":{" code ":"<Customer Integration id>"}," responses ":[{" response - code ":" Failure - CC "," response - message ":" Header: Period is currently closed for Booking "},{" response - code ":" Failure - CC "," response - message ":" Line 1: Cost center CA 234 is closed for invoicing "}]}

レスポンス本文のサンプル

{" id ": <New Integration History Record id>," document - id ": <Invoice id>," status ":" Error "}

オプション3: Coupa連携の完全なモニタリングの活用

Description

このシナリオでは、次の項目を追跡する連携実行を作成します。

  • 連携のステータス(保留中/開始済み/エラー/成功/失敗)

  • 処理された請求書の合計数

  • 成功とエラーの数

  • 連携エラーのリストとそのステータス(解決済みかどうか)

請求書ごとに次のことを行います。

  • ドキュメントの以前の連携履歴レコードを解決する

  • 連携履歴レコードを作成する

  • エラーが発生した場合、連携エラーと連携連絡先へのアラートを作成する

このURLを使用すると、連携のすべての連携実行をモニタリングできます。

https ://<your instance hostname>/integrations/<your integration id>/integration_runs

.

標準請求書連携エラーデータテーブルを使用し、連携エラーのあるすべての請求書をリストアップします。 これは次の場所で見つけることができます。

https ://<your instance hostname>/integration_errors

.

オーケストレーションダイアグラム

手順/API呼び出しの詳細

手順1

統合実行の作成

メソッド

POST

API

https ://<your instance hostname>/api/integration_runs

クエリパラメータ

該当なし

クエリ本文のサンプル

{" integration ":{" code ":"{{integration_code}}"}}

レスポンス本文のサンプル

{" id ": <Integration Run ID>,...}

手順2

エンタープライズリソース計画で作成/更新するCoupa請求書のリストと詳細を取得します。 選択基準にはエクスポートフラグと請求書のステータスが含まれます。

メソッド

GET

API

https ://<your instance hostname>/api/invoices/

クエリパラメータ

filter =<your API filter name>

offset = 10

exported=false

status [in] =承認済み、無効

サンプルURL

https ://<your instance hostname>/api/invoices? filter =<your API filter name>& offset = 10 & exported = false&status [in] = approved, voided

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

ステップ3

インテグレーションの実行を開始する

メソッド

PUT

API

https ://<your instance hostname>/api/integration_runs/<Integration Run ID>/run

クエリパラメータ

該当なし

クエリ本文のサンプル

{" TOTAL_RECORDS ": <Total Number of Invoices from Step 2>}

レスポンス本文のサンプル

{" id ": <Integration Run ID>,...}

ステップ4

個々の請求書をエクスポート済みとしてマーク

メソッド

PUT

API

https ://<your instance hostname>/api/invoices/<Invoice id>

クエリパラメータ

exported = true

fields = [" id ", "exported "]

サンプルURL

https ://<your instance hostname>/api/invoices/<Invoice id>? exported = true&fields =[" id "," exported "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

{" id ": <Invoice id>," exported ": true}

ここでは、エンタープライズリソース計画での請求書の作成/更新が行われます。

ステップ5 a

未解決の連携履歴レコードを取得する

メソッド

GET

API

https ://<your instance hostname>/api/integration_history_records

クエリパラメータ

resolved = false

document - type = InvoiceHeader

document - id =<Invoice id>

fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records? resolved = false&document - type = InvoiceHeader&document - id =<Invoice id>& fields = [" id ", "document - id "," status ", "resolved "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

[{" id ": <Old Integration History Record id>," document - id ": <Invoice id>," status ":" Error "," resolved ": false}]

ステップ5 b

以前の連携履歴レコードを解決する

メソッド

PUT

API

https ://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve

クエリパラメータ

fields = [" id ", "document - id "," status ", "resolved "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records/<Old Integration History Record id>/resolve? fields = [" id ", "document - id "," status ", "resolved "]

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

[{" id ": <Old Integration History Record id>," document - id ": <Invoice id>," status ":" Error "," resolved ": true}]

ステップ6 a

未解決の連携エラーレコードを取得する

メソッド

GET

API

https ://<your instance hostname>/api/integration_errors

クエリパラメータ

resolved = false

document - type = InvoiceHeader

document - id =<Invoice id>

サンプルURL

https ://<your instance hostname>/api/integration_errors? resolved = false&document - type = InvoiceHeader&document - id =<Invoice id>

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

[{" id ": <Old Integration Error Record id>," document - type ":" InvoiceHeader "," document - id ": <Invoice id>," status ":" Error "," resolved ": false...}]

ステップ6 b

以前の連携履歴レコードを解決する

メソッド

PUT

API

https ://<your instance hostname>/api/integration_errors/<Old Integration Error Record id>/resolve

クエリパラメータ

該当なし

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

[{" id ": <Old Integration Error Record id>," document - id ": <Invoice id>," status ":" Error "," resolved ": true...}]

ステップ7 a

エンタープライズリソース計画文書番号のカスタムフィールドを更新する(成功)

メソッド

PUT

API

https ://<your instance hostname>/api/invoices/<Invoice id>

クエリパラメータ

fields = [" id ", "exported ", {" custom_fields ": {}}]

サンプルURL

https ://<your instance hostname>/api/invoices/<Invoice id>? fields = [" id ", "exported ", {" custom_fields ": {}}]

クエリ本文のサンプル

{" custom - fields ":{" cf - erp - invoice - number ":"<Invoice number in the ERP>"}}

レスポンス本文のサンプル

{" id ": <Invoice id>," exported ": true ," custom - fields ":{" cf - erp - invoice - number ":"<Invoice number in the ERP>"}}

ステップ7 b

連携履歴の作成する(成功) 連携実行を参照する必要があります

メソッド

PUT

API

https ://<your instance hostname>/api/integration_history_records

クエリパラメータ

fields = [" id ", "document - id "," status "]

サンプルURL

https ://<your instance hostname>/api/integration_history_records? fields = [" id ", "document - id "," status "]

クエリ本文のサンプル

{" document - type ":" InvoiceHeader "," document - id ": <Invoice id>," document - status ":"<Invoice status>"," contact - alert - type ":" Functional "," status ":" Success "," integration ":{" code ":"<Customer Integration id>"}," integration - run ":{" id ":<Integration Run ID>}," responses ":[{" response - code ":" Success -1234 "," response - message ":" ERPでの統合はうまくいきました"}]}

レスポンス本文のサンプル

{" id ": <New Integration History Record id>," document - id ": <Invoice id>," status ":"成功"}

ステップ7 c

連携エラーを作成して連携の連絡先にアラートを送信。連携実行を参照する必要があります

メソッド

PUT

API

https ://<your instance hostname>/api/integration_errors/create_alert

クエリパラメータ

該当なし

クエリ本文のサンプル

{" document - type ":" InvoiceHeader "," document - id ": <Invoice id>," document - status ":"<Invoice status>"," contact - alert - type ":" Functional "," status ":" Error "," integration - run - id ":"<Integration Run ID>"," responses ":[{" response - code ":" Failure - CC "," response - message ":" Header: Period is currently closed for Booking "},{" response - code ":" Failure - CC "," response - message ":" Line 1: Cost center CA 234 is closed for invoicing "}]}

レスポンス本文のサンプル

{" id ": <New Integration Error Record id>," document - id ": <Invoice id>," status ":"エラー"...}

手順8

連携実行を正常に終了

メソッド

PUT

API

https ://<your instance hostname>/api/integration_runs/<Integration Run ID>/success

クエリパラメータ

該当なし

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

{" id ": <Integration Run ID>," status ":" successful "...}

連携実行中に一般的な障害が発生した場合。

ステップx

連携実行の失敗を報告

メソッド

PUT

API

https ://<your instance hostname>/api/integration_runs/<Integration Run ID>/fail

クエリパラメータ

該当なし

クエリ本文のサンプル

該当なし

レスポンス本文のサンプル

{" id ": <Integration Run ID>," status ":" failed "...}