API Dokumentation


  • API
Für die Anbindung externer Systeme bietet WaWision eine API an, die im Folgenden beschrieben wird.

Funktionsumfang

Funktionen der API:
  • Anlegen und Bearbeitung von Adressen
  • Anlegen und Bearbeitung von Aufträgen
  • Anlegen und Bearbeitung von Benutzern
  • Single Sign On / Externes starten und beenden der Session aus einem zentralen Login
  • Rückmeldung bei Änderungen in WaWision in das Fremdsystem (Event-Handler)

Abkürzungsverzeichnis

  • Fremdsystem (z.B. das eigene Webbackend aus einem eigenen Portal)
  • WaWision (Zentrale Installation von WaWision)
  • Hash (Authentifizierungs Token für API)
  • Methode (Aufruf der Methode / Ist in URL der Parameter action='Name der Methode bzw. Request')

Zugriff

Um mit der API kommunizieren zu können benötigt man einen Hash. Um einen Hash zu erstellen, geht man unter Administration → Einstellungen → Grundeinstellungen → API's. Der Haken "API aktiviert" muss gesetzt sein. Unter "Initkey" muss eine beliebig lange und aus beliebigen Buchstaben und Zahlen zusammengesetzte Zeichenkette stehen, die keine Satz-, Sonderzeichen oder Umlaute beinhaltet. Unter "Remote Domain" ebenfalls eine beliebige Kennung z.b: die Domain von der aus die API genutzt wird (www.meinedomain.de). Wichtig ist das diese auch auf der anderen Seite im Client Quelltext angegeben ist. Am Ende darf kein / stehen. Den "UTF8 Clean" Haken gesetzt lassen. Zum Abschluss den Speichern Button klicken. Nach dem Speichern wird bei "Aktueller Key" der Hash erstellt. Prinzipiell gibt es zwei Möglichkeiten für die Kommunikation
  • Standard Request (Standard POST Request vom Fremdsystem) um z.B. Aufruf einer Methode um einen neuen Auftrag, Adresse oder Benutzer über die API anzulegen bzw. zu bearbeiten
  • Event Handler (Standard POST Request von WaWision): WaWision ruft eine hinterlegte URL auf, wenn ein Auftrag, Adresse, Benutzer o.ä. erstellt oder geändert wird
Der POST Request wird an die URL index.php?module=api&action='Request'&hash=XXXXXXXXXXXXXXXX gesendet. Als POST Variablen müssen immer dabei sein:
  • xml (optional wenn Datenstrukturen notwendig sind)
In der Variable xml muss das Format wie folgt aussehen:
<?xml version="1.0" encoding="UTF-8"?>
<request>
   <status>
      <function>ArtikelCreate</function>
   </status>
   <xml>
      <name_de>Saft Bene</name_de>
      <nummer>1616161</nummer>
      <einkaufspreise>
         <staffelpreis>
            <ab_menge>1</ab_menge>
            <preis>728.22</preis>
            <lieferantennummer>70000</lieferantennummer>
         </staffelpreis>
      </einkaufspreise>
      <verkaufspreise>
         <staffelpreis>
            <ab_menge>1</ab_menge>
            <preis>718,22</preis>
         </staffelpreis>
         <staffelpreis>
            <ab_menge>1</ab_menge>
            <preis>618,22</preis>
            <kundennummer>10006</kundennummer>
            <projekt>VM001</projekt>
         </staffelpreis>
      </verkaufspreise>
   </xml>
</request>
</nowiki>
Sendet die Methode Request eine Antwort erfolgt diese als XML Struktur:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <status>
        <action>Aufgerufene Methode</action>
        <message>Statusnachricht</message>
        <messageCode>Statuscode (Bei Erfolg: 1, siehe unten)</messageCode>
    </status>
    <md5sum></md5sum>
    <xml></xml>
</response>

Statuscodes

  • 1 Erfolg, alles OK
  • 2 Hash falsch
  • 3 Zu wenig GET Parameter
  • 4 Falsche XML Daten
  • 5 Falscher Schlüssel (id)

API Hash für Authentifizierung

Für den Zugriff auf die API benötigt man ein Token. Es wird empfohlen per https auf die API zuzugreifen.
function generateHash()
{
    
    $initKey = 'EXsl4ywgDR5mR3sTGwws9Ikl2ocSKZlvhxoFTv8Au3MaV5UqrEIJORVF5PmFNy';
    $remoteDomain = 'www.server.de';
    $date = gmdate('dmY');
    $hash = "";

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

Standard Request an WaWision senden

Ist das API Modul vorhanden kann wie folgt darauf zugegriffen werden: index.php?module=api&action='Request'&hash='Hash' Per URL wird die Methode bzw. der Request definiert. Optionale Daten werden als POST an die APIübertragen: Zur einfachen Kommunikation können diese Funktionen verwendet werden:

function SendRequest($methodname,$xml,$hash)
{
  $url = 'http://server.com/index.php?module=api&action='.$methodname.'&hash='.$hash;
  $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;
}

Als Antwort für den Request folgt eine XML Nachricht:
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <status>
        <action>Aufgerufene Methode</action>
        <message>Statusnachricht</message>
        <messageCode>Statuscode</messageCode>
    </status>
    <md5sum></md5sum>
    <xml></xml>
</response>

Event Handler Aufruf entgegennehmen

Zum Empfang und Auswerten von Events von WaWision an das Fremdsystem werden folgende Variablen per POST übertragen:
  • per URL: ?action=YYYYY&hash=XXXXXXXXX
<?php

$action = $_GET['action'];
$hash = $_GET['hash'];
$xml = $_POST['xml'];
$md5sum = $_POST['md5sum'];

?>

Liste mit Standard Requests

Request (Parameter action) Beschreibung GET Parameter XML Daten XML Rückgabe im Erfolg Beschreibung Rückgabe im Erfolg
AdresseCreate Anlegen einer neuen Adresse - XML Adresse per POST in Feld xml (kundennummer=new wenn eine vergeben werden soll) <id>34</id><kundennummer></kundennummer> Neue ID der Adresse bzw. Kundennummer
AdresseEdit Änderung einer bestehenden Adresse id oder kundennummer und optional projekt XML Adresse per POST in Feld xml - -
AdresseGet Abfragen einer bestehenden Adresse id oder kundennummer und optional projekt - XML Adresse Datenstruktur der angefragten Adresse
AuftragCreate Anlegen eines neuen Auftrags - XML Auftrag per POST in Feld xml (belegnr=new wenn eine vergeben werden soll) (Achtung das Feld kundennummer ist ein Pflichtfeld bzw. kann mit dem Wert new ein neuer Datensatz angelegt werden) <id>34</id><belegnr></belegnr> Neue ID des Auftrags bzw. Belegnummer
AuftragEdit Änderung eines bestehenden Auftrags id oder belegnr und optional projekt - - -
AuftragGet Abfragen eines bestehenden Auftrags id oder belegnr und optional projekt - XML Auftrag Datensatz des Auftrags
ArtikelCreate Anlegen eines neuen Artikels - XML Artikel - Neue ID des Artikels bzw. Artikelnummer
ArtikelEdit Änderung eines bestehenden Artikels id oder nummer und optional projekt XML Artikel - -
ArtikelGet Abfragen eines bestehenden Artikels id oder kundennummer und optional projekt - XML Artikel Datenstruktur des Artikels
BenutzerCreate Anlegen eines neuen Benutzers - - - Neue ID des Benutzers
BenutzerEdit Änderung eines bestehenden Benutzers id des Benutzers - - -
BenutzerGet Abfragen eines bestehenden Benutzers id des Benutzers - - Datenstruktur des Benutzers
AdresseKontaktCreate Anlegen einer weiteren Kontaktmöglichkeit - XML Adresse Kontakt - Neue ID der Kontaktinformation
AdresseKontaktEdit Änderung einer Kontaktmöglichkeit id oder kundennummer und optional projekt XML Adresse Kontakt - -
AdresseKontaktGet Abfragen einer Kontaktmöglichkeit id - XML Adresse Kontakt -
GruppeCreate Anlegen einer weiteren Gruppe - - - Neue ID der Gruppe
GruppeEdit Änderung einer bestehenden Gruppe id der Gruppe - - -
GruppeGet Abfragen einer bestehenden Gruppe id der Gruppe - - Datenstruktur der Gruppe
BelegeList Abfragen bestehender Belege - - XML Belege Datenstruktur von Belegen
PreiseEdit Ändern vieler Preise - - XML Preise -
DateiList Abfragen vorhandener Dateien - - - Datenstruktur von Dateien
ExportVorlageGet Abfragen verschiedener Daten id und optional von, bis, projekt - XML Daten Datenstruktur der gewählten Exportvorlage
BerichteGet Abfragen von Berichtsdaten id - XML Bericht Datenstruktur von Berichten
ArtikelList Abfragen von Artikeldaten - XML Daten mit dessen Inhalt gefiltert werden soll XML Artikel Datenstruktur der Artikel

Liste mit Event Handler

Bei Änderungen in WaWision wird ein Event (Aufruf einer einstellbaren URL) geworfen. Der Event erhält direkt die Informationen für die Änderungen. Z.B. die Daten eines Auftrags, einer Adresse oder eines Benutzers.
Request (Parameter action) Beschreibung GET Parameter XML Daten
EventAdresseCreate Eine neue Adresse wurde angelegt - -
EventAdresseEdit Es gab eine Änderung an einer bestehenden Adresse - -
EventAuftragCreate Ein neuer Auftrag wurde angelegt - -
EventAuftragEdit Es gab eine Änderung eines bestehenden Auftrags - -
EventAuftragState Statusänderung bzw. Übermittelung Trackingnummer von einem Auftrag bei einer Änderung - -
EventArtikelCreate Ein neuer Artikel wurde angelegt - -
EventArtikelEdit Es gab eine Änderung an einem bestehenden Artikel - -
EventBenutzerCreate Ein neuer Benutzer wurde angelegt - -
EventBenutzerEdit Es gab eine Änderung an einem bestehenden Benutzer - -
EventSessionClose Wenn Benutzer abmelden geklickt hat (siehe Session Management) - -
Request (Parameter action) Beschreibung GET Parameter XML Daten
SessionStart Session eines Benutzers starten - -
SessionClose Session eines Benutzers beenden - -
Request (Parameter action) Beschreibung GET Parameter XML Daten
EventSessionClose Wenn Benutzer abmelden geklickt hat - -

Beschreibung der API Funktionen

Verwalten von Adressen: AdresseCreate, AdresseEdit, AdresseGet

Im Prinzip kann jede Spalte der Datenbank aus der Tabelle adresse bearbeitet oder abgefragt werden. Hierfür einfach die Spaltenbezeichnung der Tabelle angeben, wie z.B. <zahlungszieltage>. Selbiges gilt beim Anlegen einer Adresse. Um eine neue Adresse anzulegen kann die Funktion AdresseCreate verwendet werden.Grundlegende Parameter die beim Anlegen einer Adresse nicht fehlen sollten um eine sinnvolle Adresse zu erhalten:
  • <name> Name der Adresse (Falls Adresse eine Firma ist, hier den Namen des Ansprechpartners eintragen)
  • <strasse> Die Straße kann auch in Kombination mit der Hausnummer im Tag <strasse_hausnummer> verwendet werden.
  • <hausnummer> Die Hausnummer kann auch in Kombination mit der Straße im Tag <strasse_hausnummer> verwendet werden.
  • <plz> Postleitzahl der Adresse
  • <ort> Ort der Adresse
  • <email> E-Mail Adresse der Adresse
  • <typ> Anrede, bei einer Firma ist <typ>firma</typ>
  • <firma> Firmenname. Wenn <firma> befüllt ist, wird <typ> automatisch auf firma gesetzt.
  • <vorname> Wenn <firma>, <vorname> und <name> befüllt sind, wird der Ansprechpartner zusammengesetzt aus <vorname> und <name>. Ist <vorname> leer, wird nur <name> als Ansprechpartner verwendet. Ist <firma> nicht befüllt, wird <name> zusammengesetzt aus <vorname> und <name>.
  • <projekt> Abkürzung des Projektes. Ist <projekt> leer, wird das Standardprojekt gewählt.
  • <kundennummer> Kundennummer der Adresse. Falls eine neue Kundennummer vergeben werden soll, muss NEW eingetragen werden.
  • <lieferantennummer> Lieferantennummer der Adresse. Falls eine neue Lieferantennummer vergeben werden soll, muss NEW eingetragen werden.
Bei einer abweichenden Lieferadresse können folgende Parameter angegeben werden:
  • <liefername> Name der Adresse zu der geliefert wird. (Falls es sich um eine Firma handelt, hier den Namen der Firma.)
  • <liefervorname> Vorname der Adresse zu der geliefert wird.
  • <lieferstrasse> Straße zu der geliefert wird.
  • <lieferhausnummer> Hausnummer zu der geliefert wird.
  • <lieferplz> Postleitzahl der Adresse zu der geliefert wird.
  • <lieferort> Ort der Adresse zu der geliefert wird.
  • <lieferfirma> Firmenname der zu beliefernden Adresse. Ist dieses Feld befüllt, wird der Adresszusatz zusammengesetzt aus <liefervorname> und <liefername>.
  • <lieferabteilung> Abteilung der Adresse zu der geliefert wird.
  • <lieferland> Land der Adresse zu der geliefert wird.
Des Weiteren kann man beim Anlegen und Bearbeiten einer Adresse, dieser eine Gruppe zuweisen. Hierfür kann das Tag <verband> mit der id der Gruppe verwendet werden (z.B. <verband>34</verband>). Möchte man eine Adresse bearbeiten (AdresseEdit), oder nur Daten der Adresse abfragen (AdresseGet), muss die ID oder die Kundennummer angegeben werden. Optional kann das Projekt über die URL übergeben werden. Beispiel Anfrage AdresseCreate mit Funktionen
<?php
$hash = generateHash();
 
$xml = "<name>Emilia Gruber</name>
        <strasse>Musterstrasse</strasse>
        <hausnummer>21</hausnummer>
        <plz>11111</plz>
        <ort>Musterort</ort>
        <email>emiliagruber@musterort.de</email>
        <kundennummer>NEW</kundennummer>";
 
$output_xml = SendRequest("AdresseCreate",$xml,$hash); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort AdresseCreate
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>AdresseCreate</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>13</id>
      <kundennummer>23243</kundennummer>
   </xml>
</response>
Beispiel Anfrage AdresseEdit mit Funktionen
<?php
$hash = generateHash();
 
$xml = "<name>Emilia Gruber</name>
        <strasse>Musterweg</strasse>
        <hausnummer>67</hausnummer>
        <plz>22222</plz>
        <ort>Musterhausen</ort>
        <email>emiliagruber@musterhausen.de</email>";

$id = "13";
 
$output_xml = SendRequest("AdresseEdit",$xml,$hash,$id); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash,$id)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort AdresseEdit
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>AdresseEdit</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>   
</response>
Beispiel Anfrage AdresseGet mit Funktionen
<?php
$hash = generateHash();

