Aktive Actions
  • 26 Sep 2024
  • 7 Minuten zu lesen
  • Dunkel
    Licht
  • pdf

Aktive Actions

  • Dunkel
    Licht
  • pdf

Artikel-Zusammenfassung

Aktive (Interaktive) Actions: Initialisiert wird eine aktive Action immer zuerst über den passiven Weg. Schlussendlich gibt es für aktive Actions aber immer eine Benutzerinteraktion in einem Browser oder iFrame.

Actions mit Browser-Interaktion werden aus einem Web-Browser-Control (z.B. WebView2 oder CEF unter Windows) aufgerufen.

Initialisieren einer Aktiven Action

Um eine aktive Action zu initialisieren, ist zuerst ein passiver Call notwendig:

  1. Das JSON, das die Action definiert wird zuerst an den WebService gesendet.

  2. Als Response wird ein Action Token zurückgegeben.

  3. Dieser Token wird dann für den URL-Aufruf im Browser Control der Fremdsoftware verwendet und an die Basis URL mit dem neuen URL-Parameter &ActionToken=<TokenNummer> angehängt.

Authentifizierung:

  • Im initialen WebService-Call erfolgt die Authentifizierung am WebServer (z.B. per Digest- oder Basic-Auth - je nachdem was der Betreiber der moveIT CONBOX Installation definiert).

  • Zusätzlich erfolgt die Identifizierung des Users per User-Code und UserAPIKey (🆕) im JSON-Body.

  • Für den interaktiven Frontend-Aufruf ist keine weitere Authentifizierung erforderlich.

Rückübergabe der Daten an Fremdsystem

Je nach ausgeführten Actions wird eine Rückübergabe von Informationen nach Abschluss der Action an das Fremdsystem benötigt, damit diese dort gespeichert werden können.

Dazu stehen zwei JavaScript Funktionen zur Verfügung (JS-Funktionen können testweise in der Browser Konsole ausgeführt werden):

CONBOX.IsShownFinishMessage();

Diese Abfrage kann zyklisch vom Browser Control des Fremdsystems ausgeführt werden. Damit kann abgefragt werden, ob die Konfiguration abgeschlossen ist. Gibt TRUE oder FALSE zurück.

CONBOX.GetCONBOXData();

Diese Abfrage kann dann ausgeführt werden, wenn die Konfiguration abgeschlossen wurde. Es kommt, je nach Action-Type ein definiertes JSON zurück, das sämtliche benötigte Infos für das Fremdsystem beinhaltet. Die Daten, die je Action zurück übergeben werden, sind bei der jeweiligen Action angeführt.

Mehrsprachigkeit

Actions mit Browser Interaktion können mit dem URL-Parameter &Lng=[Sprache] (ISO 639-1 Sprachcode) aufgerufen werden. Dabei wird das System in der angegeben Sprache aufgerufen – insofern dieses vom Betreiber der moveIT CONBOX Umgebung unterstützt wird.

Damit auch die Stammdaten übersetzt angezeigt werden, muss dies auch vom Stammdatenhersteller in den Stammdaten übersetzt werden.


Add

Fügt dem Beleg eine Position hinzu bzw. erzeugt den Beleg, falls dieser noch nicht bestehen sollte.

Dabei gibt es mehrere Varianten, abhängig von dem Feld <WarNbr >, also der Modellnummer in moveIT.

  • WarNbr = leer

    eKatalog öffnet sich

  • WarNbr = eindeutig

    der Konfigurator öffnet sich für das Modell

  • WarNbr = mehrdeutig / WarNbr = unbekannt

    eKatalog öffnet sich, gefiltert nach dem Wert

  • WarNbr = Lieferant

    eKatalog öffnet sich, gefiltert auf den Lieferant

  • Typ: HTTP POST

  • ContentType: application/json

Request - Payload Body

