Codierten Anhang zu einer cXML-Rechnung hinzufügen

Übersicht

Mit Base64 Multipart können Sie Rechnungsanhänge im Rahmen der Rechnung cXML übertragen. Sie müssen Ihr eigenes Skript erstellen, das drei Eingaben benötigt und die Anhänge und Bildscans (aber nicht cXML) im mehrteiligen Base64-Format codiert. Ihr Skript muss auch eine zufällige Grenze erstellen, die in der beispielhaften kodierten Rechnung unten angezeigt wird. Es muss auch Content-Type und Content-ID für jede Datei enthalten.

Skripteingaben

Um eine cXML-Rechnung mit darin codierten Anhängen zu erstellen, müssen Sie ein Skript erstellen, das bestimmte Eingaben übernimmt und eine cXML-Rechnung mit den codierten Anhängen generiert.

Stellen Sie sicher, dass Ihre reguläre cXML-Rechnungsdatei die folgenden Elemente für Anhänge und den extrinsischen Bildscan enthält:

<Comments>

	<Attachment>

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

		//Wenn Ihr Anhang über eine URL öffentlich zugänglich ist, geben Sie die URL an.

	</Attachment>

	<Attachment>

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

		//Wenn wir den Anhang lokal haben, dann geben Sie die Content-ID in URL an.

	</Attachment>

</Comments>

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

//ImageScans mit der Content-ID angeben.

Skriptausgabe

Ihr Skript sollte die Ausgabe in einer Datei speichern, damit Sie sie mit curl in die Instanz Ihres Kunden POSTEN können.

curl -X POST -H 'Accept: 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
Warnung

Sobald die Ausgabedatei generiert wurde, ÖFFNEN Sie sie NICHT mehr. Ohne es zu öffnen, POSTEN Sie es einfach in der Kundeninstanz. Das Öffnen der Ausgabedatei und das anschließende POSTing führt zu einem 502 Bad Gateway-Fehler.

Anhänge zu cXML-Rechnungen hinzufügen und mit Postman testen

Beispiel codierte Rechnung

--ec6xAZMGCwZhdyY0 //Random Boundary

Inhalt-Typ: text/xml; charset=UTF-8	//Inhalt-Typ

Inhalts-ID:<payload.xml>//Inhalts-ID für cXML-Rechnungsdatei



<?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 Beschaffung 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" />

				//Zeilen 35-43 sind für Anhänge

				//Dateinamen als Content-IDs verwenden, damit leicht erkannt werden kann, welche Content-ID auf welches verschlüsselte Format verweist

				<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">prüfgegenstände</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 //Grenze wird hier angezeigt, da die cXML-Rechnung endet

Inhaltstyp: text/plain; charset=utf-8	//Dieser Inhaltstyp verweist auf den Test in der Datei

Content-Disposition: inline; filename="test.pdf" //Angeben des Dateinamens und der Content-Disposition bleibt smae

Content-Transfer-Encoding: base64 //Eingabe ist in base64 foramt codiert

Inhalts-ID:<test.pdf>//welche Datei unten kodiert ist



//Die mehrteilige Base64-Codierung beginnt hier

...

JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAg

UiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHlnGuPJbdxhr/3

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

...



--ec6xAZMGCwZhdyY0 //Grenze wird angezeigt, wenn die obige Eingabe der Datei abgeschlossen ist

Inhaltstyp: text/plain; charset=utf-8 //Dieser Inhaltstyp verweist auf den Text/die Details in der Datei

Content-Disposition: inline; filename="test.csv" //Geben Sie den Dateinamen an und die Content-Disposition bleibt gleich

Content-Transfer-Encoding: base64 //Eingabe ist in base64 foramt codiert

Inhalts-ID:<test.csv>//welche Dateien unten kodiert sind



...

CjAwMDAxOTQ0MjkgMDAwMDAgbiAKMDAwMDE5NDk1NiAwMDAwMCBuIAowMDAw

MTk1MjE4IDAwMDAwIG4gCjAwMDAyMjAyMTQgMDAwMDAgbiAKMDAwMDIyMDY4

NyAwMDAwMCBuIAowMDAwMjIwOTU2IDAwMDAwIG4gCjAwMDAyMzc3OTYgMDAw

...



--ec6xAZMGCwZhdyY0--

//Base64 Mehrteilige Codierung endet hier