$xml = "";

$id = "12";

$output_xml = SendRequest("AdresseGet",$xml,$hash,$id); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id)
{

    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;

    $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispielrückgabe einer Adressabfrage:
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>AdresseGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>37</id>
      <typ>herr,frau,firma</typ>
      <marketingsperre />
      <trackingsperre>1=keine Mail senden, 0=Mail senden</trackingsperre>
      <rechnungsadresse>0=keine gesonderte, 1 = gesonderte Rechnungsadresse</rechnungsadresse>
      <sprache>deutsch,englisch</sprache>
      <name>Max Muster 2</name>
      <abteilung />
      <unterabteilung />
      <ansprechpartner />
      <land />
      <strasse>Muster strasse 888</strasse>
      <ort />
      <plz />
      <telefon />
      <telefax />
      <mobil />
      <email />
      <ustid />
      <ust_befreit>0</ust_befreit>
      <passwort_gesendet>0</passwort_gesendet>
      <sonstiges />
      <adresszusatz />
      <kundenfreigabe>0</kundenfreigabe>
      <steuer />
      <logdatei>2014-06-01 16:01:08</logdatei>
      <kundennummer />
      <lieferantennummer>70002</lieferantennummer>
      <mitarbeiternummer />
      <konto />
      <blz />
      <bank />
      <inhaber />
      <swift />
      <iban />
      <waehrung />
      <paypal />
      <paypalinhaber />
      <paypalwaehrung />
      <projekt>1</projekt>
      <partner>0</partner>
      <zahlungsweise />
      <zahlungszieltage />
      <zahlungszieltageskonto />
      <zahlungszielskonto />
      <versandart />
      <kundennummerlieferant />
      <zahlungsweiselieferant />
      <zahlungszieltagelieferant />
      <zahlungszieltageskontolieferant />
      <zahlungszielskontolieferant />
      <versandartlieferant />
      <geloescht>0</geloescht>
      <firma>1</firma>
      <webid />
      <internetseite />
      <vorname />
      <kalender_aufgaben />
      <titel />
      <anschreiben />
      <logfile />
      <mlmaktiv />
      <mlmvertragsbeginn />
      <geburtstag />
      <liefersperre />
      <mlmpositionierung />
      <steuernummer />
      <steuerbefreit />
      <mlmmitmwst />
      <mlmabrechnung />
      <sponsor />
      <geworbenvon />
      <liefersperregrund />
      <verrechnungskontoreisekosten>0</verrechnungskontoreisekosten>
      <rolledatum />
      <mlmwaehrungauszahlung />
      <mlmfestsetzen>0</mlmfestsetzen>
      <mlmmindestpunkte>0</mlmmindestpunkte>
      <mlmwartekonto>0.00</mlmwartekonto>
      <abweichende_rechnungsadresse>0</abweichende_rechnungsadresse>
      <rechnung_vorname />
      <rechnung_name />
      <rechnung_titel />
      <rechnung_typ />
      <rechnung_strasse />
      <rechnung_ort />
      <rechnung_land />
      <rechnung_abteilung />
      <rechnung_unterabteilung />
      <rechnung_adresszusatz />
      <rechnung_telefon />
      <rechnung_telefax />
      <rechnung_anschreiben />
      <rechnung_email />
      <rechnung_plz />
      <rechnung_ansprechpartner />
      <kennung />
      <zahlungskonditionen_festschreiben />
      <rabatte_festschreiben />
      <rabattinformation />
      <portofreiab />
      <portofrei_aktiv />
      <provision />
      <porto_preis />
      <porto_artikelid />
      <freifeld1 />
      <freifeld2 />
      <freifeld3 />
      <rechnung_periode />
      <rechnung_anzahlpapier />
      <rechnung_permail />
      <rechnung_email />
  
   </xml>
</response>

Verwalten von Aufträgen: AuftragCreate, AuftragEdit, AuftragGet

Hier kann man Aufträge komplett verwalten d.h. neue anlegen (AuftragCreate), bestehende bearbeiten (AuftragEdit) oder bestehende abholen (AuftragGet) um sie in einem anderen System zu übertragen. Bei AuftragCreate können folgende Parameter angegeben werden:
  • <kundennummer> Hier kann NEW für einen neuen Kunden, oder die bisherige Kundennummer eines Kunden verwendet werden.
Bei AuftragEdit und AuftragGet muss die id oder orderid (Belegnr) und optional das Projekt als URL übergeben werden. Beispiel Anfrage AuftragCreate mit Funktionen
<?php
$hash = generateHash();

$xml = "<kundennummer>23243</kundennummer>";

$output_xml = SendRequest("AuftragCreate",$xml,$hash); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort AuftragCreate
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>AuftragCreate</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>16</id>
      <kundennummer>200003</kundennummer>
   </xml>
</response>
Beispiel Anfrage AuftragGet mit Funktionen
<?php

$hash = generateHash();

$xml = "";

$id = "14";

$output_xml = SendRequest("AuftragGet",$xml,$hash,$id); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id)
{

  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;

$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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>

Beispiel Antwort AuftragGet
<?xml version="1.0" encoding="UTF-8"?>
<response>
    <status>
        <action>AuftragGet</action>
        <message>OK</message>
        <messageCode>1</messageCode>
    </status>
    <xml>
        <id>14</id>
        <datum>2017-03-16</datum>
        <art/>
        <projekt>0</projekt>
        <belegnr>200002</belegnr>
        <internet/>
        <bearbeiter>Mitarbeiter</bearbeiter>
        <angebot/>
        <freitext/>
        <internebemerkung/>
        <status>freigegeben</status>
        <adresse>11</adresse>
        <name>Mustersupermarkt</name>
        <abteilung/>
        <unterabteilung/>
        <strasse>Supermarktstraße 1</strasse>
        <adresszusatz/>
        <ansprechpartner>Herr Supermarktleiter</ansprechpartner>
        <plz>12345</plz>
        <ort>Supermarktstadt</ort>
        <land>DE</land>
        <ustid/>
        <ust_befreit>0</ust_befreit>
        <ust_inner>0</ust_inner>
        <email/>
        <telefon/>
        <telefax/>
        <betreff/>
        <kundennummer>23241</kundennummer>
        <versandart>versandunternehmen</versandart>
        <vertrieb>Testfirma GmbH</vertrieb>
        <zahlungsweise>rechnung</zahlungsweise>
        <zahlungszieltage>14</zahlungszieltage>
        <zahlungszieltageskonto>10</zahlungszieltageskonto>
        <zahlungszielskonto>2.00</zahlungszielskonto>
        <bank_inhaber/>
        <bank_institut/>
        <bank_blz/>
        <bank_konto/>
        <kreditkarte_typ/>
        <kreditkarte_inhaber/>
        <kreditkarte_nummer/>
        <kreditkarte_pruefnummer/>
        <kreditkarte_monat/>
        <kreditkarte_jahr/>
        <firma>1</firma>
        <versendet>0</versendet>
        <versendet_am>0000-00-00 00:00:00</versendet_am>
        <versendet_per/>
        <versendet_durch/>
        <autoversand>1</autoversand>
        <keinporto>0</keinporto>
        <keinestornomail>0</keinestornomail>
        <abweichendelieferadresse>0</abweichendelieferadresse>
        <liefername/>
        <lieferabteilung/>
        <lieferunterabteilung/>
        <lieferland/>
        <lieferstrasse/>
        <lieferort/>
        <lieferplz/>
        <lieferadresszusatz/>
        <lieferansprechpartner/>
        <packstation_inhaber/>
        <packstation_station/>
        <packstation_ident/>
        <packstation_plz/>
        <packstation_ort/>
        <autofreigabe>0</autofreigabe>
        <freigabe>0</freigabe>
        <nachbesserung>0</nachbesserung>
        <gesamtsumme>171.36</gesamtsumme>
        <inbearbeitung>0</inbearbeitung>
        <abgeschlossen>0</abgeschlossen>
        <nachlieferung>0</nachlieferung>
        <lager_ok>1</lager_ok>
        <porto_ok>1</porto_ok>
        <ust_ok>1</ust_ok>
        <check_ok>1</check_ok>
        <vorkasse_ok>1</vorkasse_ok>
        <nachnahme_ok>1</nachnahme_ok>
        <reserviert_ok>0</reserviert_ok>
        <partnerid>0</partnerid>
        <folgebestaetigung>0000-00-00</folgebestaetigung>
        <zahlungsmail>0000-00-00</zahlungsmail>
        <stornogrund/>
        <stornosonstiges/>
        <stornorueckzahlung/>
        <stornobetrag>0.00</stornobetrag>
        <stornobankinhaber/>
        <stornobankkonto/>
        <stornobankblz/>
        <stornobankbank/>
        <stornogutschrift>0</stornogutschrift>
        <stornogutschriftbeleg/>
        <stornowareerhalten>0</stornowareerhalten>
        <stornomanuellebearbeitung/>
        <stornokommentar/>
        <stornobezahlt/>
        <stornobezahltam>0000-00-00</stornobezahltam>
        <stornobezahltvon/>
        <stornoabgeschlossen/>0</stornoabgeschlossen>
        <stornorueckzahlungper/>
        <stornowareerhaltenretour>0</stornowareerhaltenretour>
        <partnerausgezahlt>0</partnerausgezahlt>
        <partnerausgezahltam>0000-00-00</partnerausgezahltam>
        <kennen/>
        <logdatei>2017-03-17 10:30:05</logdatei>
        <keinetrackingmail/>
        <zahlungsmailcounter/>
        <rma>0</rma>
        <transaktionsnummer/>
        <vorabbezahltmarkieren>0</vorabbezahltmarkieren>
        <deckungsbeitragcalc>1</deckungsbeitragcalc>
        <deckungsbeitrag>100.00</deckungsbeitrag>
        <erloes_netto>144.00</erloes_netto>
        <umsatz_netto>144.00</umsatz_netto>
        <lieferdatum/>
        <tatsaechlicheslieferdatum/>
        <liefertermin_ok>1</liefertermin_ok>
        <teillieferung_moeglich>0</teillieferung_moeglich>
        <kreditlimit_ok>1</kreditlimit_ok>
        <kreditlimit_freigabe>0</kreditlimit_freigabe>
        <liefersperre_ok>1</liefersperre_ok>
        <teillieferungvon>0</teillieferungvon>
        <teillieferungnummer>0</teillieferungnummer>
        <vertriebid>0</vertriebid>
        <aktion/>
        <provision>0.00</provision>
        <provision_summe/>
        <anfrageid>0</anfrageid>
        <gruppe>0</gruppe>
        <shopextid/>
        <shopextstatus/>
        <ihrebestellnummer/>
        <anschreiben/>
        <usereditid>1</usereditid>
        <useredittimestamp>2017-03-17 10:30:05</useredittimestamp>
        <realrabatt>0.00</realrabatt>
        <rabatt>0.00</rabatt>
        <einzugsdatum/>
        <rabatt1>0.00</rabatt1>
        <rabatt2>0.00</rabatt2>
        <rabatt3>0.00</rabatt3>
        <rabatt4>0.00</rabatt4>
        <rabatt5>0.00</rabatt5>
        <shop>0</shop>
        <steuersatz_normal>19.00</steuersatz_normal>
        <steuersatz_zwischen>7.00</steuersatz_zwischen>
        <steuersatz_ermaessigt>7.00</steuersatz_ermaessigt>
        <steuersatz_starkermaessigt>7.00</steuersatz_starkermaessigt>
        <steuersatz_dienstleistung>7.00</steuersatz_dienstleistung>
        <waehrung>EUR</waehrung>
        <keinsteuersatz/>
        <angebotid/>
        <schreibschutz>0</schreibschutz>
        <pdfarchiviert>0</pdfarchiviert>
        <pdfarchiviertversion>0</pdfarchiviertversion>
        <typ>firma</typ>
        <ohne_briefpapier>0</ohne_briefpapier>
        <auftragseingangper/>
        <lieferid>0</lieferid>
        <ansprechpartnerid>0</ansprechpartnerid>
        <systemfreitext/>
        <projektfiliale>0</projektfiliale>
        <lieferungtrotzsperre>0</lieferungtrotzsperre>
        <zuarchivieren>0</zuarchivieren>
        <internebezeichnung/>
        <angelegtam/>
        <saldo>-171.36</saldo>
        <saldogeprueft>2017-03-17 10:29:59</saldogeprueft>
        <lieferantenauftrag>0</lieferantenauftrag>
        <lieferant>0</lieferant>
        <lieferdatumkw>0</lieferdatumkw>
        <abweichendebezeichnung>0</abweichendebezeichnung>
        <rabatteportofestschreiben>0</rabatteportofestschreiben>
        <sprache>deutsch</sprache>
        <bodyzusatz/>
        <bundesland/>
        <artikelliste>
            <position>
                <id>51</id>
                <auftrag>14</auftrag>
                <artikel>385815</artikel>
                <projekt>0</projekt>
                <bezeichnung>Kirschjoghurt klein</bezeichnung>
                <beschreibung>Ein leckerer kleiner Kirschjogurt.</beschreibung>
                <internerkommentar/>
                <nummer>115491</nummer>
                <menge>50</menge>
                <preis>0.30000000</preis>
                <waehrung>EUR</waehrung>
                <lieferdatum>0000-00-00</lieferdatum>
                <vpe>1</vpe>
                <sort>1</sort>
                <status>angelegt</status>
                <umsatzsteuer/>
                <bemerkung/>
                <geliefert>0</geliefert>
                <geliefert_menge>0</geliefert_menge>
                <explodiert>0</explodiert>
                <explodiert_parent>0</explodiert_parent>
                <logdatei>2017-03-17 10:29:59</logdatei>
                <punkte>0.00</punkte>
                <bonuspunkte>0.00</bonuspunkte>
                <mlmdirektpraemie>0.00</mlmdirektpraemie>
                <keinrabatterlaubt>0</keinrabatterlaubt>
                <grundrabatt>0.00</grundrabatt>
                <rabattsync>1</rabattsync>
                <rabatt1>0.00</rabatt1>
                <rabatt2>0.00</rabatt2>
                <rabatt3>0.00</rabatt3>
                <rabatt4>0.00</rabatt4>
                <rabatt5>0.00</rabatt5>
                <einheit/>
                <webid/>
                <rabatt>0.00</rabatt>
                <nachbestelltexternereinkauf/>
                <zolltarifnummer/>
                <herkunftsland>DE</herkunftsland>
                <artikelnummerkunde/>
                <freifeld1/>
                <freifeld2/>
                <freifeld3/>
                <freifeld4/>
                <freifeld5/>
                <freifeld6/>
                <freifeld7/>
                <freifeld8/>
                <freifeld9/>
                <freifeld10/>
                <lieferdatumkw>0</lieferdatumkw>
                <teilprojekt>0</teilprojekt>
            </position>
        </artikelliste>
    </xml>
</response>
                       

Verwalten von Artikeln: ArtikelCreate, ArtikelEdit, ArtikelGet

Es können mit der API neue Artikel angelegt (ArtikelCreate), Artikel bearbeitet (ArtikelEdit) und Artikelinformationen abgerufen (ArtikelGet) werden. Bei ArtikelGet und ArtikelEdit ist zu beachten, dass die ID des Artikels in der URL über GET mittels &id= mitgegeben werden muss.Beim Anlegen und Bearbeiten der Artikel können alle Tags verwendet werden, die als Spalte in der Tabelle artikel vorliegen. Um jedoch sinnvolle Artikel zu erhalten, sollten beim Erstellen einige Tags mindestens gesetzt werden:
  • <name_de> Name des Artikels.
  • <anabregs_text> Beschreibungstext des Artikels.
  • <projekt> Abkürzung des Projektes. Falls nicht gesetzt, wird das Standardprojekt gewählt.
  • <nummer> Artikelnummer des Artikels. Soll eine neue Artikelnummer vergeben werden, muss NEW eingetragen werden.
  • <aktiv> 1 oder 0, für einen aktiven bzw. inaktiven Artikel.
  • <variante_von_nummer> Nummer des Artikels von dem der neue Artikel eine Variante ist.
Beispiel Anfrage ArtikelCreate mit Funktionen
<?php

$hash = generateHash();

$xml = "<name_de>Kirschjoghurt</name_de>
        <anabregs_text>Ein leckerer Kirschjoghurt</anabregs_text>
        <nummer>NEW</nummer>
        <aktiv>1</aktiv>";


$output_xml = SendRequest("ArtikelCreate",$xml,$hash); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash)
{

  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispiel Antwort ArtikelCreate
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>ArtikelCreate</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>149</id>
      <nummer>115491</nummer>
   </xml>
</response>
Beispiel Anfrage ArtikelEdit mit Funktionen
<?php

$hash = generateHash();

$xml = "<nummer>115491</nummer>
        <name_de>Kirschjoghurt klein</name_de>
        <anabregs_text>Ein leckerer kleiner Kirschjogurt.</anabregs_text>
        ";

$id = "149";


$output_xml = SendRequest("ArtikelEdit",$xml,$hash,$id); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id)
{

  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;

$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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispiel Antwort ArtikelEdit
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>ArtikelEdit</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
</response>
Beispiel Anfrage ArtikelGet mit Funktionen
<?php

$hash = generateHash();

$xml = "";
$id = 149;

$output_xml = SendRequest("ArtikelGet",$xml,$hash,$id); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id)
{

  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);