{
    "Service": "CONBOX",
    "Language": "DE",
    "UserCode": "<Usercode>",
    "UserAPIKey": "7546b3a7-73e8-40a7-a7b6-645b4d648ac1",
    "ServiceData": {
        "Action": "Add",
        "Amount": 1,                    // Optional
        "DocNbr": "Test01",             // Optional
        "DocTyp": 2,                    // Optional
        "PosNbr": "Pos01",              // Optional
        "WarNbr": "TestArticle",
        "PosImgWidth": 300,             // Optional
        "PosImgHeight": 300,            // Optional
        "ConfiguratorParams": [{        // Optional
            "ParamName": "Hoehe",       
            "ParamValue": 999           
        }, {
            "ParamName": "Breite",     
            "ParamValue": 999          
        }] 
    }
}

Response beim initialisieren

{
    "Success": true,
    "ErrorMessage": "",
    "ServiceReturnData": {
        "ActionToken": "891a3a7-69e8-1cc7-a5c1-648b4d648df2",
    }
}

Response nach Abschluss der Konfiguration durch JS Funktion

CONBOX.GetCONBOXData();

{
    "Success": true,
    "InfoMessage": "",
    "ErrorMessage": "";
    "Action": "Add",
    "PositionGUID": "550e8400-e29b-41d4-a716-446655440000";
    "DocTyp": 2,
    "WarNbr": "TestArticle",
    "WarDsc": "TestArticle Beschreibung",
    "WarDscEx1": "TestArticle Beschreibung Ex1",
    "WarDscEx2": "TestArticle Beschreibung Ex1",
    "FCoPrc": 123.45,
    "Amount": 1,
    "DocNbr": "Test01",
    "PosNbr": "Pos01",
    "ListPrice": 1234.56,
    "ProductText": "",
    "ProductTextRTF": "",
    "PrdGrp": "ET",                
    "PrGrpDSC": "Ersatzteil",
    "PosImg": [Base64],
    "PosImgURL": "http://...",
    "ConfiguratorParams": [{
        "ParamName": "Hoehe",
        "ParamValue": 999
    }, {
        "ParamName": "Breite",
        "ParamValue": 999
    }]
}


Copy

Kopiert eine bestehende Position und öffnet das CONBOX-Konfigurator-Frontend für das Editieren der neuen Position (sofern es sich um ein konfigurierbares Modell handelt).

<PosNbr> muss eindeutig sein. Die dort angegebene Positionsnummer des Fremdsystems darf im Beleg noch nicht verwendet worden sein, da sie sonst für die Bestellung nicht eindeutig wäre. An das Fremdsystem wird eine neue Position zurückgegeben.

Copy per PositionGUID

Wird die Copy Action oder SilentCopy Action ausgelöst, so kann dies ohne Beleg-Infos und nur mit der GUID einer Position geschehen. Werden keine Beleg-Infos mitgegeben, wird einfach ein neuer Beleg im Hintergrund erstellt und darin die Position kreiert.

  • Typ: HTTP POST

  • ContentType: application/json

Request - Payload Body

