Bug: customer_comment fehlt in der Order-API

Hi!

Wenn ich die Orders auslese via API (und auch einzeln per self-Link), steht in dem Feld customerComment nichts drin. Dieses ist aber definitiv gefüllt mit der Amazon Bestellnummer von einem anderen Plugin. Habe es in der Datenbank kontrolliert. Nur via API komme nicht ran, ein Update auf die neueste Version war nicht die Lösung. Installiert ist nichts außer Channable um die Amazon Bestellungen zu importieren. Es muss möglich sein ohne Erweiterungen an dieses Feld zu kommen, da ich eigentlich kein weiteres Plugin einsetzen möchte, sofern es sich vermeiden lässt.

Ist es sonst möglich, sich in die API zu hooken?

Hier noch ein Screen aus PHPStorm:

(Edit: 2 Beiträge hier drunter auch nochmal der Beweis, dass es in der DB steht)

VG
Chris

Sieht so aus als wäre da einfach nichts gefüllt

Lesen hilft… wie bereits erwähnt: In der Datenbank steht es, so schlau bin ich auch…

Moin,
was ist denn das hier für eine DB-Tabelle in dem Screenshot - die „order“ - da steht ja die order_number, nicht direkt vor dem Comment.
Frage wäre welche Associations bei dem Order Abruf verwendet werden, könnte evtl. daran liegen. Ich hatte damit aber noch nie Probleme.

herzlichst

CH

Man kann in phpmyadmin die Spalten schieben… schon seit Jahren… das hab ich zur einfachen Veranschaulichung gemacht, damit es direkt sichtbar ist. Oder ich hätte „SELECT ordernumber, customer_comment…“ gemacht… das ist die Order-tabelle, welche sonst… es ist doch keine Association. die customer_comment spalte ist einfach eine spalte der Bestellung. Dass diese auch in der API auftauchen soll sieht man doch schon in der Schnittstellenbeschreibung und an meinem Screen vom Debuggen in PHPStorm, dass der Wert da ist, aber null ist. Was falsch ist, denn wie ihr seht ist in der Tabelle der Wert vorhanden.

PS: Nein es gibt keine weiteren associations oder relations in der API. Da sind machinestates, deliveries und all sowas. Aber da die Spalte zu den Stammdaten gehört (und keine der relations Sinn macht), muss das in der /api/order funktionieren und nirgendwo anders. Tut es aber nicht.

Wie wird das Feld „customer_comment“ denn gefüllt? Sieht halt nach etwas technischem aus. Vermutlich werden die Einträge geschrieben ohne das der Cache invalidiert wird.

Danke für die Info, wird die API etwa gecached? Ich habe heute und morgen noch frei, werde mir das aber die Woche mal ansehen, wenn ich wieder am Rechner bin. Das ist ein guter Tipp, Cache leeren mache ich öfter, aber dass es bei der API so sein könnte, puh.

Gefüllt wird das Feld vom Channable Plugin. Ich check dann auch mal, ob die Spalte daher kommt oder ob das Standard. Aber da ja die Spalte im Debugging zu sehen ist dachte ich, das sei nicht das Problem. Ich melde mich dann, danke für den Tipp!

Gerne… Um es schnell zu testen, würde ich mal eine Testbestellung inkl. Kommentar erstellen. Dann sieht man ja ob das Feld null ist oder befüllt!

So, ich habe es jetzt erst geschafft zu schauen.

Also, Cache löschen hat nichts gebracht.
Reindizieren auch nicht.

Datenbank habe ich nochmal gecheckt, auch hier nochmal ein Screen (extra abgeschnitten wegen Datenschutz)

Eine Bestellung durchführen macht keinen Sinn, der Shop dient nur zum Fetchen der Amazon-Orders, man kann dort selbst gar nicht bestellen, es muss also so oder so genau so funktionieren wie es gerade der Fall ist. Die Daten sind ja befüllt, ob nun via Plugin (Channable) oder via Shop-Checkout macht ja keinen Unterschied.