?>

Beispiel Antwort
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>ArtikelGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>385815</id>
      <typ/>
      <nummer>115491</nummer>
      <checksum/>
      <projekt>0</projekt>
      <inaktiv>0</inaktiv>
      <ausverkauft>0</ausverkauft>
      <warengruppe/>
      <name_de>Kirschjoghurt klein</name_de>
      <name_en/>
      <kurztext_de/>
      <kurztext_en/>
      <beschreibung_de/>
      <beschreibung_en/>
      <uebersicht_de/>
      <uebersicht_en/>
      <links_de/>
      <links_en/>
      <startseite_de/>
      <startseite_en/>
      <standardbild/>
      <herstellerlink/>
      <hersteller/>
      <teilbar/>
      <nteile/>
      <seriennummern/>
      <lager_platz/>
      <lieferzeit/>
      <lieferzeitmanuell/>
      <sonstiges/>
      <gewicht/>
      <endmontage/>
      <funktionstest/>
      <artikelcheckliste/>
      <stueckliste/>
      <juststueckliste/>
      <barcode/>
      <hinzugefuegt/>
      <pcbdecal/>
      <lagerartikel>0</lagerartikel>
      <porto>0</porto>
      <chargenverwaltung>0</chargenverwaltung>
      <provisionsartikel>0</provisionsartikel>
      <gesperrt>0</gesperrt>
      <sperrgrund/>
      <geloescht>0</geloescht>
      <gueltigbis>0000-00-00</gueltigbis>
      <umsatzsteuer/>
      <klasse/>
      <adresse>0</artikel>
      <shopartikel>0</shopartikel>
      <unishopartikel>0</unishopartikel>
      <journalshopartikel>0</journalshopartikel>
      <shop>0</shop>
      <katalog>0</katalog>
      <katalogtext_de/>
      <katalogtext_en/>
      <katalogbezeichnung_de/>
      <katalogbezeichnung_en/>
      <neu>0</neu>
      <topseller>0</topseller>
      <startseite>0</startseite>
      <wichtig>0</wichtig>
      <mindestlager>0</mindestlager>
      <mindestbestellung>0</mindestbestellung>
      <partnerprogramm_sperre>0</partnerprogramm_sperre>
      <internerkommentar/>
      <intern_gesperrt>0</intern_gesperrt>
      <intern_gesperrtuser>0</intern_gesperrtuser>
      <intern_gesperrtgrund/>
      <inbearbeitung>0</inbearbeitung>
      <inbearbeitunguser>0</inbearbeitunguser>
      <cache_lagerplatzinhaltmenge>-999</cache_lagerplatzinhaltmenge>
      <internkommentar/>
      <firma>1</firma>
      <logdatei>2017-03-24 06:53:10</logdatei>
      <anabregs_text>Ein leckerer kleiner Kirschjogurt.</anabregs_text>
      <autobestellung>0</autobestellung>
      <produktion/>
      <herstellernummer/>
      <restmenge/>
      <mlmdirektpraemie/>
      <keineeinzelartikelanzeigen>0</keineeinzelartikelanzeigen>
      <mindesthaltbarkeitsdatum>0</mindesthaltbarkeitsdatum>
      <letzteseriennummer/>
      <individualartikel>0</individualartikel>
      <keinrabatterlaubt/>
      <rabatt>0</rabatt>
      <rabatt_prozent/>
      <geraet>0</geraet>
      <serviceartikel>0</serviceartikel>
      <autoabgleicherlaubt>0</autoabgleicherlaubt>
      <pseudopreis/>
      <freigabenotwendig>0</freigabenotwendig>
      <freigaberegel/>
      <nachbestellt/>
      <ean/>
      <mlmpunkte>0.00</mlmpunkte>
      <mlmbonuspunkte>0.00</mlmbonuspunkte>
      <mlmkeinepunkteeigenkauf/>
      <shop2/>
      <shop3/>
      <usereditid>1</usereditid>
      <useredittimestamp>2017-03-24 06:53:10</useredittimestamp>
      <freifeld1/>
      <freifeld2/>
      <freifeld3/>
      <freifeld4/>
      <freifeld5/>
      <freifeld6/>
      <einheit/>
      <webid/>
      <lieferzeitmanuell_en/>
      <variante/>
      <variante_von/>
      <produktioninfo/>
      <sonderaktion/>
      <sonderaktion_en/>
      <autolagerlampe>0</autolagerlampe>
      <leerfeld/>
      <zolltarifnummer/>
      <herkunftsland>DE</herkunftsland>
      <laenge>0.00</laenge>
      <breite>0.00</breite>
      <hoehe>0.00</hoehe>
      <gebuehr>0</gebuehr>
      <pseudolager/>
      <matrixprodukt>0</matrixprodukt>
      <anabregs_text_en>
      <externeproduktion>0</externeproduktion>
      <bildvorschau/>
      <inventursperre>0</inventursperre>
      <variante_kopie>0</variante_kopie>
      <unikat>0</unikat>
      <downloadartikel>0</downloadartikel>
      <generierenummerbeioption>0</generierenummerbeioption>
      <allelieferanten>0</allelieferanten>
      <tagespreise>0</tagespreise>
      <rohstoffe>0</rohstoffe>
      <steuer_erloese_inland_normal/>
      <steuer_aufwendung_inland_normal/>
      <steuer_erloese_inland_ermaessigt/>
      <steuer_aufwendung_inland_ermaessigt/>
      <steuer_erloese_inland_steuerfrei/>
      <steuer_aufwendung_inland_steuerfrei/>
      <steuer_erloese_inland_innergemeinschaftlich/>
      <steuer_aufwendung_inland_innergemeinschaftlich/>
      <steuer_erloese_inland_eunormal/>
      <steuer_erloese_inland_nichtsteuerbar/>
      <steuer_erloese_inland_euermaessigt/>
      <steuer_aufwendung_inland_nichtsteuerbar/>
      <steuer_aufwendung_inland_eunormal/>
      <steuer_aufwendung_inland_euermaessigt/>
      <steuer_erloese_inland_export/>
      <steuer_aufwendung_inland_import/>
      <steuer_art_produkt>1</steuer_art_produkt>
      <steuer_art_produkt_download>1</steuer_art_produkt_download>
      <metadescription_de/>
      <metadescription_en/>
      <metakeywords_de/>
      <metakeywords_en/>
      <vkmeldungunterdruecken>0</vkmeldungunterdruecken>
      <freifeld7/>
      <freifeld8/>
      <freifeld9/>
      <freifeld10/>
      <ursprungsregion/>
      <altersfreigabe/>
      <provisionssperre/>
      <inventurekaktiv>0</inventureaktiv>
      <inventurek/>
      <verkaufspreise>
         <staffelpreis>
            <ab_menge>1</ab_menge>
            <preis>0.30000000</preis>
            <vpe/>
            <waehrung>EUR</waehrung>
         </staffelpreis>
      </verkaufspreise>
   </xml>
