• Dernière modification le: 29 October 2020

Exemples d'appels API des bons de commande

Options de requête GET de bon de commande

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

Cette requête renverra tous les bons de commande avec bon de commande qui n'ont pas été exportés avant :

https://<instance url>/api/purchase_orders?exported=false
 
Cette requête retournera 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-01T12:00:00
 
Cette requête renverra tous les bons de commande non exportés 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 bons de commande non exportés pour les services ABS du fournisseur 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 bon de commande est définie sur cXML et dont la valeur du domaine de l'acheteur contient le mot "domaine" : 

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

https://<instance>.coupahost.com/api/suppliers?allow-cxml-invoicing=true&cxml-supplier-domain[contains]=supplier
 
Cette requête renverra tous les fournisseurs dont l'adresse e-mail du contact principal contient la valeur "coupa.com" et l'adresse du fournisseur dont 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 évaluations d'utilisateurs dans le système.   

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

Cette requête retournera tous les bons de commande avec mode de paiement comme 'pcard' et le statut ne sera pas égal à fermé

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

OBTENIR le bon de commande

Dans cet exemple, nous avons recherché un seul enregistrement de bon de commande portant le numéro 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">false</acknowledged-flag>
			<created-at type="datetime">2010-12-21T12:08:43-08:00</created-at>
			<id type="integer">2400</id>
			<status>issued</status>
			<transmission-status>sent_via_email</transmission-status>
			<updated-at type="datetime">2010-12-21T14:16:03-08:00</updated-at>
			<version type="integer">1</version>
			<exported type="boolean">false</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>Support</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>Support</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>US</code>
						<id type="integer">223</id>
						<name>United States</name>
				 </country>
			</ship-to-address>
			<ship-to-user>
				 <email>upgrade90@coupa.com</email>
				 <employee-number />
				 <firstname>Coupa</firstname>
				 <id type="integer">1</id>
				 <lastname>Support</lastname>
				 <login>coupasupport</login>
			</ship-to-user>
			<supplier>
				 <id type="integer">2</id>
				 <name>ABS Services 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>ABS Services 1</name>
						<postal-code>94301</postal-code>
						<state>CA</state>
						<street1>500 Main St</street1>
						<street2 />
						<country>
							 <code>US</code>
							 <id type="integer">223</id>
							 <name>United States</name>
						</country>
				 </primary-address>
			</supplier>
			<updated-by>
				 <email>upgrade90@coupa.com</email>
				 <employee-number />
				 <firstname>Coupa</firstname>
				 <id type="integer">1</id>
				 <lastname>Support</lastname>
				 <login>coupasupport</login>
			</updated-by>
			<payment-term>
				 <code>Net 45</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 -Ground</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">2010-12-21T12:08:43-08:00</created-at>
						<description>legal services for Q4</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>received</status>
						<sub-line-num type="integer" />
						<supp-aux-part-num />
						<total type="decimal">500.00</total>
						<type>OrderAmountLine</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>USA -Marketing, Assets</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>Chart of Accounts</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>Office Supplies</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>Support</lastname>
							 <login>coupasupport</login>
						</created-by>
						<supplier>
							 <id type="integer">2</id>
							 <name>ABS Services 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>ABS Services 1</name>
									<postal-code>94301</postal-code>
									<state>CA</state>
									<street1>500 Main St</street1>
									<street2 />
									<country>
										 <code>US</code>
										 <id type="integer">223</id>
										 <name>United States</name>
									</country>
							 </primary-address>
						</supplier>
						<updated-by>
							 <email>upgrade90@coupa.com</email>
							 <employee-number />
							 <firstname>Coupa</firstname>
							 <id type="integer">1</id>
							 <lastname>Support</lastname>
							 <login>coupasupport</login>
						</updated-by>
						<asset-tags />
						<attachments />
				 </order-line>
			</order-lines>
	 </order-header>
</order-headers>

 Bon de commande PUT (mise à jour)

Aperçu

Notre API de bon de commande vous permet de mettre à jour les champs d'en-tête des clients, ou de clôturer 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.

Voici l'URL à laquelle vous pouvez PLACER 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 une mauvaise demande HTTP 400. Le corps de la réponse inclut les erreurs de validation au format XML.

Remarques

Cette API vous permet d'effectuer les actions suivantes :

Clore ou annuler le BC

Un bon de commande peut être modifié en annulation en faisant une demande PUT au bon de commande avec la demande suivante.

Annuler le BC

<?xml version="1.0" encoding="UTF-8"?>
<order-header>
	 <_cancel>true</_cancel>
</order-header>

De la même manière, un bon de commande peut tenter d'être modifié en fermeture en lui faisant une demande PUT 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 BC 

Une ligne de bon de commande peut être ajoutée à un bon de commande existant par une demande similaire à la suivante :

Ajouter une ligne de BC

<?xml version="1.0" encoding="UTF-8"?>
<order-header>
	 <order-lines>
			<order-line>
				 <type>OrderQuantityLine</type>
				 <description>Line description of the new item</description>
				 <quantity>2</quantity>
				 <price>30.33</price>
				 <currency>
						<code>USD</code>
				 </currency>
				 <account>
						<code>USA-Development-Consulting</code>
						<account-type>
							 <name>US Chart Of Accounts</name>
						</account-type>
				 </account>
			</order-line>
	 </order-lines>
</order-header>

Si la ligne réussit toutes les validations, la version du BC sera incrémentée et, si elle est configurée, le fournisseur recevra automatiquement la nouvelle version du BC.

Modifier une ligne de BC 

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

Modifier une ligne de BC existante

<?xml version="1.0" encoding="UTF-8"?>
<order-header>
	 <order-lines>
			<order-line>
				 <id>213</id>
				 <description>Update Description of Item</description>
				 <quantity>5</quantity>
				 <price>35.33</price>
				 <account>
						<code>USA-Sales-Consulting</code>
						<account-type>
							 <name>US Chart Of Accounts</name>
						</account-type>
				 </account>
				 <some-custom-field>Update Custom field value</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 ne peuvent pas déclencher un renvoi au fournisseur, telles que des modifications apportées au compte.

Supprimer une ligne de BC

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

Supprimer la ligne du BC

<?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>

 Cette modification déclencherait la création d'une nouvelle version du bon de commande et son renvoi.

Ajouter une nouvelle ligne à un bon de commande existant

Ajout d'une nouvelle ligne de bon de commande avec comptabilité Lors de l'ajout d'une nouvelle ligne avec les informations du compte, il est recommandé d'envoyer la valeur du code du 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>N/A</segment-2>
						<segment-3 />
						<segment-4>61W2/07001O001-1-002</segment-4>
				 </account>
				 <currency>
						<code>USD</code>
				 </currency>
				 <commodity>
						<name>01080001 51236000 BUILDING &amp; C</name>
				 </commodity>
				 <uom>
						<code>EA</code>
				 </uom>
			</order-line>
	 </order-lines>
</order-header>

 

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.