Skip to main content
Skip table of contents

Auftrag erstellen (WebService, API)


Übersicht


WebService SOAP-Endpunkt (Uri)

Der Aufruf des WebServices ist über folgende URI möglich:

http://TASKCENTERSERVER:PORT/LCWebServices/LCService/Import/OffersOrders.svc


Bitte setzen Sie für die Server-Adresse Ihren TaskCenter-Server ein.

ElementBeschreibung
TASKCENTERSERVERServer auf dem die TaskCenter WebServices installiert sind (bsp. APPSRV1)
PORTDer Port über den die TaskCenter-WebServices erreicht werden (i.d.R. 6460)


Wo finde ich den TaskCenter-Server?

Starten Sie Taskcenter, melden Sie sich an und gehen Sie über die Menüleiste auf das Fragezeichen und wählen den Unterpunkt "Info...".

In der "Server Adresse" finden Sie den Server inkl. Port.


Aufbau Request

Dateibeschreibung

Request

ElementTypPflichtfeldBeschreibung
LanguagestringNein

Wenn angegeben, werden die Fehlermeldungen in der jeweiligen Sprache zurückgegeben.

Mögliche Werte: DEUTSCH, ENGLISCH

TargetstringJaZiel-Datenbank. In dieser Datenbank werden über die Edifact-Einstellungen (AdHoc-EDI) geprüft, ob "Username+Password" zu einem gültigen Kunden-Eintrag führen. Wenn nicht, wird die Auftragsanlage abgelehnt.
UsernamestringJaBenutzername für die Authentifizierung (wird in den Edifact-Einstellungen (AdHoc-EDI) in der Ziel-Datenbank vorgegeben).
PasswordstringJaPasswort für die Authentifizierung (wird in den Edifact-Einstellungen (AdHoc-EDI) in der Ziel-Datenbank vorgegeben).
OffersOrdersOffersOrder[]Ja, wenn nicht "XmlDocument" angegeben wurdeListe mit den anzulegenden Aufträgen
XmlDocumentstringJa, wenn nicht "OffersOrders" angegeben wurdeXML-Text mit dem anzulegenden Auftrag (siehe Vorlage Xml File).

OffersOrder

ElementTypPflichtfeldBeschreibung
HeaderOfferOrderHeaderJaEnthält die Kopf-Daten des Auftrags
ItemsItem[]JaListe mit den einzelnen Positionen

Header

ElementTypPflichtfeldBeschreibung
OrderNumberlongNeinWenn angegeben, wird diese Auftragsnummer verwendet (bei Update)
CustomerNumberlongNeinWenn angegeben, wird diese Kundennummer verwendet (nur bei Neuanlage)
OrderboolNeinWenn "True", wird ein "Auftrag" erstellt, ansonsten ein "Angebot"
WebOrderboolNeinWenn "True", wird das "Web"-Kennzeichen gesetzt und die "Web"-spezifischen Werte automatisch befüllt
IsRepairOrderboolNeinWenn "True", wird das "Reparaturauftrag"-Kennzeichen gesetzt und ev. vorhandene Kundenlager-Einträge in den Reparatur-Feldern befüllt (ab TaskCenter Version 4.69.7.0)
DeliveryDatedateNeinWenn angegeben, wird dieses Lieferdatum verwendet (format = yyyy-MM-ddTHH:mm:ss)
ValueDatedateNeinValutadatum - wenn angegeben, wird dieses Valutadatum verwendet (format = yyyy-MM-ddTHH:mm:ss)  (ab TaskCenter Version 4.73.5.0)
PurchaseOrderNumberstringNeinWenn angegeben, wird diese Bestellnummer im Auftrag eingetragen
AgreementstringNeinZusätzliche Vereinbarung
CategorystringJaDie Kategorie ist zwingend erforderlich und muss im Ziel-Pollex-System vorhanden sein
UIDstringNeinWenn angegeben, wird diese UID-Nummer verwendet, ansonsten wird die UID-Nummer aus dem Kundenstamm genommen
PaymentMethodstringNeinZahlungsbedingung - wenn angegeben, muss diese im Ziel-Pollex-System vorhanden sein. Wenn nicht angegeben, wird diese aus dem Kundenstamm genommen.
ShippingMethodstringNeinLieferbedingung - wenn angegeben, muss diese im Ziel-Pollex-System vorhanden sein. Wenn nicht angegeben, wird diese aus dem Kundenstamm genommen.
ShippingTypestringNeinVersandart - wenn angegeben, muss diese im Ziel-Pollex-System vorhanden sein. Wenn nicht angegeben, wird diese aus dem Kundenstamm genommen.
OUlongNein

Organisatorische Einheit - wenn angegeben, muss diese im Ziel-Pollex-System vorhanden sein. Wenn nicht angegeben, wird die des Sachbearbeiters des Kunden verwendet.

Wenn "OE zwingend" in den Grundlagen eingestellt wurde, muss entweder eine organisatorische Einheit übergeben, oder dem Sachbearbeiter eine OE zugeordnet werden.