</response>

Verwalten von Benutzer: BenutzerCreate, BenutzerEdit, BenutzerGet

Mit BenutzerCreate kann man einen neuen Benutzer anlegen. Möchte man einen Benutzer bearbeiten, geschieht dies mit BenutzerEdit. BenutzerGet liefert Informationen eines Benutzers zurück. Bei BenutzerEdit und BenutzerGet muss die ID des Benutzers als GET Parameter übergeben werden. Beim Anlegen bzw. Bearbeiten eines Benutzers muss man einige Dinge beachten:
  • <active> Muss auf 1 gesetzt sein, da sich sonst der Benutzer nicht anmelden kann!
  • <startseite> Die URL der Startseite (z.B. index.php?module=welcome&action=pinwand) muss base54 kodiert sein.
  • <passwordmd5> Das Passwort des Benutzers muss hier md5 kodiert angegeben werden, nicht <password>. <password> stammt aus älteren Versionen, wird nicht mehr verwendet und dient nur noch historischen Zwecken.
Tags um einen Benutzer anzulegen oder zu bearbeiten:
  • <adresse> Beinhaltet die ID der Adresse
  • <username> Darf nicht bereits existieren
  • <type> Art des Benutzers, z.B. admin oder standard
  • <aktiv> Auf 1 setzen
  • <startseite> Muss base54 kodiert sein
  • <passwordmd5> Muss md5 kodiert sein
Beispiel Anfrage BenutzerCreate mit Funktionen
<?php
$hash = generateHash();

$xml = "<adresse>12</adresse>
        <username>Musterbenutzer</username>
        <type>admin</type>
        <activ>1</activ>
        <passwordmd5>e22a63fb76874c99488435f26b117e37</passwordmd5>
        <externlogin>1</externlogin>";


$output_xml = SendRequest("BenutzerCreate",$xml,$hash); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort BenutzerCreate
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>BenutzerCreate</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
       <id>10</id>
   </xml>
</response>
Beispiel Anfrage BenutzerEdit mit Funktionen
<?php
$hash = generateHash();

$xml = "<type>standard</type>
        <activ>1</activ>
        <passwordmd5>dafe3d37f46376f08f8e92b15e308239</passwordmd5>
        <externlogin>0</externlogin>";

$id = 10;


$output_xml = SendRequest("BenutzerEdit",$xml,$hash,$id); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash,$id)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort BenutzerEdit
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>BenutzerEdit</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>   
</response>
Beispiel Anfrage BenutzerGet mit Funktionen

<?php

$hash = generateHash();

$xml = "";

$id = "1";

$output_xml = SendRequest("BenutzerGet",$xml,$hash,$id); 

function generateHash()
{
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id)
{

  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>

Beispiel Antwort BenutzerGet
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>BenutzerGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>1</id>
      <username>admin</username>
      <password>MAiwwHrOSf9kg</password>
      <repassword>0</repassword>
      <description />
      <settings>a:2:{s:18:"lohnabrechnung_von";s:0:"";s:18:"lohnabrechnung_bis";s:0:"";}</settings>
      <parentuser />
      <activ>1</activ>
      <type>admin</type>
      <adresse>1</adresse>
      <fehllogins>0</fehllogins>
      <standarddrucker>0</standarddrucker>
      <firma>1</firma>
      <logdatei>2014-05-26 11:12:28</logdatei>
      <startseite>aW5kZXgucGhwP21vZHVsZT13ZWxjb21lJmFjdGlvbj1waW53YW5k</startseite>
      <hwtoken>0</hwtoken>
      <hwkey />
      <hwcounter>0</hwcounter>
      <motppin />
      <motpsecret />
      <externlogin>1</externlogin>
      <hwdatablock />
      <passwordmd5 />
      <internebezeichnung />
      <gpsstechuhr>0</gpsstechuhr>
      <kalender_passwort />
      <kalender_aktiv />
   </xml>
</response>

Verwalten von Gruppen: GruppeCreate, GruppeEdit, GruppeGet

Mit dem Befehl GruppeCreate kann eine neue Gruppe angelegt werden. Zum Bearbeiten einer Gruppe wird GruppeEdit verwendet. Möchte man jedoch nur die Daten einer Gruppe abfragen, geschieht dies mit GruppeGet. Bei GruppeEdit und GruppeCreate muss die ID der Gruppe als GET Parameter übergeben werden. Tags um eine Gruppe anzulegen oder zu bearbeiten:Es können als Tag die Spaltenbezeichnungen der Tabelle gruppen aus der Datenbank gewählt werden, z.B.
  • <name> Beinhaltet den Namen der Gruppe
  • <art> Hier sollte gruppe eingetragen werden
  • <kennziffer> Beliebige Kennziffer zum erkennen der Gruppe
Beispiel Anfrage GruppeCreate mit Funktionen
<?php
$hash = generateHash();

$xml = "<name>Messe 2017</name>
        <art>Gruppe</art>
        <kennziffer>2017</kennziffer>";

$output_xml = SendRequest("GruppeCreate",$xml,$hash); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort GruppeCreate
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>GruppeCreate</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>8</id>
   </xml>
</response>
Beispiel Anfrage GruppeEdit mit Funktionen
<?php
$hash = generateHash();

$xml = "<name>Messe 2016</name>
        <kennziffer>2016</kennziffer>";

$id = 8;

$output_xml = SendRequest("GruppeEdit",$xml,$hash,$id); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash,$id)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort GruppeEdit
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>GruppeEdit</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
</response>
Beispiel Anfrage GruppeGet mit Funktionen
<?php
$hash = generateHash();

$xml = "";
$id = 2;

$output_xml = SendRequest("GruppeGet",$xml,$hash,$id); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash,$id)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort GruppeGet
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>GruppeGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>2</id>
      <name>Händler</name>
      <art>gruppe</art>
      <kennziffer>1</kennziffer>
      <internebemerkung/>
      <grundrabatt>0.00</grundrabatt>
      <rabatt1>0.00</rabatt1>
      <rabatt2>0.00</rabatt2>
      <rabatt3>0.00</rabatt3>
      <rabatt4>0.00</rabatt4>
      <rabatt5>0.00</rabatt5>
      <sonderrabatt_skonto>0.00</sonderrabatt_skonto>
      <provision>0.00</provision>
      <kundennummer/>
      <partnerid/>
      <dta_aktiv>0</dta_aktiv>
      <dta_periode>1</dta_periode>
      <dta_dateiname/>
      <dta_mail/>
      <dta_mail_betreff/>
      <dta_mail_text/>
      <dtavariablen/>
      <dta_variante>1</dta_variante>
      <bonus1>0.00</bonus1>
      <bonus1_ab>0.00</bonus1_ab>
      <bonus2>0.00</bonus2>
      <bonus2_ab>0.00</bonus2_ab>
      <bonus3>0.00</bonus3>
      <bonus3_ab>0.00</bonus3_ab>
      <bonus4>0.00</bonus4>
      <bonus4_ab>0.00</bonus4_ab>
      <bonus5>0.00</bonus5>
      <bonus5_a>0.00</bonus5_ab>
      <bonus6>0.00</bonus6>
      <bonus6_ab>0.00</bonus6_ab>
      <bonus7>0.00</bonus7>
      <bonus7_ab>0.00</bonus7_ab>
      <bonus8>0.00</bonus8>
      <bonus8_ab>0.00</bonus8_ab>
      <bonus9>0.00</bonus9>
      <bonus9_ab>0.00</bonus9_ab>
      <bonus10>0.00</bonus10>
      <bonus10_ab>0.00</bonus10_ab>
      <zahlungszieltage>0</zahlungszieltage>
      <zahlungszielskonto>0.00</zahlungszielskonto>
      <zahlungszieltageskonto>0</zahlungszieltageskonto>
      <portoartikel>0</portoartikel>
      <portofreiab>0.00</portofreiab>
      <erweiterteoptionen>0</erweiterteoptionen>
      <zentralerechnung>0</zentralerechnung>
      <zentralregulierung>0</zentralregulierung>
      <gruppe>0</gruppe>
      <preisgruppe>0</preisgruppe>
      <verbandsgruppe>0</verbandsgruppe>
      <rechnung_name/>
      <rechnung_strasse/>
      <rechnung_ort/>
      <rechnung_plz/>
      <rechnung_abteilung/>
      <rechnung_land/>
      <rechnung_email/>
      <rechnung_periode>1</rechnung_periode>
      <rechnung_anzahlpapier>0</rechnung_anzahlpapier>
      <rechnung_permail>0</rechnung_permail>
      <webid/>
      <portofrei_aktiv>0.00</portofrei_aktiv>
      <projekt>0</projekt>
      <objektname/>
      <objekttyp/>
      <parameter/>
      <objektname2/>
      <objekttyp2/>
      <parameter2/>
      <objektname3/>
      <objekttyp3/>
      <parameter3/>
      <kategorie>1</kategorie>
   </xml>
</response>

Anlegen und Bearbeiten von Preisen eines Artikels: PreiseEdit

Mit PreiseEdit haben Sie die Möglichkeit neue Einkaufs- und Verkaufspreise anzulegen, sowie bestehende Einkaufs- und Verkaufspreise zu bearbeiten. Für den genauen Aufbau der XML Struktur, sehen Sie sich bitte den Beispielaufruf der Funktion PreiseEdit weiter unten an. Grundlegender Aufbau der XML Daten:
<artikel>
  <id/>
  <nummer/>
  <verkaufspreise>
    <staffelpreis/>
  </verkaufspreise>
  <einkaufspreise>
    <staffelpreis/>
  </einkaufspreise>
</artikel>
Das Tag <artikel> umschließt alle anderen Tags. Um die Preise zuzuordnen muss die ID des Artikels angegeben werden. Ab der Version 17.3 kann die Artikelnummer, statt der ID verwendet werden. Anschließend kommt das Tag <verkaufspreise> / <einkaufspreise>, das dann das Tag <staffelpreis> beinhaltet. Innerhalb von <staffelpreis> stehen weitere Parameter wie im nächsten Absatz gelistet. Für jeden Preis, muss jeweils ein neues Tag <staffelpreis> innerhalb <verkaufspreise> / <einkaufspreise> geöffnet werden. Folgende Parameter stehen Ihnen zur Verfügung: Verkaufspreise:
  • <kundennummer> (falls Preis für alle gilt und nicht kundenspezifisch, dann <kundennummer> leer lassen)
  • <gruppe> (ID der Gruppe aus WaWision, falls Preis für bestimmte Gruppen gilt. Ansonsten <gruppe> leer lassen)
  • <ab_menge> (Gibt die Menge an, ab der der Preis gültig sein soll. Wenn <ab_menge> leer ist, wird 1 als Menge genommen. Kommazahlen mit Punkt angeben, z.B. 2.50)
  • <preis> (Verkaufspreis, muss mit Punkt angegeben werden, z.B. 29.99)
Einkaufspreise:
  • <lieferantennummer> (muss befüllt sein, sonst wird der Einkaufspreis nicht angelegt / bearbeitet)
  • <ab_menge> (Gibt die Menge an, ab der der Preis gültig sein soll. Wenn <ab_menge> leer ist, wird 1 als Menge genommen. Kommazahlen mit Punkt angeben, z.B. 2.50)
  • <bestellnummer> (Bestellnummer des Artikels beim Lieferanten)
  • <bezeichnunglieferant> (Bezeichnung des Artikels beim Lieferanten)
  • <preis> (Einkaufspreis, muss mit Punkt angegeben werden, z.B. 29.99)
  • <waehrung> (Währung des Preises, falls <waehrung> leer ist, wird EUR als Währung genommen)
Beispiel Anfrage PreiseEdit mit Funktionen
<?php

$hash = generateHash();

$xml = "<artikel>   
          <id>7</id>
          <verkaufspreise> 
            <staffelpreis>
              <kundennummer>100030</kundennummer>
              <gruppe/>
              <ab_menge>1</ab_menge>
              <preis>2.80</preis>
            </staffelpreis>            
            <staffelpreis>
              <kundennummer/>
              <gruppe/>
              <ab_menge/>
              <preis>2.40</preis>
            </staffelpreis>
          </verkaufspreise>
          <einkaufspreise>
            <staffelpreis>
              <lieferantennummer>70003</lieferantennummer>
              <ab_menge/>
              <bestellnummer>123456789</bestellnummer>
              <bezeichnunglieferant>Artikel 54367B</bezeichnunglieferant>
              <preis>1.20</preis>
              <waehrung/>
            </staffelpreis>
          </einkaufspreise>
        </artikel>
        ";


