Intégration des BC et des modifications de BC dans votre ERP

Instructions détaillées pour intégrer vos bons de commande Coupa et les modifications de vos bons de commande à votre ERP.

Introduction

Vous pouvez également télécharger ce document en tant que document Microsoft Word :Coupa Purchase Orders sur ERP.docx

Considérations générales sur la configuration API

Charge utile limitée - champs et filtres API

L'API de Coupa renvoie beaucoup de données par défaut (par exemple : des objets complets pour les objets associés). Les charges utiles de retour API peuvent être très importantes et donc lentes. Cela peut poser problème aux clients qui n'ont pas besoin de données superflues, sans parler de la consommation inutile de ressources.

Pour faciliter les choses, Coupa utilise le concept de paramètres « fields » et de filtres API qui renvoient une réponse JSON ou XML limitée au lieu du schéma entier, et de toutes les associations, pour un objet.

Cas d'utilisation décrits dans cet article

Dans ce document, nous partons du principe que le numéro de bon de commande dans l'ERP est déterminé par le numéro de bon de commande Coupa. Cet article décrit les 3 différentes options d'intégration des bons de commande Coupa dans votre ERP (pour la création et les mises à jour). 

Ces options modifieront la façon dont vous pouvez surveiller vos intégrations à partir de Coupa :

Pour les 3 options, les bons de commande Coupa sont transmis à l'ERP en fonction de l'indicateur d'exportation.

En cas d'erreur, lors de l'intégration d'un bon de commande, une modification manuelle sera requise sur le bon de commande dans l'interface utilisateur Coupa : cette modification réinitialisera l'indicateur d'exportation et le bon de commande sera donc pris en compte lors de la prochaine exécution

Conseil

Coupa vous suggère de contacter l'assistance Coupa pour lui demander d'activer cette option : Réinitialisezle dernier BC exporté à chaque modification. Ce paramètre s'applique uniquement à l'interface utilisateur. Les modifications apportées à l'API ne modifieront pas le statut Exporté.

Créer une intégration et un contact dédiés pour l'API

Pour les options 2 et 3, vous devez créer :

  1. Une intégration dédiée pour chaque orchestration API que vous mettez en oeuvre
    integration-01.png
  2. Un ou plusieurs contacts d'intégration pour chaque intégration, qui seront alertés en cas d'échec d'intégration
    integration-02.png
Conseil

Coupa suggère de contacter l'assistance Coupa pour lui demander d'activer cette option : Activer le lien vers l'historiquede l'intégration par typede document . Ce paramètre ajoute un lien dans la page de configuration pour afficher l'historique d'intégration complet par type de document

Option 1 : Surveillance simple basée sur des champs personnalisés

Description

Dans ce scénario, pour chaque bon de commande, nous ajouterons l'état d'intégration actuel dans un ou plusieurs champs personnalisés d'en-tête de bon de commande. Nous avons ajouté un champ personnalisé cf-integration-status avec le nomIntegration Status. Utilisez la table de données des bons de commande standard pour suivre l'état d'intégration de vos documents à l'adresse suivante :https://<your instance hostname>/order_headers.

po-integration-01.png

Diagramme d'orchestration

po-orchistration.png

Détails des étapes/appels API

Étape 1

Obtenez la liste et les détails des bons de commande Coupa à créer/mettre à jour dans l'ERP.
Les critères de sélection incluent l' indicateur Export et le statut du BC.
Le paramètre de requête show_removed_lines peut être nécessaire pour gérer la mise à jour du bon de commande dans l'ERP

Méthode

OBTENIR

API

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

Paramètres de requête

filter=<your API filter name>
offset=10
exported=false
show_deleted_lines=true*
status[in]=issued,canceled,closed

URL exemple

https :///api/purchase_orders ?filter=&offset=10&exported=false&show_deleted_lines=true&status[in]=issued,canceled,closed

Exemple de corps de requête

S/O

Corps de réponse échantillon

step-1.png

Remarque

* = show_removed_lines=vrai pour les modifications de BC

Étape 2

Marquer chaque BC comme exporté

Méthode

METTRE

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête

S/O *

Corps de réponse échantillon


{
	"id": <Purchase Order id>,
	"exported": true
	}
Remarque

* Pour cet appel, vous n'avez pas besoin d'une charge utile si vous incluez « ?exported=true» dans l'URL. C'est là que se produit la création/mise à jour du bon de commande dans l'ERP.
 

Étape 3

Mettre à jour un champ personnalisé pour le rapport

Méthode

METTRE

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête


{ "custom-fields": {
		"<your custom-field name>": "Success: The PO was properly replicated in your ERP"
}}

ou


{ "custom-fields": {
		"<your custom-field name>": "Error: The PO was properly replicated in your ERP"
}}

Corps de réponse échantillon


{ "id": <Purchase Order id>,
		"exported": true,
		"custom-fields": {
				"<your custom-field name>": "Success: The PO was properly replicated in your ERP"
}}

ou


