• 最終編集日時: 05 August 2021

請求書をERPに統合

Coupa請求書とERPを統合するためのステップバイステップの手順。

はじめに

また、このドキュメントをMicrosoft Wordドキュメントとしてダウンロードすることもできます。ERP.docxへのCoupa請求書

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

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

CoupaのAPIは、デフォルトで大量のデータを返します(たとえば、関連付けられたオブジェクトの完全なオブジェクト)。APIリターンペイロードは非常に大きく、したがって遅くなる可能性があります。これは、リソースの不必要な消費は言うまでもなく、余分なデータを必要としない顧客にとっては問題になる可能性があります。

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

この記事で説明するユースケース

請求書には通常ERPの内部番号があります。この文書では、このERP文書番号がCoupa請求書ヘッダーのカスタムフィールドであると仮定しています。この例では、カスタムフィールドcf_erp_invoice_numberがERP請求書番号という名前で作成されました。この記事では、Coupa請求書をERPに統合するための3つの異なるオプション(作成と更新の両方)について説明します。

これらのオプションは、Coupaからインテグレーションを監視する方法を変更します。

  • オプション1:請求書ヘッダーで定義したカスタムフィールドに基づいた簡単な監視
  • オプション2:インテグレーション履歴レコードを使用した高度なモニタリング
  • オプション3 :Coupaインテグレーションの完全なモニタリングを活用

3つのオプションでは、Coupa請求書はエクスポートフラグに基づいてERPにプッシュされます。エラーが発生した場合、請求書の統合では、Coupa UIの請求書に手動で変更が必要になります。この変更により、エクスポートフラグがリセットされ、次の実行で請求書が考慮されます。

ヒント

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

APIのための専用連携と連絡先の作成

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

  1. 実装する各APIオーケストレーションの専用統合
    invoice-integration-01.png
  2. インテグレーションごとに1つまたは複数のインテグレーション連絡先があり、インテグレーションに失敗した場合はアラートが表示されます
    invoice-integration-contact.png
ヒント

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

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

説明

このシナリオでは、各請求書について、現在の統合ステータスを1つまたは複数の請求書ヘッダーのカスタムフィールドに追加します。カスタムフィールドcf - integration - statusIntegration Statusという名前で作成されまし。標準請求書データテーブルを使用して、次のURLでドキュメントの統合ステータスをフォローアップします。https ://<your instance hostname>/invoices.

invoices-01.png

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

orchestration-01.png

手順/APIコールの詳細

手順1

ERPで作成/更新するCoupa請求書のリストと詳細を取得します。

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

方法

取得

API

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

Query Params

fields =<your API filter name>
offset = 10
exported = false
status [in] = approved, voided

サンプルURL

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

質問本文のサンプル

該当なし

回答本文のサンプル

response-01.png

手順2

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

方法

プット

API

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

Query Params

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

レポートとERPドキュメント番号のカスタムフィールドを更新する

方法

プット

API

https :/// api<your instance hostname>/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 ":"Success:請求書が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:インテグレーション履歴を使用した高度なモニタリング

説明

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

  • ドキュメントの以前の統合履歴レコードを解決する
  • 連携履歴記録を作成する
  • エラーが発生した場合に統合連絡先にアラートを作成する

各文書にはインテグレーション履歴の詳細が含まれていますinvoice-int-hist-02.png

invoice-int-hist-01.png

標準インボイス連携履歴データテーブルを使用して、ドキュメントの連携ステータスをフォローアップします。この情報は、https :/// integration_history_records<your instance hostname>/invoicesで確認できます。

invoice-int-records-01.png

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

invoice-int-records-02.png

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

orchestration-02.png

手順/APIコールの詳細

手順1

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

方法

取得

API

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

質問パラメータ

filter =<your API filter name>
offset = 10
exported = false
status [in] = approved, voided

サンプルURL

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

クエリ本文のサンプル

該当なし

回答本文サンプル

response-02.png

手順2

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

方法

プット

API

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

Query Params

exported = true
fields = [" id ", "exported "]