$output_xml = SendRequest("PreiseEdit",$xml,$hash); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash)
{

  $url = 'http://192.168.0.28/wawision/17.4/www/index.php?module=api&action='.$methodname.'&hash='.$hash;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>

Beispiel Antwort PreiseEdit
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <status>
    <action>PreiseEdit</action>
    <message>OK</message>
    <messageCode>1</messageCode>
  </status>
</response>

Verwalten von weiteren Kontakinformationen einer Adresse: AdresseKontaktCreate, AdresseKontaktEdit, AdresseKontaktGet

Mit AdresseKontaktCreate können weitere Kontaktinformationen bei einer Adresse hinterlegt werden. Bearbeitet werden diese mit AdresseKontaktEdit. Möchte man eine Kontaktinformation zurückbekommen, geschieht dies mit AdresseKontaktGet. Mögliche Parameter zum Anlegen und Bearbeiten einer Adressinformation:
  • <adresse> ID der Adresse für die Kontaktinformation
  • <bezeichnung> Bezeichnung der Kontaktinformation, z.B. Telefon privat
  • <kontakt> Inhalt der Kontaktinformation, z.B. eine Telefonnummer
Beispiel Anfrage AdresseKontaktCreate mit Funktionen
<?php
$hash = generateHash();

$xml = "<adresse>13</adresse>
        <bezeichnung>Telefon privat</bezeichnung>
        <kontakt>01234567890</kontakt>";

$output_xml = SendRequest("AdresseKontaktCreate",$xml,$hash); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort AdresseKontaktCreate
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>AdresseKontaktCreate</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <id>2</id>
   </xml>
</response>
Beispiel Anfrage AdresseKontaktEdit mit Funktionen
<?php
$hash = generateHash();

$xml = "<bezeichnung>Mobil privat</bezeichnung>
        <kontakt>01232222222</kontakt>";

$id = 2;


$output_xml = SendRequest("AdresseKontaktEdit",$xml,$hash,$id); 
 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash,$id)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort AdresseKontaktEdit
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>AdresseKontaktEdit</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>   
</response>
<?xml version="1.0" encoding="UTF-8"?>
  <response>
    <status>
      <action>AdresseKontaktGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
    </status>
    <xml>
      <adresse>41</adresse>
      <bezeichnung>Skype Account</bezeichnung>
      <kontakt>123456789</kontakt>
    </xml>
  </response>

Anfragen von Belegen (Angebot bis Lieferschein: BelegeList)

Um Informationen aus Belegen zu holen, kann die Funktion BelegeList verwendet werden. Tags die für eine Anfrage innerhalb von <order> verwendet werden können: <field> Nur 1 <field> innerhalb von <order> möglich. Erlaubte Sortierkriterien:anabregs_text, anabregs_text_en, artikelkategorie, belegnr, betrag, bezeichnung, datum, land, letztes_datum, menge, name, name_de, name_en, nummer, ort, plz, preis, status, strasse, telefax, telefon <desc> 1 oder 0 möglich um die Sortierung aufsteigend, oder absteigend zu haben Tags die für eine Anfrage unterhalb von <order> verwendet werden können um die Suche nach bestimmten Elementen einzugrenzen:
  • <beleg> Folgende Belege sind möglich: auftrag, rechnung, angebot, lieferschein, gutschrift
  • <adresse> ID der gewünschten Adresse von der Belege angezeigt werden soll
  • <datum_von> Datum ab dem die Belege gewählt werden sollen
  • <datum_bis> Datum bis die Belege gewählt werden sollen
  • <groupbyartikel> 1 oder 0 um nach Artikel zu gruppieren oder nicht
  • <groupbyadresse> 1 oder 0 um nach Adressen zu gruppieren oder nicht
  • <groupbyposition> 1 oder 0 um nach Positionen zu gruppieren oder nicht
  • <kategorie> ID der Artikelkategorie
  • <kategoriename> Name der Artikelkategorie
  • <limit> Zahl angeben um die Ausgabe der Belege zu limitieren, z.B. <limit>10</limit> zeigt nur die ersten 10 Belege an
  • <offset> Zeigt ab der angegeben Zahl die Belege an, z.B. <offset>10</offset>, zeigt ab dem 10. Beleg die Belege an
  • <status> Status von gewünschten Belegen angeben, wie z.B. freigegeben oder versendet
  • <vertrieb>
Beispiel Anfrage mit Funktionen 1
<?php

$hash = generateHash();
$xml = "<order>
          <field>name_de</field>
          <desc>1</desc>
  	</order>
	<beleg>rechnung</beleg>
	<groupbyartikel>1</groupbyartikel>
	<limit>10</limit>
	<offset>0</offset>";

$output_xml = SendRequest("BelegeList",$xml,$hash); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash)
{
  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;

  $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;
}

?>

Beispiel Antwort nach Anfrage 1
  <response>
    <status>
      <action>BelegeList</action>
      <message>OK</message>
      <messageCode>1</messageCode>
    </status>
     
    <xml>
      <artikel_list>
        <artikel>
          <id>
            <value>1</value>
          </id>
          <nummer>
            <value>700001</value>
          </nummer>
          <name_de>
            <value>Apfelmus</value>
          </name_de>
          <menge>
            <value>3</value>
          </menge>
          <betrag>
            <value>2,50</value>
          </betrag>
          <artikelkategorie>
            <value>produkt</value>
          </artikelkategorie>
          <letztes_datum>
            <value>2016-10-19</value>
          </letztes_datum>
          <artikelkategoriebezeichnung>
            <value />
          </artikelkategoriebezeichnung>
        </artikel>
        
        <anz_gesamt>1</anz_gesamt>
        <anz_result>1</anz_result>
      </artikel_list>
    </xml>
  </response>
Beispiel Belege Anfrage nach Artikel Eingabe 2
<order>
  <field>name_de</field>
  <desc>1</desc>
</order>
<beleg>rechnung</beleg>
<groupbyartikel>1</groupbyartikel>
<limit>10</limit>
<offset>0</offset>
Antwort auf Anfrage 2
<response>
  <status>
    <action>BelegeList</action>
    <message>OK</message>
    <messageCode>1</messageCode>
  </status>
  <xml>
    <artikel_list>
      <artikel>
        <id>
          <value>29549</value>
        </id>
        <nummer>
          <value>6450823</value>
        </nummer>
        <name_de>
          <value>Testartoleö</value>
        </name_de>
        <menge>
          <value>1</value>
        </menge>
        <betrag>
          <value>0</value>
        </betrag>
        <artikelkategorie>
          <value>1289_kat</value>
        </artikelkategorie>
        <letztes_datum>
          <value>2016-04-26</value>
        </letztes_datum>
        <artikelkategoriebezeichnung>
          <value>Testkategorie</value>
        </artikelkategoriebezeichnung>
      </artikel>
      <artikel>
        <id>
          <value>1388</value>
        </id>
        <nummer>
          <value>123456</value>
        </nummer>
        <name_de>
          <value>Akkuschrauber</value>
        </name_de>
        <menge>
          <value>1</value>
        </menge>
        <betrag>
          <value>94.0252</value>
        </betrag>
        <artikelkategorie>
          <value>produkt</value>
        </artikelkategorie>
        <letztes_datum>
          <value>2016-10-25</value>
        </letztes_datum>
        <artikelkategoriebezeichnung>
          <value/>
        </artikelkategoriebezeichnung>
      </artikel>
      <artikel>
      ..
      </artikel>
      <anz_gesamt>365</anz_gesamt>
      <anz_result>30</anz_result>
    </artikel_list>
  </xml>
</response>
Beispiel: Positionen für einen Lieferschein anhand der Belegnr
$input_xml = '<beleg>lieferschein</beleg>
<search>
<field>belegnr</field>
<suche>'.base64_encode(300080).'</suche>
<exakt>1</exakt>
</search>';
$xml = SendRequest($url,"BelegeList",$input_xml,$hash,"", $api_id);
Antwort

<response>
  <status>
    <action>BelegeList</action>
    <message>OK</message>
    <messageCode>1</messageCode>
  </status>
  <xml>
    <beleg_list>
      <lieferschein>
        <belegid>
          <value>125</value>
        </belegid>
        <datum>
          <value>2016-10-27</value>
        </datum>
        <belegnr>
          <value>300080</value>
        </belegnr>
        <status>
          <value>versendet</value>
        </status>
        <adresse>
          <value>655</value>
        </adresse>
        <name>
          <value>TEST KUNDE</value>
        </name>
        <position>
          <beleg>
            <value>lieferschein</value>
          </beleg>
          <adresse>
            <value>655</value>
          </adresse>
          <name>
            <value>TEST KUNDE</value>
          </name>
          <datum>
            <value>2016-10-27</value>
          </datum>
          <belegnr>
            <value>300080</value>
          </belegnr>
          <belegid>
            <value>125</value>
          </belegid>
          <id>
            <value>178</value>
          </id>
          <lieferschein>
            <value>125</value>
          </lieferschein>
          <artikel>
            <value>36370</value>
          </artikel>
          <projekt>
            <value>1</value>
          </projekt>
          <bezeichnung>
            <value>Artikelname</value>
          </bezeichnung>
          <beschreibung>
            <value>foobar</value>
          </beschreibung>
          <internerkommentar>
            <value/>
          </internerkommentar>
          <nummer>
            <value>A123</value>
          </nummer>
          <seriennummer>
            <value>100002</value>
          </seriennummer>
          <menge>
            <value>2</value>
          </menge>
          <lieferdatum>
            <value>0000-00-00</value>
          </lieferdatum>
          <vpe>
            <value>1</value>
          </vpe>
          <sort>
            <value>1</value>
          </sort>
          <status>
            <value>versendet</value>
          </status>
          <bemerkung>
            <value/>
          </bemerkung>
          <geliefert>
            <value>2</value>
          </geliefert>
          <abgerechnet>
            <value>0</value>
          </abgerechnet>
          <logdatei>
            <value>2016-10-27 09:23:59</value>
          </logdatei>
          <explodiert_parent_artikel>
            <value>0</value>
          </explodiert_parent_artikel>
          <einheit>
            <value/>
          </einheit>
          <zolltarifnummer>
            <value/>
          </zolltarifnummer>
          <herkunftsland>
            <value>DE</value>
          </herkunftsland>
          <artikelnummerkunde>
            <value/>
          </artikelnummerkunde>
          <lieferdatumkw>
            <value>0</value>
          </lieferdatumkw>
          <auftrag_position_id>
            <value>1734</value>
          </auftrag_position_id>
          <lagertext>
            <value/>
          </lagertext>
          <kostenlos>
            <value>0</value>
          </kostenlos>
          <teilprojekt>
            <value>0</value>
          </teilprojekt>
          <freifeld1>
            <value/>
          </freifeld1>
          <freifeld2>
            <value/>
          </freifeld2>
          <freifeld3>
            <value/>
          </freifeld3>
          <freifeld4>
            <value/>
          </freifeld4>
          <freifeld5>
            <value/>
          </freifeld5>
          <freifeld6>
            <value/>
          </freifeld6>
          <freifeld7>
            <value/>
          </freifeld7>
          <freifeld8>
            <value/>
          </freifeld8>
          <freifeld9>
            <value/>
          </freifeld9>
          <freifeld10>
            <value/>
          </freifeld10>
          <explodiert_parent>
            <value>0</value>
          </explodiert_parent>
          <artikelkategorie>
            <value>1331_kat</value>
          </artikelkategorie>
          <preis>
            <value>0</value>
          </preis>
        </position>
      </lieferschein>
      <anz_gesamt>1</anz_gesamt>
      <anz_result>1</anz_result>
    </beleg_list>
  </xml>
</response>

Abfrage von Umsätzen: AdresseListeGet

Mit AdresseListeGet können Sie sich Kunden ausgeben lassen, die z.B. innerhalb eines bestimmten Zeitraums eine bestimmte Menge Umsatz erzeugt haben. Sie können Ihre Abfrage der Kunden mit einigen Parametern eingrenzen:
  • <order> beinhaltet das Tag <field>. Dadurch wird Ihr Ergebnis nach dem Feld in <field> sortiert.
  • <field> steht innerhalb von <order> und kann verschiedene Filter beinhalten, wie z.B. <field>name</field>. Möglich sind: gruppenname, kennziffer, name, plz, ort, telefon, telefax, ansprechpartner, typ, strasse, land, email, kundennummer, lieferantennummer
  • <desc> steht innerhalb von <order>. Wird eine 1 gesetzt wird Ihr Ergebnis absteigend nach Ihrer Angabe von <field> sortiert. Bei einer 0 das Selbe aufsteigend.
  • <limit> limitiert das Ergebnis Ihrer Abfrage auf Ihre festgelegte Zahl, z.B. <limit>10</limit> zeigt nur die ersten 10 Belege an
  • <offset> zeigt ab der angegeben Zahl die Belege an, z.B. <offset>10</offset>, zeigt ab dem 10. Beleg die Belege an
  • <kategorie> Hier muss die Kategorien-ID angegeben werden. Wenn ein Beleg einen Artikel aus dieser Artikelkategorie enthält wird der Gesamtumsatz angezeigt
  • <vertrieb> Hier muss die ID des Vertriebsmitarbeiters angegeben werden. Die Umsätze dieser Belege mit diesem Vertriebsmitarbeiter werden summiert
  • <summierung> beinhaltet die verschiedenen Tags der Belegarten, deren Umsätze summiert werden sollen. Möglich sind:
  • <rechnung>
  • <gutschrift>
  • <bestellung>
  • <auftrag>
  • <angebot>
  • <umsatzvon> gibt den Mindestumsatz an der vorhanden sein muss
  • <status> Hier kann der Status angegeben werden, die die Belege erfüllen müssen. Wird kein <status> angegeben, werden stornierte und angelegte Belege nicht mit einbezogen.
  • <datumvon> Ab diesem Datum werden die Belege berücksichtigt
  • <datumbis> Bis zu diesem Datum werden die Belege berücksichtigt
  • <searchmode> Hier kann AND oder OR angegeben werden, um die einzelnen Bedingungen zu verknüpfen. Wird nichts angegeben wird AND verwendet.
  • <exakt> Hier muss 1 oder 0 angegeben werden, ob die Bedingungen bei LIKE von % umschlossen werden sollen oder nicht. 1 bedeutet mit % (z.B. LIKE %Bedingung%), 0 bedeutet ohne (z.B. LIKE Bedingung).
  • <search> beinhaltet die Tags <suche> und <field>. In <suche> muss mit base64_encode() der Wert übergeben werden, nachdem gesucht werden soll, wie z.B. einem spezifischen Kundennamen (<suche>.base64_encode('Testname').</suche>). Mit <field> wird dann das Datenbankfeld aus der Adresstabelle genannt, in dem der Begriff aus <suche> gesucht werden soll (<field>name</field>).
  • <id> Mit Angabe der Adress-ID kann die Abfrage auf diese Adresse beschränkt werden.