{ "id": <Purchase Order id>,
		"exported": true,
		"custom-fields": {
				"<your custom-field name>": "Error: The PO was properly replicated in your ERP"
}}

Option 2 : Surveillance avancée à l'aide de l'historique d'intégration

Description

Dans ce scénario, pour chaque bon de commande, nous :

  • Résoudre l'enregistrement d'historique d'intégration précédent pour le document
  • Créer un historique d'intégration
  • Créer une alerte pour le contact d'intégration en cas d'erreur

Chaque document inclut les détails de l'historique d'intégration :

 po-history-01.png

po-history-02.png

Utilisez la table de données de l'historique d'intégration des bons de commande standard pour suivre le statut d'intégration de vos documents. Vous pouvez le trouver sur :https://<your instance hostname>/integration_history_records/purchase_orders.

po-int-records-01.png

Vous pouvez utiliser un filtre sur le code de réponse pour différencier les documents répliqués avec succès des documents qui ont échoué.

po-int-records-02.png

Diagramme d'orchestration

po-int-orchistration.png

Détails des étapes/appels API

Étape 1

Obtenez la liste et les détails des bons de commande Coupa à créer/mettre à jour dans l'ERP.
Les critères de sélection incluent l' indicateur Export et le statut du BC.
Le paramètre de requête show_removed_lines peut être nécessaire pour gérer la mise à jour du bon de commande dans l'ERP

Méthode

OBTENIR

API

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

Paramètres de requête

filter=<your API filter name>
offset=10
exported=false
show_deleted_lines=true
status[in]=buyer_hold,issued,canceled,closed,soft_closed

URL exemple

https://<your instance hostname>/api/purchase_orders?filter=<your API filter name>&offset=10&exported=false&show_deleted_lines=true&status[in]=buyer_hold,issued,canceled,closed,soft_closed

Exemple de corps de requête

S/O

Corps de réponse échantillon

step-2.png

 

Étape 2

Marquer chaque BC comme exporté

Méthode

METTRE

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête

S/O

Corps de réponse échantillon


{
		"id": <Purchase Order id>,
		"exported": true
}

C'est ici que se produit la création/mise à jour du bon de commande dans l'ERP.

Étape 3a

Obtenir un historique d'intégration non résolu

Méthode

OBTENIR

API

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

Paramètres de requête

resolved=false
document-type=OrderHeader
document-id=
fields=["id","document-id","status","resolved"]

URL exemple

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

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

Étape 3b

Résoudre l'historique d'intégration précédent

Méthode

METTRE

API

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

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

Étape 4a

Créer un historique d'intégration (réussite)

Méthode

METTRE

API

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

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Success",
		"integration": {"code":"<Customer Integration id>"},
		"responses": [
				{
						"response-code": "Success-1234",
						"response-message": "The integration in the ERP went well"
				}
		]
}

Corps de réponse échantillon


{
		"id": <New Integration History Record id>,
		"document-id": <Purchase Order id>,
		"status": "Success"
}

Étape 4b

Créer un historique d'intégration (erreur) et alerter le contact d'intégration

Méthode

METTRE

API

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

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Error",
		"integration": {"code":"<Customer Integration id>"},
		"responses": [
				{
						"response-code": "Failure-CC",
						"response-message": "Line 1: Cost center CA234 is closed for ordering"
				},
				{
						"response-code": "Failure-date",
						"response-message": "Line 2: Delivery date cannot be in the past"
				}
		]
}

Corps de réponse échantillon


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

Option 3 : bénéficier d’une surveillance complète de l’intégration Coupa

Description

Dans ce scénario, nous créons une exécution d'intégration qui suit

  • Statut de l'intégration (en attente/démarrée/en erreur/réussie/échouée)
  • Nombre total de bons de commande traités
  • Le nombre de succès et d'erreurs
  • La liste des erreurs d'intégration et leur statut (résolues ou non)

Pour chaque bon de commande, nous :

  • Résoudre l'enregistrement d'historique d'intégration précédent pour le document
  • Créer un historique d'intégration
  • En cas d'erreur, créez une erreur d'intégration et une alerte pour le contact d'intégration

Vous pouvez surveiller toutes les exécutions d'intégration pour votre intégration à l'adresse :https://<your instance hostname>/integrations/<your integration id>/integration_runs.

po-api-integration-01.png

Utilisez la table d'erreurs d'intégration des bons de commande standard pour répertorier tous les bons de commande avec des erreurs d'intégration en attente de résolution. Il est situé à :.https://<your instance hostname>/integration_errors
po-integration-errors.png

Utilisez la table de données de l'historique d'intégration des bons de commande standard pour répertorier tous les bons de commande intégrés. Il est situé à :https://<your instance hostname>/integration_history_records/purchase_orders.

po-integration-records.png
Diagramme d'orchestration

orchestration-3.png

Détails des étapes/appels API

Étape 1

Créer une exécution d'intégration

Méthode

POSTE

API

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

Paramètres de requête

S/O

Exemple de corps de requête


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

Corps de réponse échantillon


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

Étape 2

