REST API - Noch fehlende Funktionen

Thema wurde von Anonymous, 17. August 2016 erstellt.

  1. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    #21 Anonymous, 13. September 2016
    Zuletzt bearbeitet: 13. September 2016
    Gambio Version : 3.0.0.0
    REST-API Version: 2.1.0
    Ressourcenknoten: Orders, Products, Customers

    Paginierung sehr langsam

    Info: Laut Wilken in Gambio-Versionen neuer als 3.1.x.x deutlich schneller. Funktion geht unter 3.0.0.0 auch und gibt korrekte Daten heraus, ist aber deutlich langsamer.
    Wer eine Gambio-Version 3.0.0.0 bis zirka 3.1.0.0 ansprechen muss sollte beim paginieren große "perpage"-Werte nehmen.
    Je kleiner der Wert in diesen Versionen ist, desto langsamer ist der Abruf wenn in einer Schleife "bis Ende" abgerufen wird.


    Danke fürs schnelle Feedback Wilken :)


    Erläuterung zur Meldung für User ab 3.0.0.0 bis zirka 3.1.0.0:


    Bei Tests mit perpage=10 fällt mir gerade bei einer Datenbank mit ~400 Bestellungen auf, dass die Zusammensetzung sehr viel Zeit kostet.

    Es scheint (korrigiert mich wenn ich falsch liege) das bei jeder Anfrage die komplette Request abgefeuert wird und danach erst für die Seiten aufbereitet wird.

    In der Theorie kann man dem entgegen wirken in dem man vor dem Abruf einen Count durchführt und dann via LIMIT arbeitet.

    Beispiel:

    Ich habe 400 Bestellungen (von ID 1 bis 400)
    Ich feuer eine Abfrage an Orders mit Filter ID > 100, page = 2, perpage = 10 ab


    Die Query würde in der Theorie im Hintergrund so aussehen:

    SELECT * FROM ORDERS WHERE ID > 100

    Wenn ich die Paginierung nun Klug aufbaue und sage:
    Count mir mal mit Filter: 299 Ergebnisse

    if (page > 1) { x = perpage * (page -1) } else { x = perpage }

    und dann die neue Query ausführe:

    SELECT * FROM ORDERS WHERE ID > 100 LIMIT X,(10 + X)

    würde ich die ersten X Einträge überspringen und nur 10 + X Übersprungene Einträge holen

    in dem Beispiel also:

    SELECT * FROM ORDERS WHERE ID > 100 LIMIT 10, 20
     
  2. Wilken (Gambio)
    Wilken (Gambio) Erfahrener Benutzer
    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.311
    Danke vergeben:
    2.208
    Sollte mit aktuellen Versionen bereits behoben sein.
     
  3. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    Gambio Version : 3.0.0.0 bis neuste
    REST-API Version : 2.0.0 bis 2.3.0
    Ressourcenknoten: Orders sowie Products
    Link zur Dokumentation: fehlend
    Betreff: totalSum (Orders) und Preis-Kennzeichnung

    Eine Kennzeichnung ob es sich um einen Brutto oder Netto-Preis handelt wäre nicht verkehrt, anders herum wäre es glaube ich einfacher einfach beide Werte "totalSum" und "totalSum_Netto" zu haben. Selbiges gilt für Produkte. Das man hier den Netto als auch den Brutto Preis vorhält.
     
  4. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    #24 Anonymous, 24. Oktober 2016
    Zuletzt bearbeitet: 24. Oktober 2016
    Gambio Version : 3.0.0.0 bis neuste
    REST-API Version : 2.0.0 bis 2.3.0
    Ressourcenknoten: Orders
    Link zur Dokumentation: fehlend
    Betreff: Aufschlüsselung einer Produktkombination in einer Bestellung zur Lagerbuchung

    Habe in dem Foreneintrag von Jan Krause ((Link nur für registrierte Nutzer sichtbar.)) die Frage bzgl. Produktkombinationen und Erkennung soeben entdeckt und trage das hier mal stellvertretend inklusive Information von Moritz nach:

    Der Orders-Knoten hält nur die Produkte an sich bereit, jedoch keine Informationen zur Produktkombination, der Identifier ist derzeit die einzige Informationsquelle die vorhanden ist, ist aber eine große Hilfe:

    Der Wert im Identifier hat immer einen der folgenden Aufbauten:
    Für Produkte mit Attribute / Eigenschaften: ProductIDxCombiID
    Für einzelne Produkte: ProductID

    Solange es keine API-Unterstützung gibt kann man wie folgt die Informationen heraus holen:
    Die nachfolgenden Schritte bedingen einen alternativ-Weg zur Datenübermittlung der Tabelleninhalte, egal ob PHP, alte API (Gambio-XML) oder Tabellendirektzugriff. Der Ablauf ist durch eigene Recherche ermittelt und kann je nach Anwendungsfall ggf. abweichen und muss nicht für Attribute gelten (Attribute != Eigenschaften soweit ich verstanden habe)

    Schritt 1:
    Tabelle "products_properties_index" abrufen, filtern auf language_id (optional) und "products_properties_combis_id" (CombiID)
    Schritt 2: für jeden Treffer aus Schritt 1 die "properties_values_id" auslesen und die Tabellen "properties_values" und "properties_values_description" abrufen mit "properties_values_id"=WERT
    Schritt 3: Die aus Schritt 2 geholten Datenergebnisse zusammen ergeben die Bezeichnung der Kombination (Eigenschaft) zum Product ProductID
    Schritt 4: die aus der Tabelle "products_properties_combis_id" in Schritt 1 ausgelesene dazugehörige "products_id" ist die passende ProductID die gebucht werden muss wenn man Lagerbuchung für diesen Artikel durchführen möchte.
    Schritt 5 (unvollständig): die aus Schritt 4 ausgelesene ProductID sollte in der Theorie von der Haupt-ProductID abweichen.
    Frage zu Schritt 5: wo ist der Lagerbestand für ProductID (Schritt 5) hinterlegt, in welcher Tabelle?




     
  5. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    Gambio Version : 3.0.0.0 bis neuste
    REST-API Version : 2.0.0 bis 2.3.0
    Ressourcenknoten: kein direkter, geht um Products
    Link zur Dokumentation: (Link nur für registrierte Nutzer sichtbar.)
    Betreff: Bildupload via API, Image-Prozessor ansprechen

    Dennis Schmitz hat mich auf die Frage "wie lade ich Bilder aus der WaWi hoch" auf dieses Thema gebracht. Wenn wir einen Artikel aus der Warenwirtschaft in den Shop anlegen wollen müssten wir auch Bilder hinzufügen. Thumbnails und Co. erstellt soweit ich das noch in Erinnerung habe ein Image Processor den Gambio bei hat. Dieser sollte am besten durch eine API-Funktion auch ansprechbar sein.

    In der Developer-Doku findet sich zwar die Funktion Upload Product Image jedoch ist hier nicht eindeutig was für ein Bild hochgeladen wird und was mit dem Rest (Thumbnails, Mittlere Größe etc.) erzeugt wird.

    Als Info habe ich von Dennis erhalten das seit 3.2.0.0 On-the-Fly die Bilder erzeugt werden (beim ersten Aufruf)

    Frage: Reicht ein Aufruf der ProductImageUpload Funktion?

    Die Rückgabe der Funktion "api.php/v2/product_images" gibt den Dateinamen zurück, schön wäre aber den vollen Link auch zu erzeugen und ggf. direkt auch die Thumbnails zu erzeugen und dessen Links auch zurückzugeben

    Frage für Versionen zwischen 3.0.0.0 und 3.2.0.0: Wie kann man das in den älteren Versionen umsetzen ohne:
    1. Änderungen am Shop-Code machen zu müssen
    2. Gambio-User nicht im Regen stehen zu lassen
    3. Die DB nicht zu zerschießen
     
  6. Anonymous
    Anonymous Mitglied
    Registriert seit:
    2. Mai 2017
    Beiträge:
    7
    Danke erhalten:
    0
    Danke vergeben:
    1
    Hallo!

    Ich hoffe ich bin hier nicht falsch....

    Weiters besteht derzeit noch nicht die Möglichkeit verschiedene Preislisten/Kundengruppenpreise per Rest-API zu übertragen.
    Da wir unseren Onlineshop für Endkunden/B2C und für Händler/B2B anbieten sollten sich beide Preise von der Wawi übertragen lassen.
    Leider funktioniert das über einen globalen Rabatt einer Kundengruppe nicht, da viele Preise individuell kalkuliert sind.

    Beste Grüße,
    Thomas
     
  7. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    nicht ganz falsch, Preislisten / Kundengruppenpreise sollte in die API rein wenn noch nicht vorhanden in der Gambio API.
    Das was aber in eurem Onlineshop getätigt wird sind Warenkorb-Regeln und Preisregeln, das kann der Shop in der Regel intern besser als sowas auszuklamüseln über eine API.

    Die Warenkorb- / Preisregeln werden ja anhand des Kunden, der Artikel, der Menge und der Gesamtsumme festgeklopft. Soviele notwendige Parameter machen selten in einer API sinn, was eher Sinn macht ist das Ergebnis in der Bestellung anzuzeigen und das tut es ja jetzt schon.

    Die Frage ist: Wie will man sowas abbilden mit den Preislisten wenns anhand mehrerer Kriterien erst zu nem Ergebnis führt.

    Vielleicht wissen @Wilken (Gambio) , @Marco (Gambio) oder @Moritz (Gambio) ob so was in der API sinnvoll ist und wie man sowas abbilden könnte
     
  8. Anonymous
    Anonymous Mitglied
    Registriert seit:
    2. Mai 2017
    Beiträge:
    7
    Danke erhalten:
    0
    Danke vergeben:
    1
    Hallo!

    Ähm, ....

    Ja es gibt Warenkorbregeln.... die haben aber damit nichts zu tun...

    Die Kunden werden manuell einer Kundengruppe zugewiesen, und haben somit Ihren eigenen Preis.

    Mir geht es aber wirklich um einen Artikel, der dem Endkunden 200 EUR, dem Händler 150 EUR und dem Distributor 100 EUR kosten sollte.

    Wir haben dies bereits in unserem aktuellen Shopsystem mit den Kundengruppenpreisen umgesetzt.
    Testweise habe ich auch im Gambio GX3 manuell die Kundenpreise, unter Preisoptionen, gepflegt und es funktioniert so, wie ich es mir erwartet habe und es auch benötige.

    beste Grüße,
    Thomas
     
  9. Anonymous
    Anonymous Erfahrener Benutzer
    Registriert seit:
    17. August 2016
    Beiträge:
    120
    Danke erhalten:
    22
    Danke vergeben:
    17
    Gambio Version : 3.0.0.0 bis neuste
    REST-API Version : 2.0.0 bis 2.3.0
    Ressourcenknoten: Products
    Link zur Dokumentation: (Link nur für registrierte Nutzer sichtbar.)
    Betreff: Kundengruppenspezifische Preise in API-Ausgabe übernehmen

    Kundengruppenspezifische Preise werden nicht über den API-Knoten "products" ausgegeben. Kunden benötigen diese Kundengruppenpreise um damit Angebote durch Fax, Telefon, Email ausserhalb des Onlineshops abzugreifen.

    Benötigt wird:
    - Anzeige aller Kundengruppenspezifischen Preise
    - ID der Kundengruppe
    - Name der Kundengruppe

    desweiteren macht es Sinn im Zeitalter der digitalen Datenverarbeitung, das man gleich eine PUT-Funktion hinzufügt um mittels "ID der Kundengruppe" + "Artikelnummer / products_id" + Preis einen neuen Kundengruppenspezifischen Preis zu hinterlegen oder vorhandene zu aktualisieren

    Frage für Versionen zwischen 3.0.0.0 und neuster Version (Stand 15.05.2017)
    Wie kann man das in den älteren Versionen umsetzen ohne:

    1. Änderungen am Shop-Code machen zu müssen
    2. Gambio-User nicht im Regen stehen zu lassen
    3. Die DB nicht zu zerschießen

    welche Tabellen beinhalten die Daten der Kundengruppenspezifischen Preise und mit welcher SQL-Anweisung bekommt man diese heraus?