• Dernière modification le: 29 October 2020

Exemples d'appels API pour les bons de commande

Options de requête GET Purchase Order

Voici d'autres exemples d'utilisation de l'API de bon de commande pour interroger et obtenir le jeu de résultats souhaité.

Cette requête renverra tous les PDV avec BC qui n'ont pas été exportés avant :

https ://<instance url>/api/purchase_orders ?exported=false
 
Cette requête renverra toutes les commandes créées après le 1er janvier 2011, 12:00:00 

https ://<instance url>/api/purchase_orders ? created-at [gt]= 2011-01-01T 12:00:00 Cette
 
requête renverra tous les bons de commande non exportés qui ont été créés après le 1er janvier 2011 

https ://<instance url>/api/purchase_orders ?exported=false&created_at[gt]=2011-01-1

Cette requête renverra tous les BC non exportés pour le fournisseur ABS Services 1 : 

https ://<instance url>/api/purchase_orders ?exported= false&supplier [name]=ABS Services 1
 
Cette requête renverra tous les fournisseurs dont la méthode de BC est définie sur cXML et où la valeur du domaine acheteur contient le mot "domain" : 

https ://<instance url>/api/suppliers ? po-method= cxml&cxml-domain [contains]=domain
 
Cette requête renverra tous les fournisseurs qui sont autorisés à facturer cXML et où la configuration de la facture cXML de la valeur du domaine fournisseur contient le mot "supplier" : 

https ://<instance>.coupahost.com/api/suppliers?allow-cxml-invoicing=true&cxml-supplier-domain[contains]=supplier
 
Cette requête renverra tous les fournisseurs dont l'e-mail de contact principal contient la valeur "coupa.com" et l'adresse du fournisseur où la ville est Charleston : 

https ://<instance url>/api/suppliers ?primary-contact[email][contains]=coupa.com&primary-address[city]=Charleston
 
Cette requête renverra tous les fournisseurs qui  ont au moins 5 avis d'utilisateurs dans le système.   

https ://<instance url>/api/suppliers ?reviews-count[gt]=5

Cette requête renverra tous les bons de commande avec le mode de paiement comme « pcard » et le statut n'est pas égal à fermé

https ://<instance url>/api/purchase_orders ?payment_method=pcard&status[not_eq]=closed

OBTENIR UN bon de commande

Dans cet exemple, nous avons demandé un seul numéro d'enregistrement de bon de commande 2400

Nous avons accédé À l'URL :

https ://<instance url>/api/purchase_orders/2400
ou
https ://<instance url>/api/purchase_orders ?id=2400
 

Voici la réponse correspondant aux critères de recherche :

<?xml version="1.0" encoding="UTF-8"?>