Beispiel 1 Anfrage AdresseListeGet mit Funktionen
$input_xml = "
<order>
  <field>name</field><desc>0</desc>
</order>
<limit>10</limit>
<offset>0</offset>
<summierung>    
  <beleg>rechnung</beleg>
  <beleg>gutschrift</beleg>
</summierung>
<umsatzvon>100</umsatzvon>
<datumbis>2016-09-08</datumbis>
<datumvon>2015-03-08</datumvon>
";
$xml = SendRequest($url,"AdresseListeGet",$input_xml,$hash,"", $api_id);
Beispiel 1 Antwort AdresseListeGet
<response>
  <status>
    <action>AdresseListeGet</action>
    <message>OK</message>
    <messageCode>1</messageCode>
  </status>
  <xml>
    <adressen>
      <adresse>
        <id>
          <value>1085</value>
        </id>
        <typ/>
        <marketingsperre/>
        <trackingsperre>
          <value>0</value>
        </trackingsperre>
        <rechnungsadresse>
          <value>0</value>
        </rechnungsadresse>
        <sprache/>
        <name>
          <value>Testkunde</value>
        </name>
        <abteilung/>
        <unterabteilung/>
        <ansprechpartner/>
        <land>
          <value>DE</value>
        </land>
        <strasse>
          <value>Musterstr. 1</value>
        </strasse>
        <ort>
          <value>Musterstadt</value>
        </ort>
        <plz>
          <value>12345</value>
        </plz>
        <telefon/>
        <telefax/>
        <mobil/>
        <email>
          <value>email@example.com</value>
        </email>
        <ustid/>
        <ust_befreit>
          <value>0</value>
        </ust_befreit>
        <passwort_gesendet>
          <value>0</value>
        </passwort_gesendet>
        <sonstiges/>
        <adresszusatz/>
        <kundenfreigabe>
          <value>0</value>
        </kundenfreigabe>
        <steuer/>
        <logdatei>
          <value>2016-09-23 12:01:26</value>
        </logdatei>
        <kundennummer>
          <value>10476</value>
        </kundennummer>
        <lieferantennummer/>
        <mitarbeiternummer/>
        <konto/>
        <blz/>
        <bank/>
        <inhaber/>
        <swift/>
        <iban/>
        <waehrung/>
        <paypal/>
        <paypalinhaber/>
        <paypalwaehrung/>
        <projekt>
          <value>1</value>
        </projekt>
        <partner>
          <value>0</value>
        </partner>
        <zahlungsweise/>
        <zahlungszieltage/>
        <zahlungszieltageskonto/>
        <zahlungszielskonto/>
        <versandart/>
        <kundennummerlieferant/>
        <zahlungsweiselieferant/>
        <zahlungszieltagelieferant/>
        <zahlungszieltageskontolieferant/>
        <zahlungszielskontolieferant/>
        <versandartlieferant/>
        <geloescht>
          <value>0</value>
        </geloescht>
        <firma>
          <value>1</value>
        </firma>
        <webid/>
        <vorname/>
        <kennung/>
        <sachkonto/>
        <freifeld1/>
        <freifeld2/>
        <freifeld3/>
        <filiale/>
        <vertrieb/>
        <innendienst/>
        <verbandsnummer/>
        <abweichendeemailab/>
        <portofrei_aktiv/>
        <portofreiab>
          <value>0.00</value>
        </portofreiab>
        <infoauftragserfassung/>
        <mandatsreferenz/>
        <mandatsreferenzdatum/>
        <mandatsreferenzaenderung>
          <value>0</value>
        </mandatsreferenzaenderung>
        <glaeubigeridentnr/>
        <kreditlimit>
          <value>0.00</value>
        </kreditlimit>
        <tour>
          <value>0</value>
        </tour>
        <zahlungskonditionen_festschreiben/>
        <rabatte_festschreiben/>
        <mlmaktiv/>
        <mlmvertragsbeginn/>
        <mlmlizenzgebuehrbis/>
        <mlmfestsetzenbis/>
        <mlmfestsetzen>
          <value>0</value>
        </mlmfestsetzen>
        <mlmmindestpunkte>
          <value>0</value>
        </mlmmindestpunkte>
        <mlmwartekonto>
          <value>0.00</value>
        </mlmwartekonto>
        <abweichende_rechnungsadresse>
          <value>0</value>
        </abweichende_rechnungsadresse>
        <rechnung_vorname/>
        <rechnung_name/>
        <rechnung_titel/>
        <rechnung_typ/>
        <rechnung_strasse/>
        <rechnung_ort/>
        <rechnung_plz/>
        <rechnung_ansprechpartner/>
        <rechnung_land/>
        <rechnung_abteilung/>
        <rechnung_unterabteilung/>
        <rechnung_adresszusatz/>
        <rechnung_telefon/>
        <rechnung_telefax/>
        <rechnung_anschreiben/>
        <rechnung_email/>
        <geburtstag/>
        <rolledatum/>
        <liefersperre/>
        <liefersperregrund/>
        <mlmpositionierung/>
        <steuernummer/>
        <steuerbefreit/>
        <mlmmitmwst/>
        <mlmabrechnung/>
        <mlmwaehrungauszahlung/>
        <mlmauszahlungprojekt>
          <value>0</value>
        </mlmauszahlungprojekt>
        <sponsor/>
        <geworbenvon/>
        <logfile/>
        <kalender_aufgaben/>
        <verrechnungskontoreisekosten>
          <value>0</value>
        </verrechnungskontoreisekosten>
        <usereditid/>
        <useredittimestamp>
          <value>0000-00-00 00:00:00</value>
        </useredittimestamp>
        <rabatt/>
        <provision/>
        <rabattinformation/>
        <rabatt1/>
        <rabatt2/>
        <rabatt3/>
        <rabatt4/>
        <rabatt5/>
        <internetseite/>
        <bonus1/>
        <bonus1_ab/>
        <bonus2/>
        <bonus2_ab/>
        <bonus3/>
        <bonus3_ab/>
        <bonus4/>
        <bonus4_ab/>
        <bonus5/>
        <bonus5_ab/>
        <bonus6/>
        <bonus6_ab/>
        <bonus7/>
        <bonus7_ab/>
        <bonus8/>
        <bonus8_ab/>
        <bonus9/>
        <bonus9_ab/>
        <bonus10/>
        <bonus10_ab/>
        <rechnung_periode/>
        <rechnung_anzahlpapier/>
        <rechnung_permail/>
        <titel/>
        <anschreiben/>
        <nachname/>
        <arbeitszeitprowoche>
          <value>0.00</value>
        </arbeitszeitprowoche>
        <folgebestaetigungsperre>
          <value>0</value>
        </folgebestaetigungsperre>
        <verein_mitglied_seit/>
        <verein_mitglied_bis/>
        <verein_mitglied_aktiv/>
        <verein_spendenbescheinigung>
          <value>0</value>
        </verein_spendenbescheinigung>
        <freifeld4/>
        <freifeld5/>
        <freifeld6/>
        <freifeld7/>
        <freifeld8/>
        <freifeld9/>
        <freifeld10/>
        <rechnung_papier>
          <value>0</value>
        </rechnung_papier>
        <angebot_cc/>
        <auftrag_cc/>
        <rechnung_cc/>
        <gutschrift_cc/>
        <lieferschein_cc/>
        <bestellung_cc/>
        <angebot_fax_cc/>
        <auftrag_fax_cc/>
        <rechnung_fax_cc/>
        <gutschrift_fax_cc/>
        <lieferschein_fax_cc/>
        <bestellung_fax_cc/>
        <abperfax>
          <value>0</value>
        </abperfax>
        <abpermail/>
        <kassiereraktiv>
          <value>0</value>
        </kassiereraktiv>
        <kassierernummer/>
        <kassiererprojekt>
          <value>0</value>
        </kassiererprojekt>
        <portofreilieferant_aktiv>
          <value>0</value>
        </portofreilieferant_aktiv>
        <portofreiablieferant>
          <value>0.00</value>
        </portofreiablieferant>
        <mandatsreferenzart/>
        <mandatsreferenzwdhart/>
        <serienbrief>
          <value>0</value>
        </serienbrief>
        <lieferantennummerbeikunde/>
        <lead>
          <value>0</value>
        </lead>
        <geburtstagkalender>
          <value>0</value>
        </geburtstagkalender>
        <zahlungsweiseabo/>
        <bundesland/>
        <liefersperredatum/>
        <mandatsreferenzhinweis/>
        <geburtstagskarte>
          <value>0</value>
        </geburtstagskarte>
        <kundennummer_buchhaltung/>
        <lieferantennummer_buchhaltung/>
        <mlmintranetgesamtestruktur>
          <value>0</value>
        </mlmintranetgesamtestruktur>
        <rechnung_umsatz_netto>
          <value>1219.24</value>
        </rechnung_umsatz_netto>
        <gutschrift_umsatz_netto/>
      </adresse>
      <adresse>
        ...
      </adresse>
      <anz_gesamt>6771</anz_gesamt>
      <anz_result>10</anz_result>
    </adressen>
  </xml>
</response>
Beispiel 2 Anfrage AdresseListeGet mit Funktionen
<?php

$hash = generateHash();

$xml = "<order>
          <field>name</field>
          <desc>0</desc>
        </order>
        <limit>10</limit>
        <offset>0</offset>
        <summierung>    
          <beleg>rechnung</beleg>
        </summierung>
        <umsatzvon>2800</umsatzvon>
        <search>
          <suche>".base64_encode('86150')."</suche>
          <field>plz</field>
        </search>        
      ";

