Kundennummern anlegen über die Rest API

Thema wurde von Anonymous, 10. März 2020 erstellt.

  1. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    Hallo, wir würden gerne die Kundennummern über die API einspielen. Beim Versuch einzuspielen hat der Shop unsere Kundennummer ignoriert und die aus dem Nummernkreis verwenden. Wie kann man das abschalten!? Danke!
     
  2. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Es gibt 2 Kundennummern. Eine interne und eine sichtbare. Achte da darauf die richtigen Felder zu bespielen. Bei der internen Kundennummer herrscht keine ganz freie Auswahl.
     
  3. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    Danke. Gibts hier eine Anleitung für die API wie ich die SICHTBARE Kundennummer bespielen kann!?
     
  4. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    #4 markus_wick, 10. März 2020
    Zuletzt bearbeitet: 10. März 2020
    Ich bin mir jetzt nicht ganz sicher, was Wilken mit einer internen und einer sichtbaren Kundennummer meint, aber ich denke er meintg die "id" (dürfte die interne sein) und die "number", das ist wohl die sichtbare. Das Beispiel im Developer Bereich ist wohl etwas irreführend würde ich sagen... (https://developers.gambio.de/docs/3.15.3.0/rest/gambio-gx3-api/reference/customers/create-customers/)

    Die "id" wird von Gambio gesetzt denke ich, damit würde ich nicht rumspielen.
    Die "number" kannst Du selbst setzen.

    Ich würde die Daten des neuen Kunden per API übertragen, dabei die sichtbare Nummer setzen und aus der response die von Gambio gesetzte "id" auslesen, damit diese gleich dem Datensatz in der WaWi mit der Du die API ansteuern willst zugeordnet wird. Die Response ist ja etwa so:

    Code:
    {
        "id": 4,
        "number": "4",
        "gender": "m",
        "firstname": "test",
        "lastname": "kunde",
        "dateOfBirth": "1000-01-01",
        "vatNumber": "",
        "vatNumberStatus": 0,
        "telephone": "",
        "fax": "",
        "email": "wick.markus@web.de",
        "statusId": 2,
        "isGuest": false,
        "addressId": 4,
        "addonValues": null,
        "_links": {
            "address": "https://www.xxx.com/api.php/v2/addresses/4",
            "status": "https://www.xxx.com/api.php/v2/customer_groups/2"
        }
    }
    vorher müsstest Du aber wohl erst die Adresse anlegen (https://developers.gambio.de/docs/3.15.3.0/rest/gambio-gx3-api/reference/addresses/create-address/) und aus der Response die adressID auslesen, damit Du dem neuen Kunden auch eine Adresse zuordnen kannst. Oder anders herum... Das Datenbankschema verwirrt mich manchmal ein wenig o_O

    Code:
    {
        "id": 4,
        "customerId": 4,
        "gender": "m",
        "company": "",
        "firstname": "neuer",
        "lastname": "kunde",
        "street": "kundenstrasse",
        "houseNumber": "8",
        "additionalAddressInfo": "",
        "suburb": "",
        "postcode": "12345",
        "city": "kundenort",
        "countryId": 81,
        "zoneId": 0,
        "class": "",
        "b2bStatus": false,
        "_links": {
            "country": "https://www.xxx.com/api.php/v2/countries/81",
            "customer": "https://www.xxx.com/api.php/v2/customers/4"
        }
    }
     
  5. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    Danke! Probieren wir!
     
  6. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Danke Markus, war richtig so. Ich hab 3 Millionen Sachen auf dem Tisch und war noch nicht zu einer Antwort gekommen...
     
  7. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    hallo sorry ich nochmals.er legt immer noch nach den nummerkreisen an. was machen wir hier falsch?

    Genau das probiere ich auch, nur Gambio ignoriert das tapfer.

    Ich schicke folgendes an Gambio:

    [

    {

    "isGuest": false,

    "statusId": 2,

    "vatNumber": "",

    "vatNumberStatus": 0,

    "telephone": "",

    "fax": "",

    "number": "4711",

    "email": "alice@example.com",

    "password": "sagichnicht",

    "gender": "",

    "firstname": "",

    "lastname": "",

    "address": {

    "company": "Beispielkunde",

    "street": "",

    "houseNumber": "",

    "additionalAddressInfo": "",

    "suburb": "",

    "postcode": "",

    "city": "",

    "countryId": 14,

    "zoneId": 97,

    "b2bStatus": true

    }

    }

    ]


    Gambio legt den Satz aber mit number = 754 statt 4711 an.

    Die "number" als Zahl (ohne Anführungszeichen) habe ich auch schon probiert, selbes Ergebnis.
     
  8. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Gegen welche Shopversion kommunizierst du?
     
  9. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    Gambio Version: v3.15.2.1
     
  10. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Das heisst in der response, die nach dem "Create" kommt sind "id" und "number" beide "4711"?
    Bin grade nicht mehr im Büro und kann es mit der 3.14.3.0 nicht testen, die wir laufen haben...

    Kannst Du die response mal posten?
     
  11. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    "number": "4711", die schicken wir rüber, aber gambio nimmt die 754 aus dem nummerkreis.
     
  12. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    Ich teste es morgen mal mit der 3.14.3.0 er Version.
     
  13. markus_wick

    markus_wick Erfahrener Benutzer

    Registriert seit:
    10. Oktober 2018
    Beiträge:
    966
    Danke erhalten:
    214
    Danke vergeben:
    153
    So, jetzt hänge ich irgendwie fest...
    Wenn ich, wie bei anderen "Create"-Sachen versuche einen Customer zu erzeugen, wirft mir 3.14.3.0 immer ein Fehlermeldung aus :-(
    Ich versuche per POST folgendes zu übertragen:

    [{ "number": "A11", "gender": "m" , "firstname": "testfirst" , "lastname": "testlast" , "dateOfBirth": "1000-01-01" , "vatNumber": "" , "vatNumberStatus": 0, "telephone": "" , "fax": "" , "email": "wick.markus@web.de" , "statusId": 2, "isGuest": 0, "addressId": 4}]

    Bekomme dann aber einen recht langen Fehler, oben beginnt der mit

    Code:
    {
        "created": [],
        "errors": [
            {
    "errorMessage": "IntType: Invalid argument value given (expected numeric int got NULL): ",
                "stacktrace": [
                    {
                        "file": "/var/www/vhosts/xxx.xxx.de/GXEngine/Shared/Types/IdType.inc.php",
                        "line": 47,
                        "function": "__construct",
                        "class": "IntType",
                        "type": "->",
                        "args": [
                            null
                        ]
    Wenn ich die Daten ohne die eckigen Klammern zu übertragen versuche, da ich ja nur einen Customer erzeugen möchte, also
    { "number": "A11", "gender": "m" , "firstname": "testfirst" , "lastname": "testlast" , "dateOfBirth": "1000-01-01" , "vatNumber": "" , "vatNumberStatus": 0, "telephone": "" , "fax": "" , "email": "wick.markus@web.de" , "statusId": 2, "isGuest": 0, "addressId": 4}

    kommt als Fehler:

    Code:
    {
        "code": 0,
        "status": "error",
        "message": "IntType: Invalid argument value given (expected numeric int got NULL): ",
        "request": {
            "method": "POST",
            "url": "https://www.realrecyclers.com",
            "path": "/api.php/v2/customers",
            "uri": {
                "root": "/api.php",
                "resource": "/v2/customers"
            }
        }
    }
    Gibt es noch einen Pflichtparameter, der zwingend mit übertragen werden muss? Oder ist die Developer-Referenz falsch?
    In der Developer Doku ist ja auch etwas widersprüchlich angegeben z.B. beim Example des Request Body steht:

    "statusId": "1" -> das wäre also ein String

    Unten im Example snippet steht:
    "statusId":0 -> das wäre eine Integer-Zahl.

    Was stimmt? Habe verschiedene Varianten ausprobiert...

    Als Routinen zur Übertragung nutze ich dei selben die ich hier auch für das Anlegen von Kategorien und Produkten nutze.

    Was wäre denn das absokute Minimum das übertragen werden müsste um einen Customer zu erzeugen?
    number und lastname? Oder welche anderen Felder sind zwingend "required"?
     
  14. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    Laut Gambio Support nicht möglich!? Was ich mir eigentlich nicht vorstellen kann, da könnte ja keine WAWI mit GAMBIO arbeiten, wenn so BASICS nicht funktionieren!?
    ++++++++++++++++++++++++++++++++++++++++++++++
    Antwort von GAMBIO.
    wir haben das geprüft und können die mitteilen, dass die Nummer immer mit der ID überschrieben wird, wenn man den Datensatz importiert, sodass hier die ID und number immer identisch sind. Es ist aktuell nicht möglich über die REST-API eine eigene Kundennummer zu übergeben.

    Wir werden das aufnehmen und an die Entwicklungsabteilung weitergeben, sodass es geprüft und ggf. mit einem zukünftigen Update implementiert werden kann.


    Bei weiteren Fragen stehen wir dir gerne zur Verfügung. Bitte behalte bei Antworten auf diese Nachricht die Ticket-ID mit den eckigen Klammern im Betreff.
     
  15. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10

    +++++++++++

    Laut Gambio Support nicht möglich!? Was ich mir eigentlich nicht vorstellen kann, da könnte ja keine WAWI mit GAMBIO arbeiten, wenn so BASICS nicht funktionieren!?
    ++++++++++++++++++++++++++++++++++++++++++++++
    Antwort von GAMBIO.
    wir haben das geprüft und können die mitteilen, dass die Nummer immer mit der ID überschrieben wird, wenn man den Datensatz importiert, sodass hier die ID und number immer identisch sind. Es ist aktuell nicht möglich über die REST-API eine eigene Kundennummer zu übergeben.

    Wir werden das aufnehmen und an die Entwicklungsabteilung weitergeben, sodass es geprüft und ggf. mit einem zukünftigen Update implementiert werden kann.


    Bei weiteren Fragen stehen wir dir gerne zur Verfügung. Bitte behalte bei Antworten auf diese Nachricht die Ticket-ID mit den eckigen Klammern im Betreff.
     
  16. Anonymous

    Anonymous Aktives Mitglied

    Registriert seit:
    9. Juli 2018
    Beiträge:
    33
    Danke erhalten:
    0
    Danke vergeben:
    10
    Laut Gambio Support nicht möglich!? Was ich mir eigentlich nicht vorstellen kann, da könnte ja keine WAWI mit GAMBIO arbeiten, wenn so BASICS nicht funktionieren!?
    ++++++++++++++++++++++++++++++++++++++++++++++
    Antwort von GAMBIO.
    wir haben das geprüft und können die mitteilen, dass die Nummer immer mit der ID überschrieben wird, wenn man den Datensatz importiert, sodass hier die ID und number immer identisch sind. Es ist aktuell nicht möglich über die REST-API eine eigene Kundennummer zu übergeben.

    Wir werden das aufnehmen und an die Entwicklungsabteilung weitergeben, sodass es geprüft und ggf. mit einem zukünftigen Update implementiert werden kann.


    Bei weiteren Fragen stehen wir dir gerne zur Verfügung. Bitte behalte bei Antworten auf diese Nachricht die Ticket-ID mit den eckigen Klammern im Betreff.