Ach noch eine Sache: Anhand von GIThub kann man gut sehen, dass das Feld sowohl standardmäßig aus Shopware kommt, als dass es wohl auch richtig für die API definiert wird. Selbst die Schreibweisen (erst Underscore, dann Camelcase) sind richtig.

Könnt ihr hier sehen: Search · customer_comment · GitHub

Dementsprechend ist es aus meiner Sicht eindeutig ein Bug von Shopware, dass hier einfach keine Daten rauskommen.

Das Kommentarfeld läuftaber richtig. Wenn man es auch richtig anwendet. Ich weiß nicht wie du den Cache geleehrt hast, aber ich vermute es war nur der http Cache. Ich würde mal checken ob beim Schreiben des Kommentarfeldes zumindest auch die Spalte updated_at korrekt aktualisiert wird. Es ist sicher wie das amen in der Kirche, der Bug ist in shopware nicht vorhanden. Und ja, es liegt zu 100% am Cache, der Datensatz wurde nicht sachgemäß aktualisiert. Deshalb habe ich vorgeschlagen mal wine Bestellung manuell auszuführen, damit du dich selbst davon überzeugen kannst, dass es läuft. Aber bei so custom Konstrukte muss man den Fehler woanders suchen.

Hey,

also, HTTP-Cache hab ich jetzt auch mal ausgestellt, hat nichts geändert.

Das updated_at darf/sollte keine Rolle spielen, da die Bestellung ja nur erstellt wird.
Es gibt wie gesagt keine Bestellung die geupdated wird.
Channable importiert diese von Amazon, einmal und deswegen gibt es auch kein Update und somit auch kein updated_at.

Zum Thema Kommentar über den normalen Bestellweg: Das Feld an sich scheint es in einer Standard-Installation gar nicht zu geben. Ich kann im Checkout keinen Kommentar hinterlegen. Wieso aber existiert dann das Feld?

Sorry, aber mir erschließt sich nicht, wieso es einen Unterschied machen soll ob das Feld über den normalen Weg gefüllt wird oder über ein Plugin. Am Ende des Tages reden wir hier von einer varchar-Spalte in einer Tabelle, die keinen Unterschied daraus macht WIE sie befüllt wurde. Wenn auch dann Caches deaktiviert wurden, gelöscht wurden und Indizes neu aufgebaut wurde… Sorry, aber dann ist es ein Bug. Davon ab, dass man per Standard Shopware nicht mal einen Kommentar an sich hinterlegen kann, dann erschließt sich mir sowieso nicht, wieso das Feld überhaupt da ist.

Für mich ist es eindeutig ein Bug und ich sehe auch nicht ein, hier groß Lizenzgebühren an Shopware zu zahlen, nur um für einen offensichtlichen Bug Support zu bekommen. Ich würde darauf wetten dass wenn ich eine Standard-Installation mache, ohne Channable, dass das Ergebnis genau dasselbe wäre. Btw: Ich habe dieses eben deaktiviert - somit sind wir exakt bei einer Standardinstallation, weil mehr nicht installiert ist - und das Ergebnis ist dasselbe. Bitte erklär mir das, wie das kein Shopware-Bug sein kann.

Nachtrag: Ich habe die Einstellung (unter Warenkorb…) jetzt doch gefunden, Bestellkommentar ist da, ich teste weiter ob es so geht.

So und es geht weiter. Ich habe eine Bestellung ganz normal über den Shop gemacht, anbei die Screens

Bestellbestätigungs-Seite

Debugger in PHPStorm

Datenbank
image

Ich denke wir sind hier weit davon entfernt, dass es kein Shopware-Bug ist.
Sorry, aber wenn eine Bestellung reinkomt, muss und soll sich meine Middleware nicht darauf verlassen, dass irgendwelche Caches nicht geleert sind. Eine API sollte immer alle Daten rausgeben, die aktuell sind. Davon ab, dass es kein Cache-Problem zu sein scheint. Bei Daten wie Bestellungen sollte eine API keinen Cache haben.