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 & C</name>
</commodity>
<uom>
<code>EA</code>
</uom>
</order-line>
</order-lines>
</order-header>