Skip to main content
Beantwortet

API AuftragCreate

  • March 11, 2021
  • 2 Antworten
  • 198 Ansichten

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);

Beste Antwort von Alexander Rabe

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

2 Antworten

  • Partner
  • 7 Antworten
  • Antwort
  • March 21, 2021

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


  • Autor
  • Regelmäßiger Teilnehmer
  • 1 Antwort
  • March 22, 2021

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.