Obtenez la liste et les détails des bons de commande Coupa à créer/mettre à jour dans l'ERP.
Les critères de sélection incluent l' indicateur Export et le statut du BC.
Le paramètre de requête show_removed_lines peut être nécessaire pour gérer la mise à jour du bon de commande dans l'ERP

Méthode

OBTENIR

API

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

Paramètres de requête

filter=
offset=10
exported=false
show_deleted_lines=true
statut[en]=acheteur_en_attente, émis, annulé, fermé, provisoirement_fermé

URL exemple

https://<your instance hostname>/api/purchase_orders?filter=<your API filter name>&offset=10&exported=false&show_deleted_lines=true&status[in]=buyer_hold,issued,canceled,closed,soft_closed

Exemple de corps de requête

S/O

Corps de réponse échantillon

step-3.png

Étape 3

Démarrer l'exécution d'intégration

Méthode

METTRE

API

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

Paramètres de requête

S/O

Exemple de corps de requête


{
		"total_records": <Total Number of POs from Step 2>
}

Corps de réponse échantillon


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

Étape 4

Marquer chaque BC comme exporté

Méthode

METTRE

API

https://<your instance hostname>/api/purchase_orders/<Purchase Order id>

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête

S/O

Corps de réponse échantillon


{
		"id": <Purchase Order id>,
		"exported": true
}

C'est ici que se produit la création/mise à jour du bon de commande dans l'ERP.

Étape 5a

Obtenir un historique d'intégration non résolu

Méthode

OBTENIR

API

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

Paramètres de requête

resolved=false
document-type=OrderHeader
document-id=<Purchase Order id>
fields=["id","document-id","status","resolved"]

URL exemple

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

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

Étape 5b

Résoudre l'historique d'intégration précédent

Méthode

METTRE

API

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

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

Étape 6a

Obtenir enregistrement des erreurs d'intégration non résolues

Méthode

OBTENIR

API

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

Paramètres de requête

resolved=false
document-type=OrderHeader
document-id=<Purchase Order id>

URL exemple

https://<your instance hostname>/api/integration_errors?resolved=false&document-type=OrderHeader&document-id=<Purchase Order id>

Exemple de corps de requête

S/O

Corps de réponse échantillon


[
		{
				"id": <Old Integration Error Record id>,
				"document-type": ”OrderHeader”,
				"document-id": <Purchase Order id>,
				"status": "Error",
		"resolved": false
		...
		}
]

Étape 6b

Résoudre l'historique d'intégration précédent

Méthode

METTRE

API

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

Paramètres de requête

S/O

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

Étape 7a

Créer un historique d'intégration (réussite)
Il doit faire référence à la série d'intégration

Méthode

METTRE

API

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

Paramètres de requête

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

URL exemple

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

Exemple de corps de requête


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order 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": "The integration in the ERP went well"
				}
		]}

Corps de réponse échantillon


{
		"id": <New Integration History Record id>,
		"document-id": <Purchase Order id>,
		"status": "Success"
}

Étape 7b

Créer une erreur d'intégration et alerter le contact d'intégration
Il doit faire référence à la série d'intégration

Méthode

METTRE

API

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

Paramètres de requête

S/O

Exemple de corps de requête


{
		"document-type": "OrderHeader",
		"document-id": <Purchase Order id>,
		"document-status":"<Purchase Order status>",
		"contact-alert-type": "Functional",
		"status": "Error",
		"integration-run-id": "<Integration Run ID>",
		"responses": [
				{
						"response-code": "Failure-CC",
						"response-message": "Line 1: Cost center CA234 is closed for ordering"
				},
				{
						"response-code": "Failure-date",
						"response-message": "Line 2: Delivery date cannot be in the past"
				}
		]
}

Corps de réponse échantillon


{
		"id": <New Integration Error Record id>,
		"document-id": <Purchase Order id>,
		"status": "Error"
		 ...
}

Étape 8

Terminer l'exécution d'intégration

Méthode

METTRE

API

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

Paramètres de requête

S/O

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

En cas de défaillance générale pendant l'exécution de l'intégration

Étape x

Déclencher un échec pour l'exécution d'intégration

Méthode

METTRE

API

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

Paramètres de requête

S/O

Exemple de corps de requête

S/O

Corps de réponse échantillon


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

 

Une partie ou la totalité de cette page peut avoir été traduite par machine. Toutes nos excuses pour les inexactitudes.

Articles associés


API Coupa Core

Notre API RESTful fournit un accès fiable pour lire, modifier ou intégrer vos données à la plateforme Coupa.

Démarrez avec l'API

Informations générales sur l'utilisation de l'API Coupa et quand vous devez envisager d'utiliser CSV.

Transition vers OAuth 2.0 et OIDC

Coupa désapprouve les API Keys héritées et nécessite l'utilisation d'OAuth 2.0 / OIDC. À partir de R34, aucune nouvelle clé API ne sera émise et les clés API ne seront plus prises en charge avec R35.

Ressources

Nous avons organisé nos points de terminaison API par type d'objet : données de référence, données transactionnelles et ressources partagées.