Ajouter une pièce jointe codée à une facture cXML

Aperçu

Vous pouvez transmettre des pièces jointes de facture dans le cadre de la facture cXML en utilisant le multipartie Base64. Vous devrez créer votre propre script qui prend trois entrées et code les pièces jointes et les images numérisées (mais pas cXML) au format multiparties Base64. Votre script devra également créer une limite aléatoire, illustrée dans l'exemple de facture codée ci-dessous. Il doit également inclure Content-Type et Content-ID pour chaque fichier.

Entrées de script

Afin de générer une facture cXML avec des pièces jointes codées, vous devez créer un script qui prend des entrées spécifiques et génère une facture cXML avec les pièces jointes codées.

Assurez-vous que votre fichier de facture cXML normal comprend les éléments suivants pour les pièces jointes et le balayage d'image extrinsèque :

<Comments>

	<Attachment>

		<URL>https://www.google.com/images/srpr/logo11w.png</URL>

		//Si votre pièce jointe est accessible au public par une URL, spécifiez l'URL.

	</Attachment>

	<Attachment>

		<URL>cid :test.pdf</URL>

		//Si nous avons la pièce jointe localement, spécifiez l'ID de contenu dans l'URL.

	</Attachment>

</Comments>

<Extrinsic name="ImageScanAttachmentUrl">cid :test.csv</Extrinsic>

//Spécifiez ImageScans avec l'ID de contenu.

Sortie du script

Votre script doit enregistrer la sortie dans un fichier afin que vous puissiez la PUBLIER SUR l'instance de votre client à l'aide de Curl.

curl -X POST -H 'Accepter : application/xml' -H 'Content-Type : multipart/related ; boundary=<boundary_value_that_you_have> ; type=text/xml ; start=<cXML_Invoice_content_id>' --data-binary @<output_file_name>.xml https ://<customer_name>.coupahost.com/cxml/invoices
Avertissement

Une fois le fichier de sortie généré, NE PAS L'OUVRIR. Sans l'ouvrir, PUBLIEZ-LE simplement dans l'instance client. L'ouverture du fichier de sortie puis son post-traitement entraîneront une erreur 502 Bad Gateway.

Ajouter des pièces jointes aux factures cXML et tester avec Postman

Exemple de facture codée

--ec6xAZMGCwZhdyY0 //Limite aléatoire

Type de contenu : text/xml ; charset=UTF-8	//Type de contenu

ID de contenu :<payload.xml>//ID de contenu pour le fichier de facture cXML



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

<!DOCTYPE cXML SYSTEM "http://xml.cXML.org/schemas/cXML/1.2.020/InvoiceDetail.dtd">