FinishedboolNeinWenn angegeben, wird das Dokument auf "Erledigt" / "Nicht erledigt" gesetzt.
PaidDepositdecimalNeinGeleistete Anzahlung - wenn angegeben, wird dieser Betrag in der geleisteten Anzahlung vermerkt
HeaderTextstringNeinAuftrags-Kopftext, welcher im Auftrag hinterlegt wird
DeliveryAddressAddressNeinWenn angegeben, wird diese Lieferadresse verwendet - dabei wird Name1, Strasse und Ort aus dem Adressen-Stamm des Kunden verglichen. Gibt es bereits einen Eintrag, wird diese Adresse verknüpft, ansonsten wird ein neuer Eintrag im Adress-Stamm erstellt.
InvoiceAddressAddressNeinWenn angegeben, wird diese Rechnungsadresse verwendet - dabei wird Name1, Strasse und Ort aus dem Adressen-Stamm des Kunden verglichen. Gibt es bereits einen Eintrag, wird diese Adresse verknüpft, ansonsten wird ein neuer Eintrag im Adress-Stamm erstellt.
RepairUser1string
Reparatur: User1 (ab TaskCenter Version 4.62.0.0)
RepairUser2string
Reparatur: User2 (ab TaskCenter Version 4.62.0.0)
RepairUser3string
Reparatur: User3 (ab TaskCenter Version 4.62.0.0)
RepairUser4string
Reparatur: User4 (ab TaskCenter Version 4.62.0.0)
RepairUser5string
Reparatur: User5 (ab TaskCenter Version 4.62.0.0)
RepairUser6string
Reparatur: User6 (ab TaskCenter Version 4.62.0.0)
RepairUser7string
Reparatur: User7 (ab TaskCenter Version 4.62.0.0)
RepairUser8string
Reparatur: User8 (ab TaskCenter Version 4.62.0.0)
RepairUser9string
Reparatur: User9 (ab TaskCenter Version 4.62.0.0)
RepairUser10string
Reparatur: User10 (ab TaskCenter Version 4.62.0.0)
RepairTakeoverTextstring
Reparatur: Annahmetext (ab TaskCenter Version 4.62.0.0)
RepairFinishedTextstring
Reparatur: Erledigt Text (ab TaskCenter Version 4.62.0.0)

Auftragsprofilierung

Im XML-File können auch beliebig viele Werte der Auftragsprofilierung übergeben werden. Dazu ist jeweils ein eigenes XML-Tag in einem speziellen Format in die Datei einzufügen.

CODE
<ProfilingXYZ>Profilierungswert</ProfilingXYZ>

Wobei XYZ dem Namen des Profilierungskriteriums entspricht. Es ist hier auf die exakt korrekte Schreibweise (auch Groß-/Kleinschreibung) zu achten. Der Profilierungswert wird automatisch bei 254 Zeichen abgeschnitten.

Existiert das angegebene Profilierungskriterium (XYZ) nicht, dann wird der Auftrag trotzdem importiert und das Kriterium nicht übernommen. Es wird aber ein Eintrag in das Log erstellt, in dem auf das fehlende Kriterium hingewiesen wird.

