Modul - Klasse oxorder überladen - wie Versandart abfragen

Hallo Leute,

habe ein Problem. Ich habe via eigenem Modul die Klasse oxorder und die Funktion _setUser( $oUser ) überladen (das Funktioniert alles wie gewünscht). Innerhalb dieser (meiner) Funktion möchte ich gerne die vom Kunden gewählte Versandart abfragen. Sprich je nach gewählter Versandart soll das überladen anders sein.
Komme da leider nicht weiter. Vielleicht kann jdm helfen!?

Danke und Gruß

woran genau scheitert es denn?

Es kommt nicht die Versandart raus, die man ausgewählt hat?
Es kommt gar keine Versandart?
Du weißt nicht, wo du anfangen sollst?

Oder hast du noch gar nichts ausprobiert?

Es scheitert am fehlenden Wissen :smiley:
Im Template kann ich ja wie folgt die gewählte Versandart wählen:

[{assign var="payment" value=$oView->getPayment()}]
[{if $payment->oxpayments__oxdesc->value == "XXX" }]
Ausführung hier
[{/if}]

Habe einiges ausprobiert, aber komme leider nicht weiter wie ich dies in meiner eigenen Funktion machen kann.
oxOrder::getPayment ()
oxOrder::getPaymentType ()
hat mir leider auch nicht weitergeholfen. Es ist leider auch sehr müßig das ganze über Testbestellungen (natürlich in Testumgebung) zu validieren. Daher wollte ich mal fragen ob jdm eine Lösung dazu hat.

moment, reden wir von Payment (Zahlungsart) oder von der Versandart (delivery set)?

Ich gehe immer so an die Sache heran:
Schritt 1) überlegen, was genau ich brauche
Schritt 2) überlegen, wo es im Shop angezeigt wird
Schritt 3) schauen, wo das ist
Schritt 4) schauen, wie man dort an diese Infos dran kommt
Schritt 5) ausprobieren

Schritt 2 könnte in deinem Fall die Bestellbestätigung sein (Email)
das wäre order_cust.tpl
für Versandart gibts dort eine getDelSet() Funktion, Payment habe ich nicht nachgeguckt.

Ach, entschuldige. Ich meine die im Schritt 3 gewählte Zahlart.
Und im Schritt 4 wird ja bei Bestellauslösung die “protected function _setUser( $oUser )” aufgerufen um die Kundendaten zu “setzen”. Genau hier möchte ich eingreifen und je nach gewählter Zahlart dies unterschiedlich gestalten.

Deine Vorgehensweise klingt sehr gut. Ich denke ich bin an Punkt 4. Ich benötige im Funktionsaufruf die Information über die gewählte Zahlart. Leider hilft mir die sourcecodedocumentation da nicht weiter.
Ich bin mir bezüglich der Beschreibung nicht mal sicher ob die Funktion diese Information aus einer gespeicherten Bestellung liefert oder die unfertige Bestellung in deren Ablauf sich das ganze ja noch befindet.

schau mal in die Funktion, wo _setUser() aufgerufen wird.
Und dann scroll 5 Zeilen nach unten :wink:

Meinst Du diese Zeile?
$oUserPayment = $this->_setPayment($oBasket->getPaymentId());

Falls “ja”, komme ich damit leider nicht weiter. ( Call to a member function getPaymentId() on a non-object).

Wie gesagt, mir fehlt da leider Wissen/Erfahrung wie ich innerhalb meiner Funktion (welche ja die Ursprüngliche überschreibt) an die Payment-Infos komme.

An welcher Stelle soll die Funktion denn greifen? Neue Bestellung oder Neuberechnung einer alten Bestellung?

Die Funktion soll greifen bei neuen Bestellungen. Also in dem Moment wenn die Bestellung im Schritt 4 ausgelöst wird. Das funktioniert auch soweit. Ich habe die Funktion protected function _setUser( $oUser ) überladen mit meiner eigenen. Über die Klasse xxx_oxorder_parent.

Innerhalb dieser Funktion möchte ich bei Funktionsaufruf “wissen” welche Zahlart der Benutzer ausgewählt hat. Weiß aber nicht ob ich innerhalb dieser Funktion an diese Information komme. Übergeben wird ja nur " $oUser".

Danke!

Ich wollte eigentlich darauf hinaus, dass du die Funktionen, die mit der Zahlungsart zusammenhängen in der Funktion _setPayment() unterbringst, weil diese dort vorhanden ist.