Anmeldung

Geben Sie Ihren Benutzernamen und Ihr Passwort ein, um sich anzumelden.

[Bugfix] Virtuemart 2.xx Schnittstelle - Statusänderung

codeXtreme
Neuling
Verfasst am: 02.08.2013 [11:05]
Tag die Herrschaften,

wie in meinem Thread zur Problembeschreibung der Schnittstelle bereits mitgeteilt, gibt es in der Schnittstelle zu Virtuemart einige Probleme und Fehler.

Ich habe mir nochmal die Schnittstellen genauer angesehen und die Netzwerkverbindung mit einem Sniff unter die Lupe genommen. Dabei habe ich entdeckt, dass die Übergabe der ID in einem anderen Abruf, als dem Erwarteten stattfindet. Als ich mir die Funktion in der virtuemart2.php einmal genauer angesehen habe, wurde mir klar, dass die Status-Änderung einer Bestellung beim Import SO gar nicht funktionieren KANN. Die Funktion ist mit Fehlern befleckt und es werden sogar komplett falsche Abfragen gemacht. Sorry, aber das ist Quark und eigentlich sollte ich für den Fix ne Rechnung rausschicken.
icon_cool.gif

Die Abfrage...

$query = 'SELECT order_status';
$query .= ' FROM '.$db_tableprefix.'virtuemart_orders';
$query .= ' WHERE virtuemart_order_id = '.$orderId;

ist falsch, da die übergebene $orderID in dem Fall nicht die "virtuemart_order_id ist", sondern die "order_number" in der Datenbank - also die alphanumerische Bestellnummer. Ein Bestellstatus kann also gar nicht gefunden werden, weil die "virtuemart_order_id" in der Form gar nicht existieren kann. Die Abfrage liefert also nichts, gar nichts. Gleichzeitig könnte die Abfrage widerrum auch zur "order_number" keine Infos liefern, da die übergebene $orderID alphanumerische Zeichen nutzt und hierfür die Anführungszeichen im Query fehlen. Demnach bringt auch if($data) nichts, denn dann wird die Funktion schlichtweg abgebrochen. Fehlermeldungen werden dabei nicht ausgegeben, da ja die Abfrage theoretisch ok ist, nur eben keine Daten zurückgibt - ist ja auch nichts da.
icon_razz.gif

Statt nun einfach die Abfrage bezüglich der "virtuemart_order_id" zu ändern - also in "order_number" zu benennen, muss man aber einen kleinen Umweg gehen. Denn die ID der Bestellung wird in der Funktion zu einem späteren Zeitpunkt tatsächlich benötigt. Also müssen wir die Abfrage erweitern und die tatsächliche "virtuemart_order_id" zur von orgaMAX übergebenen "order_number" finden (natürlich in Anführungszeichen, weil ja alphanumerisch).

$query = 'SELECT order_status, virtuemart_order_id';
$query .= ' FROM '.$db_tableprefix.'virtuemart_orders';
$query .= ' WHERE order_number = "'.$orderId.'"';

Nun können wir auch eine anständige Abfrage starten und mit den erhaltenen Informationen arbeiten. Ich habe die Funktion bereinigt und stelle hier nun ein Fix bereit, welches die Probleme - zumindest beim Bestell-Status - beseitigt. Vielleicht kann deltra das Ganze ja in ein Update übernehmen, wäre fein.

Leider kann ich hier keinen anständigen Codeblock posten, ohne dass es das Template zerlegt, daher hier ein Paste mit der Lösung: http://pastebin.com/b1eU7Qc5

Zunächst wird die Funktion im Original gezeigt. Im unteren Bereich ist der bereinigte Code, der nun endlich die Status-Änderung beim Bestell-Import ermöglicht.

Ich sehe schon, dass ich wohl die nächsten Tage noch ein paar weitere Blicke auf die Schnittstellen werfen muss. Ich bin gespannt, was ich da noch alles finden werde.
icon_biggrin.gif

Cheers!

orgaMAX Forum hat 4202 registrierte Benutzer, 5134 Themen und 17062 Antworten.
Es werden durchschnittlich 7.07 Beiträge pro Tag erstellt.

Zur Zeit sind 0 Benutzer online, davon 0 registrierte Benutzer.
Heute waren bereits 3 registrierte Benutzer online.

Schulungen
orgaMAX Schulungen

Wir zeigen Ihnen, wie Sie orgaMAX optimal einsetzen.
Mehr erfahren

Weiterempfehlen
orgaMAX empfehlen

Prämie bis zu 50€ sichern.
Mehr erfahren

Webinare
Webinare

Unsere kostenlosen Online-Seminare.
Mehr erfahren

FAQ
FAQ-Bereich

Antworten auf die häuftigsten Fragen.
Mehr erfahren

Download
orgaMAX Handbuch

Kostenlos als PDF herunterladen.
Download

Newsletter
orgaMAX Blog

Bleiben Sie auf dem Laufenden.
Mehr erfahren

Support-HotlineWir sind für Sie da

Entweder Sie stellen Ihre Support-Anfrage per E-Mail
oder rufen uns direkt an:

+49 (0)5231 7090-0

Unsere Telefonzeiten 
Montag bis Freitag: 
8 bis 12 und 12.45 bis 18 Uhr

E-Mail Anfrage