Der Name des Profilierungskriteriums darf keine Leerzeichen und in XML-Tags nicht erlaubte Sonderzeichen (z.B. #) enthalten.

Address

ElementTypPflichtfeldBeschreibung
Name1stringJaName 1
Name2stringNeinName 2
AttnstringNeinzu Handen
POBoxstringNeinPostfach
StreetstringJaStrasse
PostCodestringJaPostleitzahl
CityNamestringJaOrt
CountryCodestringJaLändercode
VATCountryCodestringNeinUID-Land (z.B. AT, DE)
VATIdNumberstringNeinUID-Code (z.B. U52109800)

Item

ElementTypPflichtfeldBeschreibung
ItemNumberstringJaArtikelnummer, muss in LC vorhanden sein
ItemDescription1stringNeinArtikel-Bezeichnung 1
ItemDescription2stringNeinArtikel-Bezeichnung 2
ItemDescription3stringNeinArtikel-Bezeichnung 3
QuantitydecimalJaMenge
QuantityUnitstringNeinMengeneinheit - wenn angegeben, muss diese in LC vorhanden sein
ListPricedecimalNein

Listenpreis - wenn angegeben, wird dieser Listenpreis verwendet.

Wenn nicht vorhanden und es wurde ein Verkaufspreis angegeben, wird der Listenpreis über den angegebenen Rabatt berechnet.

Wenn nicht angegeben und kein Verkaufspreis übergeben wurde, dann wird der Preis über die Preisfindung berechnet.

SalesPricedecimalNein

Verkaufspreis - wenn angegeben, wird dieser Verkaufspreis verwendet.

Wenn nicht vorhanden und es wurde ein Listenpreis angegeben, wird der Verkaufspreis über den angegebenen Rabatt berechnet.

Wenn nicht angegeben und kein Listenpreis übergeben wurde, dann wird der Preis über die Preisfindung berechnet.

CustomerItemNumberstringNeinKundenspezifische Artikelnummer
LongTextstringNeinLangtext des Artikels
User1stringNeinText, der im Feld "Benutzer 1" eingetragen wird
SerialstringNeinSeriennummer (wird nur übernommen, wenn der Artikel die Eigenschaft "Seriennummernpflicht Verkauf" hat)

TaxRate

VatRate

decimalNeinWenn angegeben, dann wird der hier übertragene Steuersatz für die Auftragsanlage verwendet. Der Ustcode wird aus dem Artikel ermittelt, außer es wurde ein Ustcode im XML mit angegeben.

TaxCode

VatCode

intNeinWenn angegeben, dann wird der hier übertragene Ustcode für die Auftragsanlage verwendet. Der Ustsatz wird dann aus der OE des Dokuments und dem übermittelten Ustcode ermittelt, außer es wurde ein Ustsatz im XML mit angegeben.


Vorlagen XML File

Diese XML-Dokument-Vorlage kann im Request.XmlDocument direkt übergeben werden:

ImportDocuments.xml

Beispiel siehe Request mit XmlDocument.


Beispiel-Requests

Kompletter Request

HTTP-Request

XML
POST http://TASKCENTERSERVER:6460/LCWebServices/LCService/Import/OffersOrders.svc HTTP/1.1
Content-Type: text/xml; charset=utf-8
VsDebuggerCausalityData: uIDPo1w3xz+dzH5OobUkPk2mv0QAAAAAqJ/WnTiIP0qLBWJd0JwVytH9apNpQENGs0ULwpN3I+oACQAA
SOAPAction: "http://tempuri.org/IOffersOrders/ImportOffersOrders"
Host: TASKCENTERSERVER:6460
Content-Length: 2166
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Body>
		<ImportOffersOrders xmlns="http://tempuri.org/">
			<request xmlns:a="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import.OffersOrders" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
				<Language i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import"/>
				<Password xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import">samplepass</Password>
				<Target xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import">LC5</Target>
				<Username xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import">sampleaccess</Username>
				<a:OffersOrders>
					<a:OfferOrder>
						<a:Header>
							<a:CustomerNumber>200162</a:CustomerNumber>
							<a:Order>true</a:Order>
							<a:WebOrder>false</a:WebOrder>
							<a:IsRepairOrder>false</a:IsRepairOrder>
							<a:DeliveryDate>2019-12-24T00:00:00</a:DeliveryDate>
							<a:PurchaseOrderNumber>B20191212</a:PurchaseOrderNumber>
							<a:Agreement>Ihr persönlicher Vereinbarungstext</a:Agreement>
							<a:Category>***</a:Category>
							<a:UID>ATU1234567890</a:UID>
							<a:PaymentMethod>SZK</a:PaymentMethod>
							<a:ShippingMethod>SLK</a:ShippingMethod>
							<a:ShippingType>GLS</a:ShippingType>
							<a:OU>10</a:OU>
							<a:Finished>false</a:Finished>
							<a:PaidDeposit>49.99</a:PaidDeposit>
							<a:HeaderText>Individueller Kopftext für den Auftrag</a:HeaderText>
							<a:DeliveryAddress>
								<a:Name1></a:Name1>
								<a:Name2></a:Name2>
								<a:POBox></a:POBox>
								<a:Street></a:Street>
								<a:PostCode></a:PostCode>
								<a:CityName></a:CityName>
								<a:CountryCode></a:CountryCode>
								<a:Attn></a:Attn>
							</a:DeliveryAddress>
							<a:InvoiceAddress>
								<a:Name1></a:Name1>
								<a:Name2></a:Name2>
								<a:POBox></a:POBox>
								<a:Street></a:Street>
								<a:PostCode></a:PostCode>
								<a:CityName></a:CityName>
								<a:CountryCode></a:CountryCode>
								<a:Attn></a:Attn>
							</a:InvoiceAddress>
							<a:RepairUser1>Test-Text 1</a:RepairUser1>
							<a:RepairUser2>Test-Text 2</a:RepairUser2>
							<a:RepairUser3>Test-Text 3</a:RepairUser3>
							<a:RepairUser4>Test-Text 4</a:RepairUser4>
							<a:RepairUser5>Test-Text 5</a:RepairUser5>
							<a:RepairUser6>Test-Text 6</a:RepairUser6>
							<a:RepairUser7>Test-Text 7</a:RepairUser7>
							<a:RepairUser8>Test-Text 8</a:RepairUser8>
							<a:RepairUser9>Test-Text 9</a:RepairUser9>
							<a:RepairUser10>Test-Text 10</a:RepairUser10>
							<a:RepairTakeoverText>Test-AnnahmeText</a:RepairTakeoverText>
							<a:RepairFinishedText>Test-Erledigt-Text</a:RepairFinishedText>
						</a:Header>
						<a:Items>
							<a:Item>
								<a:ItemNumber>1110444</a:ItemNumber>
								<a:ItemDescription1>Intel Core i7 9777K CPU</a:ItemDescription1>
								<a:ItemDescription2>Sockel 4711</a:ItemDescription2>
								<a:ItemDescription3>Boxed</a:ItemDescription3>
								<a:Quantity>2</a:Quantity>
								<a:QuantityUnit>Stk</a:QuantityUnit>
								<a:ListPrice>159</a:ListPrice>
								<a:SalesPrice>119</a:SalesPrice>
								<a:CustomerItemNumber>A18599</a:CustomerItemNumber>
								<a:LongText>Artikelspezifischer Langtext, individuell</a:LongText>
								<a:User1>Text, der im Feld USER1 der Position gespeichert wird</a:User1>
								<a:Serial>SN171819</a:Serial>
							</a:Item>
							<a:Item>
								<a:ItemNumber>1017193</a:ItemNumber>
								<a:ItemDescription1 i:nil="true"/>
								<a:ItemDescription2 i:nil="true"/>
								<a:ItemDescription3 i:nil="true"/>
								<a:Quantity>1</a:Quantity>
								<a:QuantityUnit i:nil="true"/>
								<a:ListPrice>49</a:ListPrice>
								<a:SalesPrice>19.9</a:SalesPrice>
								<a:CustomerItemNumber i:nil="true"/>
								<a:LongText i:nil="true"/>
								<a:User1 i:nil="true"/>
								<a:Serial i:nil="true"/>
							</a:Item>
						</a:Items>
					</a:OfferOrder>
				</a:OffersOrders>
				<a:XmlDocument i:nil="true"/>
			</request>
		</ImportOffersOrders>
	</s:Body>
</s:Envelope>

Minimum Request

XML-Request

XML
POST http://TASKCENTERSERVER:6460/LCWebServices/LCService/Import/OffersOrders.svc HTTP/1.1
SOAPAction: http://tempuri.org/IOffersOrders/ImportOffersOrders
User-Agent: POLLEX-LC Http Post Tool
Content-Type: text/xml; charset=utf-8
Host: TASKCENTERSERVER:6460
Content-Length: 1774
Expect: 100-continue

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <ImportOffersOrders xmlns="http://tempuri.org/">
            <request xmlns:a="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import.OffersOrders" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <Language i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import"/>
                <Password xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import">samplepass</Password>
                <Target xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import">LC5</Target>
                <Username xmlns="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import">sampleaccess</Username>
                <a:OffersOrders>
                    <a:OfferOrder>
                        <a:Header>
                            <a:CustomerNumber>200162</a:CustomerNumber>
                            <a:Category>***</a:Category>
                            <a:OU>10</a:OU>
                        </a:Header>
                        <a:Items>
                            <a:Item>
                                <a:ItemNumber>1110444</a:ItemNumber>
                                <a:Quantity>2</a:Quantity>
                            </a:Item>
                            <a:Item>
                                <a:ItemNumber>1017193</a:ItemNumber>
                                <a:Quantity>1</a:Quantity>
                            </a:Item>
                        </a:Items>
                    </a:OfferOrder>
                </a:OffersOrders>
                <a:XmlDocument i:nil="true"/>
            </request>
        </ImportOffersOrders>
    </s:Body>
</s:Envelope>

Request mit XML-Document

Raw-Xml-Document

Dies ist das eigentliche, reine XML-Dokument mit den Auftrags-Kopf-Daten und den Positionen, ohne zusätzliche Namespace-Angaben. Das Xml-Document kann im Request im Feld "XmlDocument" angegeben werden.

XmlDocument.xml

Bitte beachten Sie: Falls Ihre Programmier-Umgebung nicht automatisch eine HTML-Encodierung vornimmt, muss dies manuell durchgeführt werden.

Nachfolgend ein Beispiel-Request mit eingebettetem XmlDocument.


Request

RequestWithXmlDocument.xml

Der Request enthält ein XML im XML und kann daher nicht dargestellt werden. Deshalb liegt dieser Request als Download vor.


Aufbau Response

Dateibeschreibung

ImportOffersOrdersResponse

ElementTypBeschreibung
ImportOffersOrdersResultImportOffersOrdersResultEnthält die Antwort-Informationen

ImportOffersOrdersResult

ElementTypBeschreibung
InformationListServiceResponse.Information[]Liste mit Fehlerinformationen
ResultTypeResultType

Information, ob die Aufgabe durchgeführt wurde.

Mögliche Werte: Success, Error

ImportedOrdersImportedOrder[]Liste mit den erstellten Aufträgen

ServiceResponse.Information

ElementTypBeschreibung
DateTimedateZeitstempel
InformationTypeInformationType

Typ der Information

Mögliche Werte: Error, Warning, Info

TextstringEnthält die Klartext-Meldung in der angegebenen Sprache
TranslationTextstringEnthält die Meldung sprach-unabhängig falls die Übersetzung in der jeweiligen Anwendung erfolgt

ImportedOrder

ElementTypBeschreibung
OrderNumberlongEnthält die Auftragsnummer
ItemsImportedItem[]Liste mit den Positionen

ImportedItem

ElementTypBeschreibung
AposinxlongEnthält den eindeutigen Datensatz-Index der Position
ItemNumberstringArtikelnummer
ReferenceNumberstringEnthält die Positions-Referenznummer für den Datenaustausch des Erstellers
SalesPricedecimalVerwendeter Verkaufspreis

HTTP-Response - Erfolgreich

HTTP-Response

XML
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Wed, 27 Nov 2019 07:04:46 GMT
Content-Length: 971

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Body>
		<ImportOffersOrdersResponse xmlns="http://tempuri.org/">
			<ImportOffersOrdersResult xmlns:a="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import.OffersOrders" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
				<InformationList xmlns="http://schemas.datacontract.org/2004/07/LC.Globals.Web"/>
				<ResultType xmlns="http://schemas.datacontract.org/2004/07/LC.Globals.Web">Success</ResultType>
				<a:ImportedOrders>
					<a:ImportedOrder>
						<a:Items>
							<a:ImportedItem>
								<a:Aposinx>1861526</a:Aposinx>
								<a:ItemNumber>1110444</a:ItemNumber>
								<a:ReferenceNumber/>
								<a:SalesPrice>119</a:SalesPrice>
							</a:ImportedItem>
							<a:ImportedItem>
								<a:Aposinx>1861527</a:Aposinx>
								<a:ItemNumber>1017193</a:ItemNumber>
								<a:ReferenceNumber/>
								<a:SalesPrice>19.90</a:SalesPrice>
							</a:ImportedItem>
						</a:Items>
						<a:OrderNumber>5387</a:OrderNumber>
					</a:ImportedOrder>
				</a:ImportedOrders>
			</ImportOffersOrdersResult>
		</ImportOffersOrdersResponse>
	</s:Body>
</s:Envelope>


HTTP-Response - Grundlegender Fehler im XML-Aufbau ( Internal Server Error 500 )

Sollten beim Request grundlegende Fehler enthalten sein, sodass die eine Prüfung unsererseits "noch" nicht möglich ist, sind hier einige Ursachen und Lösungsmöglichkeiten aufgelistet:


SOAPAction-Header fehlt

Response-Envelope

XML
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Body>
		<s:Fault>
			<faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none">a:ActionNotSupported</faultcode>
			<faultstring xml:lang="de-AT">Die Nachricht mit Action "" kann aufgrund einer fehlenden ContractFilter-Übereinstimmung beim EndpointDispatcher nicht verarbeitet werden. Mögliche Ursachen: Vertragskonflikt (keine Action-Übereinstimmung zwischen Sender und Empfänger) oder ein Bindung/Sicherheit-Konflikt zwischen dem Sender und dem Empfänger.  Stellen Sie sicher, dass Sender und Empfänger über den gleichen Vertrag und die gleiche Bindung verfügen (einschließlich Sicherheitsanforderungen, z. B. "Message", "Transport", "None").</faultstring>
		</s:Fault>
	</s:Body>
</s:Envelope>

Lösung: Fügen Sie folgenden Request-Header beim Aufruf ein:

SOAPAction: "http://tempuri.org/IOffersOrders/ImportOffersOrders"


Fehlendes Element (OffersOrders)

Response-Envelope

XML
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Body>
		<s:Fault>
			<faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:InternalServiceFault</faultcode>
			<faultstring xml:lang="de-AT">Der Wert darf nicht NULL sein.

Parametername: request.OffersOrders</faultstring>
			<detail>
				<ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
					<HelpLink i:nil="true"/>
					<InnerException i:nil="true"/>
					<Message>Der Wert darf nicht NULL sein.

Parametername: request.OffersOrders</Message>
					<StackTrace>   bei LCService.Import.OffersOrders.ImportOffersOrders(ImportOffersOrdersRequest request) in C:\LC.Web\LCService\LCService\Import\OffersOrders.svc.cs:Zeile 32.

   bei SyncInvokeImportOffersOrders(Object , Object[] , Object[] )

   bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)

   bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace>
					<Type>System.ArgumentNullException</Type>
				</ExceptionDetail>
			</detail>
		</s:Fault>
	</s:Body>
