Beantwortet

API AuftragCreate


Hallo,

ich möchte über die API einen Auftrag anlegen, was soweit auch funktioniert.Wenn ich nun jedoch dem Projekt einen eigenen Nummernkreis vergebe erscheint folgendes Phänomen:Gebe ich die Projektnummer mit an, wird die nächste freie Belegnummer aus dem Nummernkreis verwendet, als Projekt wird jedoch 1 (Standard) genommen.Gebe ich die Projektnummer NICHT mit an, wird eine Belegnummer verwendet die NICHT aus dem Nummernkreis stammt, als Projekt wird das richtige genommen.Mit der Angabe des Projektkürzels (in diesem Fall "MON") funktioniert es gar nicht.Mein Code dazu steht in dieser Nachricht ganz unten.

Hier mein Code dazu:

// OrderData$orderDataXML .= "<position>";$orderDataXML .= "<nummer>MON100000</nummer>";$orderDataXML .= "<menge>1</menge>";$orderDataXML .= "<preis>4.99</preis>";$orderDataXML .= "<steuersatz>20</steuersatz>";$orderDataXML .= "<waehrung>GBP</waehrung>";$orderDataXML .= "<projekt>6</projekt>";$orderDataXML .= "</position>";

// Generate Hash for Xentralfunction generateHash(){$initKey = '********';$user = '********';$date = gmdate('dmY');$hash = "";

for($i = 0; $i <= 200; $i++)$hash = sha1($hash . $initKey . $user . $date);

return $hash;}

$url = 'https://welogtestsystem.xentral.biz/index.php?module=api&action=' . $methodname . '&hash=' . $hash .'&api_id=1';

$xml = '<?xml version="1.0" encoding="UTF-8"?><request><status><function>' . $methodname . '</function></status><xml>' . $xml . '</xml></request>';

$data = array('xml' => $xml, 'md5sum' => md5($xml));

// use key 'http' even if you send the request to https://...$options = array('http' => array('header' => "Content-type: application/x-www-form-urlencoded\r\n",'method' => 'POST','content' => http_build_query($data),),);

$context = stream_context_create($options);$result = file_get_contents($url, false, $context);return $result;}

// Build XML for transfer to Xentral to create customer$hash = generateHash();

// Build XML for transfer to Xentral to create order$xml_createOrder = "<kundennummer>MON10029</kundennummer><projekt>6</projekt><artikelliste>" . $orderDataXML . "</artikelliste>";

$output_xml_createOrder = SendRequest("AuftragCreate", $xml_createOrder, $hash);$obj_createOrder = simplexml_load_string($output_xml_createOrder);

icon

Beste Antwort von Alexander Rabe 22 March 2021, 00:32

Original anzeigen

2 Antworten

Benutzerebene 1

Hey Dennis, 

probier doch mal, das Projektkürzel (zb. STANDARD für das xentral-Standardprojekt) statt die ID mitzugeben. Das könnte evtl. funktionieren!

Grüße

Lars

Hallo Lars,

vielen Dank für deinen Tipp.Wie ich eingangs geschrieben habe, funktioniert es mit der Angabe des Projektkürzels (in diesem Fall "MON") gar nichtMomentan behelfe ich mir damit, den Auftrag nach dem Anlegen über die API zu bearbeiten, was jedoch dazu führt, dass die Ausführungszeit des Scripts sehr lang (ca. 2-3 Sekunden) ist.

Antworten