<cXML version="1.2.020" xml:lang="en-US" timestamp="2018-03-08T13:08:23-08:00" payloadID="2018-03-08T13:08:23-08:00">

	<Header>

		<From>

			<Credential domain="dwqsdg">

				<Identity>vcbv</Identity>

			</Credential>

		</From>

		<To>

			<Credential domain="vfdfvb">

				<Identity>dbfg</Identity>

			</Credential>

		</To>

		<Sender>

			<Credential domain="dwqsdg">

				<Identity>vcbv</Identity>

				<SharedSecret>fdbgfg</SharedSecret>

			</Credential>

			<UserAgent>Coupa Procurement 1.0</UserAgent>

		</Sender>

	</Header>

	<Request deploymentMode="production">

		<InvoiceDetailRequest>

			<InvoiceDetailRequestHeader invoiceDate="2018-03-08T13:08:23-08:00" operation="new" purpose="standard" invoiceOrigin="supplier" invoiceID="COUPATEST21">

				<InvoiceDetailHeaderIndicator />

				<InvoiceDetailLineIndicator isAccountingInLine="yes" />

				<PaymentTerm payInNumberOfDays="30" />

				//Les lignes 35 à 43 concernent les pièces jointes

				//Utilisez des noms de fichiers comme identifiants de contenu afin qu'il soit facile de reconnaître quel identifiant de contenu se réfère à quel format codé

				<Comments>

					<Attachment>

						<URL>https://www.google.com/images/srpr/logo11w.png</URL>

					</Attachment>

					<Attachment>

						<URL>cid :test.pdf</URL>

					</Attachment>

				</Comments>

				<Extrinsic name="ImageScanAttachmentUrl">cid :test.csv</Extrinsic>

			</InvoiceDetailRequestHeader>

			<InvoiceDetailOrder>

				<InvoiceDetailOrderInfo>

					<OrderReference>

						<DocumentReference payloadID="2820" />

					</OrderReference>

				</InvoiceDetailOrderInfo>

				<InvoiceDetailItem quantity="1.0" invoiceLineNumber="1">

					<UnitOfMeasure>EA</UnitOfMeasure>

					<UnitPrice>

						<Money currency="USD">23,34</Money>

					</UnitPrice>

					<InvoiceDetailItemReference lineNumber="1">

						<ItemID>

							<SupplierPartID />

							<SupplierPartAuxiliaryID />

						</ItemID>

						<Description xml:lang="en-US">éléments de test s</Description>

					</InvoiceDetailItemReference>

					<SubtotalAmount>

						<Money currency="USD">23,34</Money>

					</SubtotalAmount>

				</InvoiceDetailItem>

			</InvoiceDetailOrder>

			<InvoiceDetailSummary>

				<SubtotalAmount>

					<Money currency="USD">23,34</Money>

				</SubtotalAmount>

				<Tax>

					<Money currency="USD">0</Money>

					<Description xml:lang="en-US" />

					<TaxDetail purpose="tax" category="USD" percentageRate="0" taxPointDate="2018-03-08T13:08:23-08:00">

						<TaxableAmount>

							<Money currency="USD">23,34</Money>

						</TaxableAmount>

						<TaxAmount>

							<Money currency="USD">0</Money>

						</TaxAmount>

						<TaxLocation xml:lang="en">USD</TaxLocation>

					</TaxDetail>

				</Tax>

				<NetAmount>

					<Money currency="USD">23,34</Money>

				</NetAmount>

			</InvoiceDetailSummary>

		</InvoiceDetailRequest>

	</Request>

</cXML>

--ec6xAZMGCwZhdyY0 //La limite est affichée lorsque la facture cXML se termine ici

Content-Type : text/plain ; charset=utf-8	//Ce type de contenu renvoie le test dans le fichier

Content-Disposition : inline ; filename="test.pdf" //Spécifiez le nom du fichier et le contenu-disposition reste smae

Content-Transfer-Encoding : l'entrée base64 //est codée dans le foramt base64

Content-ID :<test.pdf>//quel fichier est codé ci-dessous



//L'encodage multiparties Base64 commence ici

...

JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAg

UiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHlnGuPJbdxhr/3

r+gYWO+ZxNvb94u/SSsntmzBEjxOsIgNYz0z8trZ0UozUja+6L/7KRZZTZ6+

...



--ec6xAZMGCwZhdyY0 //la limite est affichée car la saisie du fichier ci-dessus est terminée

Content-Type : text/plain ; charset=utf-8 //This content-type refers the text/details in file

Content-Disposition : inline ; filename="test.csv" //Spécifiez le nom du fichier et la disposition du contenu reste la même

Content-Transfer-Encoding : l'entrée base64 //est codée dans le foramt base64

Content-ID :<test.csv>//quel fichier est encodé ci-dessous



...

CjAwMDAxOTQ0MjkgMDAwMDAgbiAKMDAwMDE5NDk1NiAwMDAwMCBuIAowMDAw

MTk1MjE4IDAwMDAwIG4gCjAwMDAyMjAyMTQgMDAwMDAgbiAKMDAwMDIyMDY4

NyAwMDAwMCBuIAowMDAwMjIwOTU2IDAwMDAwIG4gCjAwMDAyMzc3OTYgMDAw

...



--ec6xAZMGCwZhdyY0--

//L'encodage multiparties Base64 se termine ici