</s:Envelope>

Lösung: Es muss zumindest ein Auftrag im XML angegeben werden. Fügen Sie das OffersOrders-Element mit einem Auftrag ein.


Fehlerhaftes XML

Response-Envelope

XML
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/net/2005/12/windowscommunicationfoundation/dispatcher">a:DeserializationFailed</faultcode><faultstring xml:lang="de-AT">Der Formatierer hat beim Deserialisieren der Nachricht eine Ausnahme ausgelöst: Fehler beim Deserialisieren von Parameter http://tempuri.org/:request. Die InnerException-Nachricht war "Fehler beim Deserialisieren des Objekts "vom Typ LC.SharedObjects.Import.OffersOrders.ImportOffersOrdersRequest". Es wurde das Token ">" erwartet, doch gefunden wurde "<". Zeile 9, Position 17.".  Weitere Details finden Sie unter "InnerException".</faultstring><detail><ExceptionDetail xmlns="http://schemas.datacontract.org/2004/07/System.ServiceModel" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><HelpLink i:nil="true"/><InnerException><HelpLink i:nil="true"/><InnerException><HelpLink i:nil="true"/><InnerException i:nil="true"/><Message>Es wurde das Token ">" erwartet, doch gefunden wurde "<". Zeile 9, Position 17.</Message><StackTrace>   bei System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3)

   bei System.Xml.XmlExceptionHelper.ThrowTokenExpected(XmlDictionaryReader reader, String expected, Char found)

   bei System.Xml.XmlUTF8TextReader.ReadEndElement()

   bei System.Xml.XmlUTF8TextReader.Read()

   bei System.Xml.XmlBaseReader.ReadContentAsString()

   bei System.Xml.XmlBaseReader.ReadElementContentAsString()

   bei ReadImportOffersOrdersRequestFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[] )

   bei System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)

   bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator reader, String name, String ns, Type declaredType, DataContract& dataContract)

   bei System.Runtime.Serialization.XmlObjectSerializerReadContext.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, DataContract dataContract, String name, String ns)

   bei System.Runtime.Serialization.DataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName, DataContractResolver dataContractResolver)

   bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)</StackTrace><Type>System.Xml.XmlException</Type></InnerException><Message>Fehler beim Deserialisieren des Objekts "vom Typ LC.SharedObjects.Import.OffersOrders.ImportOffersOrdersRequest". Es wurde das Token ">" erwartet, doch gefunden wurde "<". Zeile 9, Position 17.</Message><StackTrace>   bei System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver)

   bei System.Runtime.Serialization.DataContractSerializer.ReadObject(XmlDictionaryReader reader, Boolean verifyObjectName)

   bei System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.PartInfo.ReadObject(XmlDictionaryReader reader, XmlObjectSerializer serializer)

   bei System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)</StackTrace><Type>System.Runtime.Serialization.SerializationException</Type></InnerException><Message>Der Formatierer hat beim Deserialisieren der Nachricht eine Ausnahme ausgelöst: Fehler beim Deserialisieren von Parameter http://tempuri.org/:request. Die InnerException-Nachricht war "Fehler beim Deserialisieren des Objekts "vom Typ LC.SharedObjects.Import.OffersOrders.ImportOffersOrdersRequest". Es wurde das Token ">" erwartet, doch gefunden wurde "<". Zeile 9, Position 17.".  Weitere Details finden Sie unter "InnerException".</Message><StackTrace>   bei System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameterPart(XmlDictionaryReader reader, PartInfo part, Boolean isRequest)

   bei System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeParameters(XmlDictionaryReader reader, PartInfo[] parts, Object[] parameters, Boolean isRequest)

   bei System.ServiceModel.Dispatcher.DataContractSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, String action, MessageDescription messageDescription, Object[] parameters, Boolean isRequest)

   bei System.ServiceModel.Dispatcher.OperationFormatter.DeserializeBodyContents(Message message, Object[] parameters, Boolean isRequest)

   bei System.ServiceModel.Dispatcher.OperationFormatter.DeserializeRequest(Message message, Object[] parameters)

   bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.DeserializeInputs(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)

   bei System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</StackTrace><Type>System.ServiceModel.Dispatcher.NetDispatcherFaultException</Type></ExceptionDetail></detail></s:Fault></s:Body></s:Envelope>