$output_xml = SendRequest("AdresseListeGet",$xml,$hash); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash)
{

  $url = 'http://192.168.0.28/wawision/17.4/www/index.php?module=api&action='.$methodname.'&hash='.$hash;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispiel 2 Antwort AdresseListeGet
<response>
  <status>
    <action>AdresseListeGet</action>
    <message>OK</message>
    <messageCode>1</messageCode>
  </status>
  <xml>
    <adressen>
      <adresse>
        <id>
          <value>1085</value>
        </id>
        <typ/>
        <marketingsperre/>
        <trackingsperre>
          <value>0</value>
        </trackingsperre>
        <rechnungsadresse>
          <value>0</value>
        </rechnungsadresse>
        <sprache/>
        <name>
          <value>Testkunde</value>
        </name>
        <abteilung/>
        <unterabteilung/>
        <ansprechpartner/>
        <land>
          <value>DE</value>
        </land>
        <strasse>
          <value>Musterstr. 1</value>
        </strasse>
        <ort>
          <value>Musterstadt</value>
        </ort>
        <plz>
          <value>86150</value>
        </plz>
        <telefon/>
        <telefax/>
        <mobil/>
        <email>
          <value>email@example.com</value>
        </email>
        <ustid/>
        <ust_befreit>
          <value>0</value>
        </ust_befreit>
        <passwort_gesendet>
          <value>0</value>
        </passwort_gesendet>
        <sonstiges/>
        <adresszusatz/>
        <kundenfreigabe>
          <value>0</value>
        </kundenfreigabe>
        <steuer/>
        <logdatei>
          <value>2016-09-23 12:01:26</value>
        </logdatei>
        <kundennummer>
          <value>10476</value>
        </kundennummer>
        <lieferantennummer/>
        <mitarbeiternummer/>
        <konto/>
        <blz/>
        <bank/>
        <inhaber/>
        <swift/>
        <iban/>
        <waehrung/>
        <paypal/>
        <paypalinhaber/>
        <paypalwaehrung/>
        <projekt>
          <value>1</value>
        </projekt>
        <partner>
          <value>0</value>
        </partner>
        <zahlungsweise/>
        <zahlungszieltage/>
        <zahlungszieltageskonto/>
        <zahlungszielskonto/>
        <versandart/>
        <kundennummerlieferant/>
        <zahlungsweiselieferant/>
        <zahlungszieltagelieferant/>
        <zahlungszieltageskontolieferant/>
        <zahlungszielskontolieferant/>
        <versandartlieferant/>
        <geloescht>
          <value>0</value>
        </geloescht>
        <firma>
          <value>1</value>
        </firma>
        <webid/>
        <vorname/>
        <kennung/>
        <sachkonto/>
        <freifeld1/>
        <freifeld2/>
        <freifeld3/>
        <filiale/>
        <vertrieb/>
        <innendienst/>
        <verbandsnummer/>
        <abweichendeemailab/>
        <portofrei_aktiv/>
        <portofreiab>
          <value>0.00</value>
        </portofreiab>
        <infoauftragserfassung/>
        <mandatsreferenz/>
        <mandatsreferenzdatum/>
        <mandatsreferenzaenderung>
          <value>0</value>
        </mandatsreferenzaenderung>
        <glaeubigeridentnr/>
        <kreditlimit>
          <value>0.00</value>
        </kreditlimit>
        <tour>
          <value>0</value>
        </tour>
        <zahlungskonditionen_festschreiben/>
        <rabatte_festschreiben/>
        <mlmaktiv/>
        <mlmvertragsbeginn/>
        <mlmlizenzgebuehrbis/>
        <mlmfestsetzenbis/>
        <mlmfestsetzen>
          <value>0</value>
        </mlmfestsetzen>
        <mlmmindestpunkte>
          <value>0</value>
        </mlmmindestpunkte>
        <mlmwartekonto>
          <value>0.00</value>
        </mlmwartekonto>
        <abweichende_rechnungsadresse>
          <value>0</value>
        </abweichende_rechnungsadresse>
        <rechnung_vorname/>
        <rechnung_name/>
        <rechnung_titel/>
        <rechnung_typ/>
        <rechnung_strasse/>
        <rechnung_ort/>
        <rechnung_plz/>
        <rechnung_ansprechpartner/>
        <rechnung_land/>
        <rechnung_abteilung/>
        <rechnung_unterabteilung/>
        <rechnung_adresszusatz/>
        <rechnung_telefon/>
        <rechnung_telefax/>
        <rechnung_anschreiben/>
        <rechnung_email/>
        <geburtstag/>
        <rolledatum/>
        <liefersperre/>
        <liefersperregrund/>
        <mlmpositionierung/>
        <steuernummer/>
        <steuerbefreit/>
        <mlmmitmwst/>
        <mlmabrechnung/>
        <mlmwaehrungauszahlung/>
        <mlmauszahlungprojekt>
          <value>0</value>
        </mlmauszahlungprojekt>
        <sponsor/>
        <geworbenvon/>
        <logfile/>
        <kalender_aufgaben/>
        <verrechnungskontoreisekosten>
          <value>0</value>
        </verrechnungskontoreisekosten>
        <usereditid/>
        <useredittimestamp>
          <value>0000-00-00 00:00:00</value>
        </useredittimestamp>
        <rabatt/>
        <provision/>
        <rabattinformation/>
        <rabatt1/>
        <rabatt2/>
        <rabatt3/>
        <rabatt4/>
        <rabatt5/>
        <internetseite/>
        <bonus1/>
        <bonus1_ab/>
        <bonus2/>
        <bonus2_ab/>
        <bonus3/>
        <bonus3_ab/>
        <bonus4/>
        <bonus4_ab/>
        <bonus5/>
        <bonus5_ab/>
        <bonus6/>
        <bonus6_ab/>
        <bonus7/>
        <bonus7_ab/>
        <bonus8/>
        <bonus8_ab/>
        <bonus9/>
        <bonus9_ab/>
        <bonus10/>
        <bonus10_ab/>
        <rechnung_periode/>
        <rechnung_anzahlpapier/>
        <rechnung_permail/>
        <titel/>
        <anschreiben/>
        <nachname/>
        <arbeitszeitprowoche>
          <value>0.00</value>
        </arbeitszeitprowoche>
        <folgebestaetigungsperre>
          <value>0</value>
        </folgebestaetigungsperre>
        <verein_mitglied_seit/>
        <verein_mitglied_bis/>
        <verein_mitglied_aktiv/>
        <verein_spendenbescheinigung>
          <value>0</value>
        </verein_spendenbescheinigung>
        <freifeld4/>
        <freifeld5/>
        <freifeld6/>
        <freifeld7/>
        <freifeld8/>
        <freifeld9/>
        <freifeld10/>
        <rechnung_papier>
          <value>0</value>
        </rechnung_papier>
        <angebot_cc/>
        <auftrag_cc/>
        <rechnung_cc/>
        <gutschrift_cc/>
        <lieferschein_cc/>
        <bestellung_cc/>
        <angebot_fax_cc/>
        <auftrag_fax_cc/>
        <rechnung_fax_cc/>
        <gutschrift_fax_cc/>
        <lieferschein_fax_cc/>
        <bestellung_fax_cc/>
        <abperfax>
          <value>0</value>
        </abperfax>
        <abpermail/>
        <kassiereraktiv>
          <value>0</value>
        </kassiereraktiv>
        <kassierernummer/>
        <kassiererprojekt>
          <value>0</value>
        </kassiererprojekt>
        <portofreilieferant_aktiv>
          <value>0</value>
        </portofreilieferant_aktiv>
        <portofreiablieferant>
          <value>0.00</value>
        </portofreiablieferant>
        <mandatsreferenzart/>
        <mandatsreferenzwdhart/>
        <serienbrief>
          <value>0</value>
        </serienbrief>
        <lieferantennummerbeikunde/>
        <lead>
          <value>0</value>
        </lead>
        <geburtstagkalender>
          <value>0</value>
        </geburtstagkalender>
        <zahlungsweiseabo/>
        <bundesland/>
        <liefersperredatum/>
        <mandatsreferenzhinweis/>
        <geburtstagskarte>
          <value>0</value>
        </geburtstagskarte>
        <kundennummer_buchhaltung/>
        <lieferantennummer_buchhaltung/>
        <mlmintranetgesamtestruktur>
          <value>0</value>
        </mlmintranetgesamtestruktur>
        <rechnung_umsatz_netto>
          <value>3400.87</value>
        </rechnung_umsatz_netto>
      </adresse>
      <anz_gesamt>1</anz_gesamt>
      <anz_result>1</anz_result>
    </adressen>
  </xml>
</response>

Verwalten von Dateien: DateiList, DateiHeader, DateiDownload

Mit DateiList können Sie sich Dateien die sich in WaWision befinden anzeigen lassen. Zur Auswahl stehen Ihnen hierbei zwei Parameter:
  • <parameter> Entspricht hier der ID des jeweiligen Objekts.
  • <objekt>Hier müssen Sie Angeben von welchem Objekt Sie die Dateien möchten, wie z.B. adressen, auftrag oder rechnung
Möchten Sie bereits hochgeladene Dateien wieder herunterladen, können Sie dies in Kombination von DateiHeader und DateiDownload umsetzen. Beispiel Anfrage DateiList mit Funktionen
<?php
$hash = generateHash();

$xml = "<parameter>1</parameter>
        <objekt>Adressen</objekt>";


$output_xml = SendRequest("DateiList",$xml,$hash);

 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
 
function SendRequest($methodname,$xml,$hash)
{
 
    $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash;
 
    $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;
}
 
$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";
 
?>
Beispiel Antwort DateiList
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>DateiList</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <Datei>
         <titel>Arbeitsnachweis Testfirma GmbH von 2017-02-23 bis 2017-02-23</titel>
         <subjekt>anhang</subjekt>
         <version>1</version>
         <ersteller>Testfirma GmbH</ersteller>
         <bemerkung>Initiale Version</Bemerkung>
         <datum>2017-03-23</datum>
         <id>16</id>
      </Datei>
      <Datei>
         <titel>Arbeitsnachweis Testfirma GmbH von 2017-02-22 bis 2017-02-22</titel>
         <subjekt>anhang</subjekt>
         <version>1</version>
         <ersteller>Testfirma GmbH</ersteller>
         <bemerkung>Initiale Version</bemerkung>
         <datum>2017-03-22</datum>
         <id>17</id>
      </Datei>      
   </xml>
</response>
Beispiel Anfrage DateiHeader + DateiDownload mit Funktionen
<?php
$hash = generateHash();

$xml = "";

$id = 20;

$headera =  explode("\n",file_get_contents('http://192.168.0.28/wawision/16.3/www/index.php?module=api&action=DateiHeader&hash='.$hash.'&id='.$id));

foreach($headera as $head){
  header($head);
}
echo file_get_contents('http://192.168.0.28/wawision/16.3/www/index.php?module=api&action=DateiDownload&hash='.$hash.'&id='.$id);

exit;

 
function generateHash()
{
 
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";
 
    for($i = 0; $i <= 200; $i++) 
        $hash = sha1($hash . $initKey . $remoteDomain . $date);
 
    return $hash;
}
Beispiel Antwort DateiHeader + DateiDownload
Das typische Fenster zum Öffnen oder Speichern von Dateien öffnet sich.

Sonderfunktionen von Spezialmodulen

XML Artikelkontingente

Zum Abfragen der Kontingente gibt es zwei Möglichkeiten. Mit und ohne die Parameter von und bis. Ohne die beiden Parameter erhält man die Artikelkontingent Liste ab dem heutigen Datum. Mit den Parametern erhält man eine Liste mit den gebuchten Artikeln in dem Zeitbereich von Aufträgendie den Status freigegeben haben.
<?php
 include("../api.php");
 include("../config.php");
 global $remotedomain,$initkey,$url;

 $hash = generateHash($initkey,$remotedomain);


 $nummer = "700245";


 $von = "2015-07-01";
 $bis = "2015-07-20";

 header('Content-Type: application/xml; charset=utf-8');
 echo SendRequest($url,"ArtikelkontingenteGet","",$hash,"&nummer=".$nummer."&von=".$von."&bis=".$bis);


?>
<?xml version="1.0" encoding="UTF-8"?>
      <response>
      <status>
      <action>ArtikelkontingenteGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
      </status>
      <xml>
       <artikelkontingente>
         <kontingent>
           <gebucht>103</gebucht>
           <menge>11.00</menge>
           <datum>2015-07-13</datum>
         </kontingent>
         <kontingent>
           <gebucht>5</gebucht>
           <menge>5.00</menge>
           <datum>2015-07-17</datum>
         </kontingent>
       </artikelkontingente>
      </xml>

Anfrage von Daten aus Export Vorlagen: ExportVorlageGet

Um Daten aus Export Vorlagen abfragen zu können, muss bereits eine Export Vorlage angelegt sein (Anleitung zu Export Vorlagen). Verfügbare Daten die abgefragt werden können:
  • Adressen
  • Angebote
  • Aufträge
  • Ansprechpartner
  • Artikel
  • Gutschriften
  • Rechnungen
  • Lieferscheine
  • Bestellungen
  • Angebotspositionen
  • Auftragspositionen
  • Gutschriftspositionen
  • Rechnungspositionen
  • Lieferscheinpositionen
  • Bestellungspositionen
Damit die Daten über die API abrufbar sind, muss im Bearbeitungsmodus der gewünschten Export Vorlage der Haken API Freigabe aktiviert sein. :entwickler:apifreigabe.png?nolink Ebenfalls im Bearbeitungsmodus der Export Vorlage muss der Haken CSV Beschriftung aktiviert werden, damit die Spaltennamen als XML Tagnamen verwendet werden, denn sonst funktioniert die Ausgabe als XML nicht. :entwickler:csvbeschriftung.png?nolink Zur Abfrage der Daten stehen Ihnen hierbei verschiedene GET Parameter zur Auswahl:
  • id => Entspricht hier der ID der jeweiligen Export Vorlage (Pflichtfeld).
  • von => Datumsangabe (im Format dd.mm.yy), ab wann die gewünschten Daten abgefragt werden sollen (optional). Verfügbar bei Angeboten, Aufträgen, Gutschriften, Rechnungen, Lieferscheine, Bestellungen und deren Positionen.
  • bis => Datumsangabe (im Format dd.mm.yy), bis wann die gewünschten Daten abgefragt werden sollen (optional). Verfügbar bei Angeboten, Aufträgen, Gutschriften, Rechnungen, Lieferscheine, Bestellungen und deren Positionen.
  • projekt => Gibt nur die Daten zum passenden Projekt zurück (optional). Verfügbar bei Adressen, Angeboten, Aufträgen, Artikel, Gutschriften, Rechnungen, Lieferscheine, Bestellungen und deren dazugehörige Belegpositionen.
Welche Werte der Export Vorlage zurückgeliefert werden, hängt von den festgelegten CSV Feldern in der Export Vorlage ab. Beispiel Anfrage ExportVorlageGet mit Funktionen
<?php

$hash = generateHash();

$xml = "";

$id = "1";
$projekt = "";
$von = "";
$bis = "";

$output_xml = SendRequest("ExportVorlageGet",$xml,$hash,$id,$projekt,$von,$bis); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id,$projekt,$von,$bis)
{

  $url = 'http://192.168.0.28/wawision/16.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id.'&projekt='.$projekt.'&von='.$von.'&bis='.$bis;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispiel Antwort ExportVorlageGet für Artikel
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>ExportVorlageGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <items>
         <item>
            <nummer>1000001</nummer>
            <name_de>Tastatur</name_de>
            <name_en/>
            <beschreibung_de/>
            <beschreibung_en/>
            <kurztext_de/>
            <kurztext_en/>
            <internerkommentar/>
            <hersteller/>
            <herstellernummer/>
            <herstellerlink/>
            <ean/>
            <systemid>1</systemid>
         </item>
         <item>
            <nummer>1000002</nummer>
            <name_de>Tasten</name_de>
            <name_en/>
            <beschreibung_de/>
            <beschreibung_en/>
            <kurztext_de/>
            <kurztext_en/>
            <internerkommentar/>
            <hersteller/>
            <herstellernummer/>
            <herstellerlink/>
            <ean/>
            <systemid>2</systemid>
         </item>
         <item>
            <nummer>1000003</nummer>
            <name_de>USB Maus</name_de>
            <name_en/>
            <beschreibung_de/>
            <beschreibung_en/>
            <kurztext_de/>
            <kurztext_en/>
            <internerkommentar/>
            <hersteller/>
            <herstellernummer/>
            <herstellerlink/>
            <ean/>
            <systemid>3</systemid>
         </item>
      </items>
   </xml>
</response>

Anfrage von Daten aus Berichten: BerichteGet

BerichteGet liefert das Ergebnis der SQL Abfrage aus dem Strukturfeld eines Berichts zurück. Hierzu muss die ID des Berichts als GET Parameter übergeben werden. Beispiel Anfrage BerichteGet mit Funktionen
<?php

$hash = generateHash();

$xml = "";

$id = "1";

$output_xml = SendRequest("BerichteGet",$xml,$hash,$id); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash,$id)
{

  $url = 'http://192.168.0.28/wawision/17.3/www/index.php?module=api&action='.$methodname.'&hash='.$hash.'&id='.$id;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispiel Antwort BerichteGet
<?xml version="1.0" encoding="UTF-8"?>
<response>
   <status>
      <action>BerichteGet</action>
      <message>OK</message>
      <messageCode>1</messageCode>
   </status>
   <xml>
      <items>
         <item>
            <name>Kunde 1</name>
            <kundennummer>10000</kundennummer>
         </item>
         <item>
            <name>Kunde 2</name>
            <kundennummer>10001</kundennummer>
         </item>
      </items>
   </xml>
</response>

Anfrage von Daten aus Artikeln mit Hilfe von Filtern: ArtikelList

ArtikelList liefert als Ergebnis alle Artikelinformationen zu den Artikeln die auf Ihre Suchkriterien zutreffen. Folgende Parameter stehen Ihnen zur Verfügung:
  • Innerhalb des Tags <order> können Sie das Tag <field> angeben. Innerhalb von <field> steht die Spaltenbezeichnung aus der Artikeltabelle der Datenbank, mit der Sie Ihr Ergebnis sortieren lassen möchten.
  • Hierzu kann ebenfalls innerhalb des Tags <order> das Tag <desc> angegeben werden. Bei 1 wird absteigend sortiert, bei 0 aufsteigend. Geben Sie <desc> nicht an, wird standardmäßig aufsteigend nach dem Feld sortiert, dass Sie in <field> angegeben haben.
  • Mit dem Tag <limit> können Sie Ihre Auflistung der Ergebnisse auf eine bestimmte Anzahl beschränken.
  • Das Tag <offset> kann nur in Kombination mit <limit> verwendet werden, um Ihre Auflistung der Ergebnisse auf eine bestimmte Anzahl zu beschränken. Z.B. zeigt <limit>10</limit> und <offset>0</offset> alle Einträge von 0 bis 10.
  • Neben den oben genannten Tags können Sie als Tag jede Spaltenbezeichnung aus der Artikeltabelle der Datenbank verwenden um Ihre Suche weiter einzuschränken, z.B. sucht <name_de>Schraube</name_de> nach den Artikeln die im Namen Schraube beinhalten.
Beispiel Anfrage ArtikelList mit Funktionen
<?php

$hash = generateHash();

$xml = "<order>   
          <field>name_de</field>
          <desc>1</desc> 
        </order> 
        <limit>10</limit> 
        <offset>0</offset>
        <name_de>Apfel</name_de>
        ";


$id = "";

$output_xml = SendRequest("ArtikelList",$xml,$hash); 

function generateHash()
{
    
    $initKey = 'neijfj38734hujfie';
    $remoteDomain = 'http://192.168.0.28';
    $date = gmdate('dmY');
    $hash = "";

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

function SendRequest($methodname,$xml,$hash)
{

  $url = 'http://192.168.0.28/wawision/17.4/www/index.php?module=api&action='.$methodname.'&hash='.$hash;

  $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;
}

$obj = simplexml_load_string($output_xml);
echo "<pre>";
print_r($obj);
echo "</pre>";

?>
Beispiel Antwort ArtikelList
<?xml version="1.0" encoding="UTF-8"?>
<response>
  <status>
    <action>ArtikelList</action>
    <message>OK</message>
    <messageCode>1</messageCode>
  </status>
  <xml>
    <items>
      <item>
        <id>7</id>
        <typ>produkt</typ>
        <nummer>1000006</nummer>
        <checksum/>
        <projekt>1</projekt>
        <inaktiv/>
        <ausverkauft>0</ausverkauft>
        <warengruppe/>
        <name_de>Apfelkuchen</name_de>
        <name_en/>
        <kurztext_de/>
        <kurztext_en/>
        <beschreibung_de/>
        <beschreibung_en/>
        <uebersicht_de/>
        <uebersicht_en/>
        <links_de/>
        <links_en/>
        <startseite_de/>
        <startseite_en/>
        <standardbild/>
        <herstellerlink/>
        <hersteller/>
        <teilbar/>
        <nteile/>
        <seriennummern>keine</seriennummern>
        <lager_platz>1</lager_platz>
        <lieferzeit/>
        <lieferzeitmanuell/>
        <sonstiges/>
        <gewicht/>
        <endmontage/>
        <funktionstest/>
        <artikelcheckliste/>
        <stueckliste>1</stueckliste>
        <juststueckliste>0</stueckliste>
        <barcode/>
        <hinzugefuegt/>
        <pcbdecal/>
        <lagerartikel>1</lagerartikel>
        <porto>0</porto>
        <chargenverwaltung>0</chargenverwaltung>
        <provisionsartikel>0</provisionsartikel>
        <gesperrt>0</gesperrt>
        <sperrgrund/>
        <geloescht>0</geloescht>
        <gueltigbis>0000-00-00</gueltigbis>
        <umsatzsteuer>normal</normal>
        <klasse/>
        <adresse>0</adresse>
        <shopartikel>0</shopartikel>
        <unishopartikel>0</unishopartikel>
        <journalshopartikel>0</journalshopartikel>
        <shop>0</shop>
        <katalog>0</katalog>
        <katalogtext_de/>
        <katalogtext_en/>
        <katalogbezeichnung_de/>
        <katalogbezeichnung_en/>
        <neu>0</neu>
        <topseller>0</topseller>
        <startseite>0</startseite>
        <wichtig>0</wichtig>
        <mindestlager>0</mindestlager>
        <mindestbestellung>0</mindestbestellung>
        <partnerprogramm_sperre>0</partnerprogramm_sperre>
        <internerkommentar/>
        <intern_gesperrt>0</intern_gesperrt>
        <intern_gesperrtuser>0</intern_gesperrtuser>
        <intern_gesperrtgrund/>
        <inbearbeitung>0</inbearbeitung>
        <inbearbeitunguser>0</inbearbeitunguser>
        <cache_lagerplatzinhaltmenge>0</cache_lagerplatzinhaltmenge>
        <internkommentar/>
        <firma>1</firma>
        <logdatei>2017-10-18 08:27:17</logdatei>
        <anabregs_text>Ein Apfelkuchen</anabregs_text>
        <autobestellung>0</autobestellung>
        <produktion>0</produktion>
        <herstellernummer>A232</herstellernummer>
        <restmenge>0</restmenge>
        <mlmdirektpraemie>0.00</mlmdirektpraemie>
        <keineeinzelartikelanzeigen>0</keineeinzelartikelanzeigen>
        <mindesthaltbarkeitsdatum>0</mindesthaltbarkeitsdatum>
        <letzteseriennummer/>
        <individualartikel>0</individualartikel>
        <keinrabatterlaubt>0</keinrabatterlaubt>
        <rabatt>0</rabatt>
        <rabatt_prozent>0.00</rabatt_prozent>
        <geraet>0</geraet>
        <serviceartikel>0</serviceartikel>
        <autoabgleicherlaubt>0</autoabgleicherlaubt>
        <pseudopreis>0.00</pseudopreis>
        <freigabenotwendig>0</freigabenotwendig>
        <freigaberegel/>
        <nachbestellt>0</nachbestellt>
        <ean/>
        <mlmpunkte>0.00</mlmpunkte>
        <mlmbonuspunkte>0.00</mlmbonuspunkte>
        <mlmkeinepunkteeigenkauf>0</mlmkeinepunkteeigenkauf>
        <shop2>0</shop2>
        <shop3>0</shop3>
        <usereditid>1</usereditid>
        <useredittimestamp>2017-10-18 08:27:17</useredittimestamp>
        <freifeld1/>
        <freifeld2/>
        <freifeld3/>
        <freifeld4/>
        <freifeld5/>
        <freifeld6/>
        <einheit/>
        <webid/>
        <lieferzeitmanuell_en/>
        <variante>0</variante>
        <variante_von>0</variante_von>
        <produktioninfo/>
        <sonderaktion/>
        <sonderaktion_en>
        <autolagerlampe>0</autolagerlampe>
        <leerfeld/>
        <zolltarifnummer/>
        <herkunftsland/>
        <laenge>0.00</laenge>
        <breite>0.00</breite>
        <hoehe>0.00</hoehe>
        <gebuehr>0</gebuehr>
        <pseudolager/>
        <downloadartikel>0</downloadartikel>
        <matrixprodukt>0</matrixprodukt>
        <steuer_erloese_inland_normal/>
        <steuer_aufwendung_inland_normal/>
        <steuer_erloese_inland_ermaessigt/>
        <steuer_aufwendung_inland_ermaessigt/>
        <steuer_erloese_inland_steuerfrei/>
        <steuer_aufwendung_inland_steuerfrei/>
        <steuer_erloese_inland_innergemeinschaftlich/>
        <steuer_aufwendung_inland_innergemeinschaftlich/>
        <steuer_erloese_inland_eunormal/>
        <steuer_erloese_inland_nichtsteuerbar/>
        <steuer_erloese_inland_euermaessigt/>
        <steuer_aufwendung_inland_nichtsteuerbar/>
        <steuer_aufwendung_inland_eunormal/>
        <steuer_aufwendung_inland_euermaessigt/>
        <steuer_erloese_inland_export/>
        <steuer_aufwendung_inland_import/>
        <steuer_art_produkt>0</steuer_art_produkt>
        <steuer_art_produkt_download>0</steuer_art_produkt_download>
        <metadescription_de/>
        <metadescription_en/>
        <metakeywords_de/>
        <metakeywords_en/>
        <anabregs_text_en/>
        <externeproduktion>0</externeproduktion>
        <bildvorschau/>
        <inventursperre>0</inventursperre>
        <variante_kopie>0</variante_kopie>
        <unikat>0</unikat>
        <generierenummerbeioption>0</generierenummerbeioption>
        <allelieferanten>0</allelieferanten>
        <tagespreise>0</tagespreise>
        <rohstoffe>0</rohstoffe>
        <provisionssperre>0</provisionssperre>
        <dienstleistung>0</dienstleistung>
        <inventurekaktiv>0</inventurekaktiv>
        <inventurek>0.00000000</inventurek>
        <hinweis_einfuegen/>
        <steuertext_innergemeinschaftlich/> 
        <steuertext_export/> 
        <formelmenge/> 
        <formelpreis/> 
        <freifeld7/> 
        <freifeld8/> 
        <freifeld9/> 
        <freifeld10/> 
        <freifeld11/> 
        <freifeld12/> 
        <freifeld13/> 
        <freifeld14/>
        <freifeld15/> 
        <freifeld16/>
        <freifeld17/>
        <freifeld18/> 
        <freifeld19/>
        <freifeld20/>
        <ursprungsregion/>
        <bestandalternativartikel>0</bestandalternativartikel>
        <metatitle_de/>
        <metatitle_en/>
        <vkmeldungunterdruecken>0</vkmeldungunterdruecken>
        <altersfreigabe/>
        <unikatbeikopie>0</unikatbeikopie>
        <steuergruppe>0</steuergruppe>
        <keinskonto>0</keinskonto>
        <berechneterek>0.0000</berechneterek>
        <verwendeberechneterek>0</verwendeberechneterek>
        <berechneterekwaehrung/>
      </item>
    </items>
  </xml>
</response>
War der Artikel hilfreich?
Vielen Dank für Ihr Feedback!

Made with ❤ in Dasing und Hamburg @zwetschke.de