<order-headers type="array">

	 <order-header>

			<acknowledged-flag type="boolean">faux</acknowledged-flag>

			<created-at type="datetime">21/12/2010T12:08:43-08:00</created-at>

			<id type="integer">2400</id>

			<status>émise</status>

			<transmission-status>sent_via_email</transmission-status>

			<updated-at type="datetime">21/12/2010T14:16:03-08:00</updated-at>

			<version type="integer">1</version>

			<exported type="boolean">faux</exported>

			<attachment type="integer" />

			<received type="boolean" />

			<custom-field-2 type="string" />

			<buyer type="string" />

			<custom-field-4 type="string" />

			<date type="datetime" />

			<project2 type="string">DBA1</project2>

			<created-by>

				 <email>upgrade90@coupa.com</email>

				 <employee-number />

				 <firstname>Coupa</firstname>

				 <id type="integer">1</id>

				 <lastname>Assistance</lastname>

				 <login>coupasupport</login>

			</created-by>

			<requisition-header>

				 <id type="integer">1902</id>

				 <requester>

						<email>upgrade90@coupa.com</email>

						<employee-number />

						<firstname>Coupa</firstname>

						<id type="integer">1</id>

						<lastname>Assistance</lastname>

						<login>coupasupport</login>

				 </requester>

			</requisition-header>

			<ship-to-address>

				 <attention />

				 <city>Redwood City</city>

				 <id type="integer">1</id>

				 <name nil="true" />

				 <postal-code>94029</postal-code>

				 <state>CA</state>

				 <street1>250 Sycamore Avenue</street1>

				 <street2 />

				 <country>

						<code>États-Unis</code>

						<id type="integer">223</id>

						<name>États-Unis</name>

				 </country>

			</ship-to-address>

			<ship-to-user>

				 <email>upgrade90@coupa.com</email>

				 <employee-number />

				 <firstname>Coupa</firstname>

				 <id type="integer">1</id>

				 <lastname>Assistance</lastname>

				 <login>coupasupport</login>

			</ship-to-user>

			<supplier>

				 <id type="integer">2</id>

				 <name>Services ABS 1</name>

				 <number>28</number>

				 <primary-contact>

						<email>ben.mlynash@coupa.com</email>

						<id type="integer">327</id>

						<name-additional nil="true" />

						<name-family>Rodriguez</name-family>

						<name-fullname nil="true" />

						<name-given>Paul</name-given>

						<name-prefix nil="true" />

						<name-suffix nil="true" />

						<notes nil="true" />

						<phone-fax>

							 <area-code>232</area-code>

							 <country-code>1</country-code>

							 <extension nil="true" />

							 <number>2321192</number>

						</phone-fax>

				 </primary-contact>

				 <primary-address>

						<attention nil="true" />

						<city>Palo Alto</city>

						<id type="integer">385</id>

						<name>Services ABS 1</name>

						<postal-code>94301</postal-code>

						<state>CA</state>

						<street1>500, rue Main</street1>

						<street2 />

						<country>

							 <code>États-Unis</code>

							 <id type="integer">223</id>

							 <name>États-Unis</name>

						</country>

				 </primary-address>

			</supplier>

			<updated-by>

				 <email>upgrade90@coupa.com</email>

				 <employee-number />

				 <firstname>Coupa</firstname>

				 <id type="integer">1</id>

				 <lastname>Assistance</lastname>

				 <login>coupasupport</login>

			</updated-by>

			<payment-term>

				 <code>45 jours nets</code>

				 <days-for-discount-payment type="integer" nil="true" />

				 <days-for-net-payment type="integer" nil="true" />

				 <discount-rate type="float" nil="true" />

				 <id type="integer">2</id>

			</payment-term>

			<shipping-term>

				 <code>UPS -Masse</code>

				 <id type="integer">1</id>

			</shipping-term>

			<attachments />

			<order-lines>

				 <order-line>

						<accounting-total type="decimal">500,00</accounting-total>

						<created-at type="datetime">21/12/2010T12:08:43-08:00</created-at>

						<description>services juridiques pour le T4</description>

						<id type="integer">1325</id>

						<invoiced type="float">0,00</invoiced>

						<line-num type="integer">1</line-num>

						<need-by-date type="datetime">2010-12-24T00:00:00-08:00</need-by-date>

						<order-header-id type="integer">2400</order-header-id>

						<price type="decimal">500,00</price>

						<quantity type="float" />

						<received type="float">0,00</received>

						<source-part-num />

						<status>reçu</status>

						<sub-line-num type="integer" />

						<supp-aux-part-num />

						<total type="decimal">500,00</total>

						<type>LigneMontantCommande</type>

						<updated-at type="datetime">2010-12-30T13:03:56-08:00</updated-at>

						<version type="integer" />

						<options type="string" />

						<family type="string" />

						<family1 type="string" />

						<test-date type="datetime" />

						<tax-id type="string" />

						<custom-field-2 type="boolean" />

						<custom-field-1 type="boolean" />

						<buyer type="string" />

						<dept type="string" />

						<account>

							 <active type="boolean">true</active>

							 <code>01-100-8000</code>

							 <id type="integer">26</id>

							 <name>États-Unis - Marketing, actifs</name>

							 <segment-1>01</segment-1>

							 <segment-10 nil="true" />

							 <segment-11 nil="true" />

							 <segment-12 nil="true" />

							 <segment-13 nil="true" />

							 <segment-14 nil="true" />

							 <segment-15 nil="true" />

							 <segment-16 nil="true" />

							 <segment-17 nil="true" />

							 <segment-18 nil="true" />

							 <segment-19 nil="true" />

							 <segment-2>100</segment-2>

							 <segment-20 nil="true" />

							 <segment-3>8000</segment-3>

							 <segment-4 nil="true" />

							 <segment-5 nil="true" />

							 <segment-6 nil="true" />

							 <segment-7 nil="true" />

							 <segment-8 nil="true" />

							 <segment-9 nil="true" />

							 <account-type>

									<id type="integer">2</id>

									<name>Plan comptable</name>

							 </account-type>

						</account>

						<accounting-total-currency>

							 <code>USD</code>

							 <id type="integer">1</id>

						</accounting-total-currency>

						<currency>

							 <code>USD</code>

							 <id type="integer">1</id>

						</currency>

						<commodity>

							 <active type="boolean">true</active>

							 <created-at type="datetime">2007-11-26T16:03:18Z</created-at>

							 <id type="integer">2</id>

							 <name>Matériel de bureau</name>

							 <updated-at type="datetime">2009-10-08T23:45:03Z</updated-at>

							 <created-by>

									<email>bmlynash@gmail.com</email>

									<employee-number>12</employee-number>

									<firstname>Bob</firstname>

									<id type="integer">33</id>

									<lastname>Admin</lastname>

									<login>admin</login>

							 </created-by>

							 <updated-by>

									<email>bmlynash@gmail.com</email>

									<employee-number>12</employee-number>

									<firstname>Bob</firstname>

									<id type="integer">33</id>

									<lastname>Admin</lastname>

									<login>admin</login>

							 </updated-by>

							 <category type="string" />

						</commodity>

						<created-by>

							 <email>upgrade90@coupa.com</email>

							 <employee-number />

							 <firstname>Coupa</firstname>

							 <id type="integer">1</id>

							 <lastname>Soutien</lastname>

							 <login>coupasupport</login>

						</created-by>

						<supplier>

							 <id type="integer">2</id>

							 <name>Services ABS 1</name>

							 <number>28</number>

							 <primary-contact>

									<email>ben.mlynash@coupa.com</email>

									<id type="integer">327</id>

									<name-additional nil="true" />

									<name-family>Rodriguez</name-family>

									<name-fullname nil="true" />

									<name-given>Paul</name-given>

									<name-prefix nil="true" />

									<name-suffix nil="true" />

									<notes nil="true" />

									<phone-fax>

										 <area-code>232</area-code>

										 <country-code>1</country-code>

										 <extension nil="true" />

										 <number>2321192</number>

									</phone-fax>

							 </primary-contact>

							 <primary-address>

									<attention nil="true" />

									<city>Palo Alto</city>

									<id type="integer">385</id>

									<name>Services ABS 1</name>

									<postal-code>94301</postal-code>

									<state>CA</state>

									<street1>500 Main St</street1>

									<street2 />

									<country>

										 <code>États-Unis</code>

										 <id type="integer">223</id>

										 <name>États-Unis</name>

									</country>

							 </primary-address>

						</supplier>

						<updated-by>

							 <email>upgrade90@coupa.com</email>

							 <employee-number />

							 <firstname>Coupa</firstname>

							 <id type="integer">1</id>

							 <lastname>Soutien</lastname>

							 <login>coupasupport</login>

						</updated-by>

						<asset-tags />

						<attachments />

				 </order-line>

			</order-lines>

	 </order-header>