Lösung: Im Request wurde ein fehlerhaftes XML übergeben. Korrigieren Sie dieses.


HTTP-Response - Inhaltlicher Fehler

Wurde der grundlegende Aufbau des XML-Request korrekt übergeben, aber es sind inhaltliche Fehler vorhanden (falsche Kundennummer, OE, Versandart, ... ), dann der HTTP-Response grundsätzlich OK (200), allerdings sind die Fehlerinformationen in der "InformationList" im Response angegeben, wie im folgenden Beispiel gezeigt:

XML
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
	<s:Body>
		<ImportOffersOrdersResponse xmlns="http://tempuri.org/">
			<ImportOffersOrdersResult xmlns:a="http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import.OffersOrders" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
				<InformationList xmlns="http://schemas.datacontract.org/2004/07/LC.Globals.Web">
					<ServiceResponse.Information>
						<DateTime>2020-01-02T10:43:12.2472387+01:00</DateTime>
						<InformationType>Error</InformationType>
						<Text>OE zwingend, jedoch keine OE im Personalstamm des Sachbearbeiters eingetragen!</Text>
						<TranslationText>&lt;dllnr:310&gt;</TranslationText>
					</ServiceResponse.Information>
				</InformationList>
				<ResultType xmlns="http://schemas.datacontract.org/2004/07/LC.Globals.Web">Error</ResultType>
				<a:ImportedOrders i:nil="true"/>
			</ImportOffersOrdersResult>
		</ImportOffersOrdersResponse>
	</s:Body>