サンプルURL

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

クエリ本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Invoice id>":,

		"exported ": true

}

ERPで請求書の作成/更新が行われます。

手順3 a

未解決の連携履歴記録を取得する

方法

取得

API

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

質問パラメータ

resolved = false
document -
type = InvoiceHeader document - id =<Invoice id>
fields = [" id "," document - id "," status "," resolved "]

サンプルURL

https :// api<your instance hostname>/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 ":"エラー",

				"RESOLVED ": FALSE

		}

]

手順3 b

以前の連携履歴記録を解決する

方法

プット

API

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

質問パラメータ

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

サンプルURL

https :// api<your instance hostname>/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 ":"エラー",

				"resolved ": true

		}

]

手順4 a

ERP文書番号のカスタムフィールドを更新する(成功)

方法

プット

API

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

Query Params

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

インテグレーション履歴の作成(成功)

方法

プット

API

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

Query Params

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

サンプルURL

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

質問本文のサンプル



{

		"document - type ":"InvoiceHeader ",

		"document - id <Invoice id>":,

		"document - status ":<Invoice status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"成功",

		"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

インテグレーション履歴の作成(エラー)とインテグレーション連絡先へのアラート

方法

プット

API

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

質問パラメータ

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

サンプルURL

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

質問本文のサンプル



{

		"document - type ":"InvoiceHeader ",

		"document - id <Invoice id>":,

		"document - status ":<Invoice status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"エラー",

		"integration ": {" code<Customer Integration id> ": ""},

		"RESPONSES ": [

				{

						"response - code ":"Failure - CC ",

						"response - message ":"ヘッダー:期間は現在予約のために閉じられています"

				},

				{

				"response - code ":"Failure - CC ",

				"response - message ":"1行目:コストセンターCA 234は請求書処理のため閉鎖されています"

				}

		]

}

回答本文のサンプル



{

		"id <New Integration History Record id>":,

		"document - id <Invoice id>":,

		"status ":"エラー"

}

オプション3 :Coupaインテグレーションの完全なモニタリングを活用

説明

このシナリオでは、インテグレーション実行を作成して

  • インテグレーションのステータス(保留中/開始済み/エラー/成功/失敗)
  • 処理された請求書の合計数
  • 成功とエラーの数
  • 統合エラーのリストとそのステータス(解決済みかどうか)

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

  • ドキュメントの以前の統合履歴レコードを解決する
  • 連携履歴記録を作成する
  • エラーが発生した場合は、統合エラーと統合連絡先へのアラートを作成します。

次のURLを使用して、インテグレーションのすべてのインテグレーション実行を監視できます。https<your instance hostname> :/// integrations<your integration id> // integration_runs

po-api-integration-01.png

標準請求書統合エラーデータテーブルを使用して、統合エラーの解決待ちのすべての請求書を一覧表示します。このエラーは、https ://<your instance hostname>/integration_errorsで確認できます。

inoice-int-records-03.png

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

orchestration-03.png

手順/APIコールの詳細

手順1

連携実行の作成

方法

投稿

API

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

Query Params

該当なし

質問本文のサンプル



{

		"integration ": {

				"code ": "{{ integration_code }}"

		}

}

回答本文サンプル



{

		"id <Integration Run ID>":,

		...

}

手順2

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

方法

取得

API

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

質問パラメータ

filter =<your API filter name>
offset = 10
exported = false
status [in] = approved, voided

サンプルURL

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

質問本文のサンプル

該当なし

回答本文のサンプル

response-03.png

手順3

連携実行を開始する

方法

プット

API

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

Query Params

該当なし

質問本文のサンプル



{

		"total_records ": <Total Number of Invoices from Step 2>

}

回答本文のサンプル



{

		"id <Integration Run ID>":,

		...

}

手順4

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

方法

プット

API

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

Query Params

exported = true
fields = [" id ", "exported "]

サンプルURL

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

質問本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Invoice id>":,

		"exported ": true

}

ERPで請求書の作成/更新が行われます。

手順5 a

未解決の連携履歴記録を取得する