</order-headers>

 Bon de commande MIS à jour

Aperçu

Notre API de bon de commande vous permet de mettre à jour les champs d'en-tête du client ou de fermer ou d'annuler le bon de commande d'un bon de commande existant dans Coupa. Il prend également en charge l'ajout, la suppression et la mise à jour des enregistrements de ligne.

Il s'agit de l'URL à laquelle vous pouvez METTRE ces informations :

  • https ://<instance url>/api/purchase_orders/<order id>

Les demandes réussies renverront HTTP 200 OK. Le corps de la réponse inclura la facture qui vient d'être mise à jour.

Les demandes infructueuses renverront HTTP 400 Bad Request. Le corps de la réponse comprendra des erreurs de validation formatées en XML.

Remarques

Cette API vous permet de prendre les mesures suivantes :

Clôturer ou annuler le bon de commande

Un BC peut tenter de passer à annulé en faisant une demande PUT au BC avec la demande suivante.

Annuler bon de commande

<?xml version="1.0" encoding="UTF-8"?>

<order-header>

	 <_cancel>true</_cancel>

</order-header>

De même, un BC peut tenter de passer à fermé en faisant une demande PUT au BC avec la demande suivante.

Clôturer le BC

<?xml version="1.0" encoding="UTF-8"?>

<order-header>

	 <_close>true</_close>