</s:Envelope>


Liste mit den bekannten (Fehler)Meldungen (unvollständig)
CodeMeldungBeschreibung
310OE zwingend, jedoch keine OE im Personalstamm des Sachbearbeiters eingetragen!Im System ist festgelegt, dass je Dokument zwingend eine OE (organisatorische Einheit) angegeben werden muss. Es wurde jedoch keine OE übergeben oder dem Standard-Sachbearbeiter ist keine OE zugeordnet.
6747Artikelnummer 12345 nicht vorhandenEine angegebene Artikelnummer existiert nicht im Ziel-System.
7866Die Kundennummer 200162 existiert nicht!Es wurde eine Kundennummer angegeben, die im Ziel-System nicht vorhanden ist.
9877Artikel 12345 Ustcode 8 ungültigDer Ust-Code für den Artikel ist ungültig. Es sind nur Werte zw. 0 und 7 erlaubt.


Codebeispiele

Codebeispiel (C#)

1) Neues C#-Projekt im Visual Studio erstellen

2) Service-Referenz hinzufügen




3) Demo-Code C#

CreatePollexOrderSample

C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CreatePollexOrderSample
{
    class Program
    {
        static void Main(string[] args)
        {
            string target = "LC5"; // target-database
            string username = "sampleaccess"; // your EDI account username
            string password = "samplepass"; // your EDI account password

            // create SOAP-service instance
            using (ImportOrderService.OffersOrdersClient client = new ImportOrderService.OffersOrdersClient())
            {
                // create your order, containing header and items
                ImportOrderService.OfferOrder order = new ImportOrderService.OfferOrder()
                {
                    // Header - you have to define at least
                    // customernumber, category and OU (organizational unit)
                    Header = new ImportOrderService.OfferOrderHeader()
                    {
                        CustomerNumber = 200162,
                        Category = "***", // get possible category values from your partner
                        Order = true,
                        OU = 10,
                        ShippingType = "GLS" // get valid shipping types from your partner
                    },
                    // Items - in our sample we add 2 items
                    Items = new ImportOrderService.Item[]
                    {
                        new ImportOrderService.Item() // item 1
                        {
                            ItemNumber = "1110444",
                            Quantity = 2
                        },
                        new ImportOrderService.Item() // item 2
                        {
                            ItemNumber = "1017193",
                            Quantity = 1
                        }
                    }
                };
                var request = new ImportOrderService.ImportOffersOrdersRequest()
                {
                    Target = target,
                    Username = username,
                    Password = password,
                    OffersOrders = new ImportOrderService.OfferOrder[] { order }
                };
                var response = client.ImportOffersOrders(request);
                if (response.ResultType == ImportOrderService.ServiceResponse.ResultTypeEnum.Success)
                {
                    Console.WriteLine("Order " + response.ImportedOrders[0].OrderNumber + " successfully created!");
                }
                else if (response.InformationList != null)
                {
                    Console.WriteLine("Order import failed:");
                    foreach (var info in response.InformationList)
                    {
                        Console.WriteLine(info.Text);
                    }
                }
            }

        }
    }
}