方法

取得

API

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

質問パラメータ

resolved = false
document -
type = InvoiceHeader document - id =<Invoice id>
fields = [" id "," document - id "," status "," resolved "]

サンプルURL

https :// api<your instance hostname>/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 ":"エラー",

				"RESOLVED ": FALSE

		}

]

手順5 b

以前の連携履歴記録を解決する

方法

プット

API

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

質問パラメータ

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

サンプルURL

https :// api<your instance hostname>/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 ":"エラー",

				"resolved ": true

		}

]

手順6 a

未解決のインテグレーションエラーレコードを取得する

方法

取得

API

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

質問パラメータ

resolved = false document -
type = InvoiceHeader document
- id =<Invoice id>

サンプルURL

https :///api<your instance hostname>/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 ":"エラー",

				"RESOLVED ": FALSE

				...

		}

]

手順6 b

以前の連携履歴記録を解決する

方法

プット

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 ":"エラー",

				"resolved ": true

				...

		}

]

手順7 a

ERP文書番号のカスタムフィールドを更新する(成功)

方法

プット

API

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

Query Params

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

インテグレーション履歴の作成(成功)インテグレーション
実行を参照する必要があります

方法

プット

API

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

質問パラメータ

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

サンプルURL

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

質問本文のサンプル



{

		"document - type ":"InvoiceHeader ",

		"document - id <Invoice id>":,

		"document - status ":<Invoice status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"成功",

		"integration ": {" code<Customer Integration id> ": ""},

		"integration - run ":<Integration Run ID> {" id ":},

		"RESPONSES ": [

				{

						"response - code ":"Success -1234 ",

						"response - message ":「ERPへの統合はうまくいった」

				}

		]

}

回答本文サンプル



{

		"id <New Integration History Record id>":,

		"document - id <Invoice id>":,

		"status ":"サクセス"

}

手順7 c

インテグレーションエラーの作成とインテグレーション連絡先へのアラート
インテグレーション実行を参照する必要があります

方法

プット

API

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

質問パラメータ

該当なし

質問本文のサンプル



{

		"document - type ":"InvoiceHeader ",

		"document - id <Invoice id>":,

		"document - status ":<Invoice status>"ドキュメントステータス",

		"contact - alert - type ":"機能的",

		"status ":"エラー",

		"integration - run - id ":<Integration Run ID>"統合実行ID ",

		"RESPONSES ": [

				{

						"response - code ":"Failure - CC ",

						"response - message ":"ヘッダー:期間は現在予約のために終了しています"

				},

				{

						"response - code ":"Failure - CC ",

						"response - message ":"1行目:コストセンターCA 234は請求書処理のため閉鎖されています"

				}

		]

}

回答本文のサンプル



{

		"id <New Integration Error Record id>":,

		"document - id <Invoice id>":,

		"status ":"エラー"

		...

}

手順8

連携実行が正常に終了しました

方法

プット

API

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

質問パラメータ

該当なし

質問本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Integration Run ID>":,

		"STATUS ":"成功"

		...

}

インテグレーション実行中に一般的な障害が発生した場合。

ステップx

インテグレーション実行の失敗を報告する

方法

プット

API

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

質問パラメータ

該当なし

質問本文のサンプル

該当なし

回答本文のサンプル



{

		"id <Integration Run ID>":,

		"STATUS ":"失敗"

		...

}

関連アイテム


Coupa Core API

CoupaのRESTful APIは、お客様のデータをCoupaプラットフォームで読み取り、編集し、統合するための堅牢なアクセスを提供します。

APIの開始

Coupa APIの使用に関する一般情報、およびCSVの使用を検討するタイミング。

OAuth 2.0およびOIDCへの移行

Coupaは従来のAPIキーを廃止し、OAuth 2.0 / OIDCの使用を必要としています。R34以降、新しいAPIキーは発行されず、R35ではAPIキーはサポートされなくなります。

リソース

参照データ、トランザクションデータ、共有リソースなど、オブジェクトのタイプ別にAPIエンドポイントを整理しました。