</order-header> 

Les deux actions suivront toutes les validations, comme si la demande avait été faite par un utilisateur via le site Web. Toute erreur sera renvoyée dans le corps de la réponse.

Ajouter une ligne de bon de commande 

Une ligne de bon de commande peut être ajoutée à un bon de commande existant par une demande similaire à ce qui suit :

Ajouter une ligne du bon de commande

<?xml version="1.0" encoding="UTF-8"?>

<order-header>

	 <order-lines>

			<order-line>

				 <type>OrderQuantityLine</type>

				 <description>Description de la ligne du nouvel article</description>

				 <quantity>2</quantity>

				 <price>30,33</price>

				 <currency>

						<code>USD</code>

				 </currency>

				 <account>

						<code>USA-Development-Consulting</code>

						<account-type>

							 <name>Plan comptable américain</name>

						</account-type>

				 </account>

			</order-line>

	 </order-lines>

</order-header>

Si la ligne passe toutes les validations, la version du bon de commande sera incrémentée et, si elle est configurée, le fournisseur recevra automatiquement la nouvelle version du bon de commande.

Modifier une ligne de BdC 

Vous pouvez modifier une ligne de bon de commande existante en incluant le numéro d'identification de la ligne dans l'élément de ligne de commande.

Modifier la ligne du bon de commande existant

<?xml version="1.0" encoding="UTF-8"?>

<order-header>

	 <order-lines>

			<order-line>

				 <id>213</id>

				 <description>Mettre à jour la description de l'article</description>

				 <quantity>5</quantity>

				 <price>35,33</price>

				 <account>

						<code>USA-Vente-Consulting</code>

						<account-type>

							 <name>Plan comptable américain</name>

						</account-type>

				 </account>

				 <some-custom-field>Mettre à jour la valeur du champ personnalisé</some-custom-field>

			</order-line>

	 </order-lines>

</order-header>

En fonction des modifications apportées, une nouvelle version du bon de commande peut être créée et envoyée au fournisseur. Certains de ces changements incluent la modification de la quantité commandée, du prix unitaire ou de l'article. D'autres modifications peuvent ne pas déclencher un nouvel envoi au fournisseur, telles que les modifications apportées au compte.

Supprimer une ligne de BdC

Vous pouvez supprimer une ligne de BC existante en passant à la fois l'ID de ligne à supprimer et la demande de suppression à l'élément de ligne de commande.

Supprimer la ligne du bon de commande

<?xml version="1.0" encoding="UTF-8"?>

<order-header>

	 <order-lines>

			<order-line>

				 <id>3214</id>

				 <_delete>true</_delete>

			</order-line>

	 </order-lines>

</order-header>

 Ce changement déclencherait la création d'une nouvelle version du BC et le renvoi du BC.

Ajout d'une nouvelle ligne à un bon de commande existant

Ajout d'une nouvelle ligne de BC avec la comptabilité. Lors de l'ajout d'une nouvelle ligne avec les informations de compte, il est recommandé d'envoyer la valeur du code de compte et les segments individuels, en particulier lorsque les segments ont des caractères spéciaux dans les valeurs.

<?xml version="1.0" encoding="UTF-8"?>

<order-header>

	 <id>4552</id>

	 <order-lines>

			<order-line>

				 <type>OrderQuantityLine</type>

				 <description>test</description>

				 <need-by-date>2015-02-05T00:00:00</need-by-date>

				 <price>20,00</price>

				 <quantity>2.000000</quantity>

				 <account>

						<code>51110000-N/A--61W2/07001O001-1-002</code>

						<segment-1>51110000</segment-1>

						<segment-2>S/O</segment-2>

						<segment-3 />

						<segment-4>61W2/07001O001-1-002</segment-4>

				 </account>

				 <currency>

						<code>USD</code>

				 </currency>

				 <commodity>

						<name>01080001 51236000 BÂTIMENT &amp; C</name>

				 </commodity>

				 <uom>

						<code>EA</code>

				 </uom>

			</order-line>

	 </order-lines>

</order-header>

 

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.