Codebeispiel VB

1) Neues VB-Projekt im Visual Studio erstellen

2) Service-Referenz hinzufügen


3) Demo-Code VB

CreatePollexOrderSampleVB

VB
Module Module1

    Sub Main()
        Dim target As String = "LC5" ' target-database
        Dim username As String = "sampleaccess" ' your EDI account username
        Dim password As String = "samplepass" ' your EDI account password

        ' create SOAP-service instance
        Dim client As ImportOrderService.OffersOrdersClient = New ImportOrderService.OffersOrdersClient()

        ' create your order, containing header And items
        Dim order As ImportOrderService.OfferOrder = New ImportOrderService.OfferOrder()
        ' Header - you have to define at least
        ' customernumber, category And OU (organizational unit)
        With order
            .Header = New ImportOrderService.OfferOrderHeader()
            With .Header
                .CustomerNumber = 200162
                .Category = "***" ' Get possible category values from your partner
                .Order = True
                .OU = 10
                .ShippingType = "GLS" ' get valid shipping types from your partner
            End With

            ' Items - in our sample we add 2 items
            Dim items = New List(Of ImportOrderService.Item)
            items.Add(New ImportOrderService.Item() With {.ItemNumber = "1110444", .Quantity = 2})
            items.Add(New ImportOrderService.Item() With {.ItemNumber = "1017193", .Quantity = 1})
            .Items = items.ToArray()
        End With

        Dim request = New ImportOrderService.ImportOffersOrdersRequest() With
                {
                    .Target = target,
                    .Username = username,
                    .Password = password,
                    .OffersOrders = New ImportOrderService.OfferOrder() {order}
                }
        Dim response = client.ImportOffersOrders(request)
        If (response.ResultType = ImportOrderService.ServiceResponse.ResultTypeEnum.Success) Then

            Console.WriteLine("Order " & response.ImportedOrders(0).OrderNumber & " successfully created!")

        ElseIf (response.InformationList IsNot Nothing) Then

            Console.WriteLine("Order import failed:")
            For Each info In response.InformationList
                Console.WriteLine(info.Text)
            Next

        End If


    End Sub

End Module


Codebeispiel VB6

Demo-Code VB6

CreatePollexOrderSampleVB6

VB
Private Sub Form_Load()

' Elemente des XML Headers
' Es wird ein zweidimensionales Feld erzeugt
' Dimension 1 beinhaltet aufsteigend sortiert jeden "XML-Tag"
' Dimension 2 beinhaltet auf Position 0 den "Namen" des XML-Tags und auf Position 1 den "Wert"
Dim strArrHeader(3, 2) As String
strArrHeader(0, 0) = "CustomerNumber"
strArrHeader(0, 1) = "20000"
strArrHeader(1, 0) = "Order"
strArrHeader(1, 1) = "true"
strArrHeader(2, 0) = "OU"
strArrHeader(2, 1) = "10"