{
    "Service": "CONBOX",
    "Language": "DE",
    "UserCode": "<Usercode>",
    "UserAPIKey": "7546b3a7-73e8-40a7-a7b6-645b4d648ac1",
    "ServiceData": {
        "Action": "Copy",
        "Amount": 1,                // Optional
        "SrcDocTyp": 2,		        // Optional
        "SrcDocNbr": "Test01",      // Optional
        "DocNbr": "Test01",         // Optional
        "DocTyp": 2,                // Optional
        "PosNbr": "Pos01",          // Optional
        "SrcPosNbr": "Pos02",       // Optional
        "PositionGUID": "550e8400-e29b-41d4-a716-446655440000",    // Optional
        "WarNbr": "TestArticle",    // Optional
        "PosImgWidth": 300,         // Optional
        "PosImgHeight": 300,        // Optional
        "ConfiguratorParams": [{    // Optional
            "ParamName": "Hoehe",
            "ParamValue": 999
        }, {
            "ParamName": "Breite",
            "ParamValue": 999
        }]
}

Response beim initialisieren

{
    "Success": true,
    "ErrorMessage": "",
    "ServiceReturnData": {
        "ActionToken": "891a3a7-69e8-1cc7-a5c1-648b4d648df2",
    }
}

Response nach Abschluss der Konfiguration durch JS Funktion

CONBOX.GetCONBOXData();

{
    "Success": true,
    "InfoMessage": "",
    "ErrorMessage": "";
    "Action": "Copy",
    "PositionGUID": "550e8400-e29b-41d4-a716-446655440000";
    "DocTyp": 2,
    "WarNbr": "TestArticle",
    "WarDsc": "TestArticle Beschreibung",
    "WarDscEx1": "TestArticle Beschreibung Ex1",
    "WarDscEx2": "TestArticle Beschreibung Ex1",
    "FCoPrc": 123.45,
    "Amount": 1,
    "DocNbr": "Test01",
    "PosNbr": "Pos01",
    "SrcPosNbr": "Pos02",
    "ListPrice": 1234.56,
    "ProductText": "",
    "ProductTextRTF": "",
    "PrdGrp": "ET",                
    "PrGrpDSC": "Ersatzteil",
    "PosImg": [Base64],
    "PosImgURL": "http://..."
    "ConfiguratorParams": [{
        "ParamName": "Hoehe",
        "ParamValue": 999
    }, {
        "ParamName": "Breite",
        "ParamValue": 999
    }]
}


Update

Öffnet das CONBOX-Konfigurator-Frontend für das Editieren einer bestehenden Position (sofern es sich um ein konfigurierbares Modell handelt).

Update per PositionGUID

Wird die Update Action ausgelöst, so kann dies ohne Beleg-Infos und nur mit der GUID einer Position geschehen. Die angegebene Position wird dann in einen neuen, generischen Beleg kopiert und für die Position wird dann das Bearbeiten angestoßen.

  • Typ: HTTP POST

  • ContentType: application/json

Request - Payload Body

{
    "Action": "Update",
    "PositionGUID": "550e8400-e29b-41d4-a716-446655440000";     // Optional
    "Amount": 1,                    // Optional
    "DocNbr": "Test01",             // Optional
    "DocTyp": 2,                    // Optional
    "PosNbr": "Pos01",              // Optional
    "WarNbr": "TestArticle",        // Optional
    "PosImgWidth": 300,             // Optional
    "PosImgHeight": 300,            // Optional
    "ConfiguratorParams": [{        // Optional
        "ParamName": "Hoehe",
        "ParamValue": 999
    }, {
        "ParamName": "Breite",
        "ParamValue": 999
    }], 
    "LVNbr": "Bad 1. OG"            // Optional
}

Response beim initialisieren

{
    "Success": true,
    "ErrorMessage": "",
    "ServiceReturnData": {
        "ActionToken": "891a3a7-69e8-1cc7-a5c1-648b4d648df2",
    }
}

Response nach Abschluss der Konfiguration durch JS Funktion

CONBOX.GetCONBOXData();

{
    "Success": true,
    "InfoMessage": "",
    "ErrorMessage": "";
    "Action": "Update",
    "PositionGUID": "550e8400-e29b-41d4-a716-446655440000";
    "DocTyp": 2,
    "WarNbr": "TestArticle",
    "WarDsc": "TestArticle Beschreibung",
    "WarDscEx1": "TestArticle Beschreibung Ex1",
    "WarDscEx2": "TestArticle Beschreibung Ex1",
    "FCoPrc": 123.45,
    "Amount": 1,
    "DocNbr": "Test01",
    "PosNbr": "Pos01",
    "ListPrice": 1234.56,
    "ProductText": "",
    "ProductTextRTF": "",
    "PrdGrp": "ET",                
    "PrGrpDSC": "Ersatzteil",   
    "PosImg": [Base64],
    "PosImgURL": "http://...",
    "ConfiguratorParams": [{
        "ParamName": "Hoehe",
        "ParamValue": 999
    }, {
        "ParamName": "Breite",
        "ParamValue": 999
    }],
    "LVNbr": "Bad 1. OG"
}


War dieser Artikel hilfreich?