' Es wird für jedes Item ein zweidimensionales Feld erzeugt
' Dimension 1 beinhaltet aufsteigend sortiert jeden "XML-Tag"
' Dimension 2 beinhaltet auf Position 0 den "Namen" des XML-Tags und auf Position 1 den "Wert"
Dim strArrItem1(3, 2) As String
strArrItem1(0, 0) = "ItemNumber"
strArrItem1(0, 1) = "4711"
strArrItem1(1, 0) = "Quantity"
strArrItem1(1, 1) = "5"
strArrItem1(2, 0) = "SalesPrice"
strArrItem1(2, 1) = "99.99"

' Aus dem Header Feld wird ein XML String generiert
' Um diesen String generieren zu können, muss BuildHeaderString() mit dem Header Feld aufgerufen werden
Dim strHeader As String
strHeader = BuildHeaderStr(strArrHeader)

' das strArrAllItems Feld muss größenmäßig gleich groß wie die Anzahl aller Items sein
Dim strArrAllItems(1) As String
' dem Feld wird jedes Item als XML String hinzugefügt
' um einen Item XML String zu generieren muss BuildItemString() mit dem jeweiligen Item Feld aufgerufen werden
strArrAllItems(0) = BuildItemStr(strArrItem1)

' Die einzelnen Item Strings werden zu einem einzigen Items-String zusammengefügt
Dim strAllItems As String
strAllItems = Join(strArrAllItems, vbCrLf)

' Aufruf des Webservice
' Bei Open befindet sich als zweiter Parameter die Adresse des zu konsumierenden Webservices
' BuildRequest wird mit Target, Username, Password, dem Headerstring und dem Items-String aufgerufen
With CreateObject("WinHttp.WinHttpRequest.5.1")
    .Open "POST", "http://cloud.pollex-lc.com:6460/LCWebServices/LCService/Import/OffersOrders.svc", 0
    .SetRequestHeader "Content-Type", "text/xml; charset=utf-8"
    .SetRequestHeader "SOAPAction", "http://tempuri.org/IOffersOrders/ImportOffersOrders"
    .Send BuildRequest("ORLIK", "123456", "abc", strHeader, strAllItems)
    If .Status = 200 Then ParseResponse .ResponseText Else MsgBox .StatusText
  End With
End Sub

' Diese Methode generiert den vollständigen XML Request
' Hier KEINE Änderungen vornehmen!
Private Function BuildRequest(Target, Username, Password, strHeader, strAllItems) As String
Dim S(9) As String
    S(0) = "<s:Envelope xmlns:s='http://schemas.xmlsoap.org/soap/envelope/'><s:Body><ImportOffersOrders xmlns='http://tempuri.org/'><request xmlns:a='http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import.OffersOrders' xmlns:i='http://www.w3.org/2001/XMLSchema-instance'><Language i:nil='true' xmlns='http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import'/>"
    S(1) = "<Password xmlns='http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import'>" & Password & "</Password>"
    S(2) = "<Target xmlns='http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import'>" & Target & "</Target>"
    S(3) = "<Username xmlns='http://schemas.datacontract.org/2004/07/LC.SharedObjects.Import'>" & Username & "</Username>"
    S(4) = "<a:OffersOrders><a:OfferOrder><a:Header>" & strHeader
    S(5) = "</a:Header><a:Items>" & strAllItems
    S(6) = "</a:Items></a:OfferOrder></a:OffersOrders></request></ImportOffersOrders></s:Body></s:Envelope>"
    BuildRequest = Join(S, vbCrLf)
End Function

' Testweise Ausgabe des Response
Private Sub ParseResponse(ByVal sResponse As String)
  MsgBox sResponse
End Sub

' Der Header String wird aus den einzelnen Elementen des übergebenen Stringarrays zu einem XML String zusammengebaut
' Hier KEINE Änderungen vornehmen!
Private Function BuildHeaderStr(strArrHeader) As String
    Dim tempHeaderArr() As String
    ReDim tempHeaderArr(UBound(strArrHeader, 1) - 1)
    For i = 0 To UBound(strArrHeader, 1) - 1
        tempHeaderArr(i) = "<a:" & strArrHeader(i, 0) & ">" & strArrHeader(i, 1) & "</a:" & strArrHeader(i, 0) & ">"
    Next i
    BuildHeaderStr = Join(tempHeaderArr, vbCrLf)
End Function

' Der Item String wird aus den einzelnen Elementen des übergebenen Stringarrays zu einem XML String zusammengebaut
' Hier KEINE Änderungen vornehmen!
Private Function BuildItemStr(strArrItems) As String
    Dim tempItems() As String
    ReDim tempItems(UBound(strArrItems, 1) - 1)
    For i = 0 To UBound(strArrItems, 1) - 1
        tempItems(i) = "<a:" & strArrItems(i, 0) & ">" & strArrItems(i, 1) & "</a:" & strArrItems(i, 0) & ">"
    Next i
    BuildItemStr = "<a:Item>" & Join(tempItems, vbCrLf) & "</a:Item>"
End Function


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.