Neu get Coupon Code from order

sovenus

Neues Mitglied
22. Januar 2024
4
0
Ich hab ein Plugin entwickelt, was den Hook HOOK_BESTELLABSCHLUSS_PAGE verwendet.
Die aktuelle Bestellung bekomme ich als Argument, wie bekomme ich denn dann die Coupon Codes die bei der Order verwendet wurden?
Ich hätte es schon mit folgendem versucht, allerdings bekomme ich da nur ein leeres Array:
Shop::Container()->getDB()->getArrays(
"SELECT tkupon
FROM tkuponbestelllung
JOIN tkupon ON tkuponbestelllung.kKupon = tkupon.kKupon
WHERE tkuponbestelllung.cBestellNr = $cBestellNr",
);
Könnte mir da eventuell jemand helfen? Wäre auch super wenn dazu kein SQL notwendig ist.

Danke und liebe Grüße
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.701
1.612
Berlin
Der steht vermutlich in twarenkorbpos
Die Daten von der Bestellung solltest du auf der Abschlussseite auch noch in $Bestellung haben, dort musst du dann die Positionen durchgehen.

Ist jetzt aber nicht zu 100% validiert.
 

sovenus

Neues Mitglied
22. Januar 2024
4
0
Hallo und danke für die schnelle Antwort.
Den Gutschein Namen habe ich da drinnen gefunden, allerdings nicht den Code selbst, so siehts aus:
{
"kWarenkorbPos": 106,
"kWarenkorb": "47",
"kArtikel": 0,
"kVersandklasse": 0,
"cName": "test",
"cLieferstatus": "",
"cArtNr": "",
"cEinheit": "",
"fPreisEinzelNetto": "-4.2016806722689",
"fPreis": "-4.2016806722689",
"fMwSt": "19.00",
"nAnzahl": 1,
"nPosTyp": 3,
"cHinweis": "",
"cUnique": "",
"cResponsibility": "core",
"kKonfigitem": 0,
"kBestellpos": 0,
"fLagerbestandVorAbschluss": "0",
"nLongestMinDelivery": 0,
"nLongestMaxDelivery": 0,
"kSteuerklasse": 0,
"cGesamtpreisLocalized": [
"-5,00 EUR",
"-4,20 EUR"
],
"cEinzelpreisLocalized": [
"-5,00 EUR",
"-4,20 EUR"
],
"kLieferschein_arr": [],
"nAusgeliefert": 0,
"nAusgeliefertGesamt": 0,
"bAusgeliefert": false,
"nOffenGesamt": 1
},

Test ist der Gutscheinname, aber wie bekomme ich denn dann den Gutschein Code?

Danke im voraus und liebe Grüße
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.701
1.612
Berlin
Der komplette Coupon steht vermutlich in der Session, aber ich fest davon aus, das dieser wenn die Bestellabschlussseite gezeigt wird schon gekillt wurde.
Schau dir die Session mit {(array) $smarty.session|dump} am besten mal im WK an wenn du einen GS Code eingegeben hast.

Gleiches kannst du natürlich auch auf der Bestellabschlussseite machen, dann siehst du ja ob der da zu finden ist., ich meine es ist smarty.session.kupon aber auch das habe ich jetzt nicht geprüft.
 

sovenus

Neues Mitglied
22. Januar 2024
4
0
Hallo und danke für die Antwort, leider ist Code nicht mehr in der Session auf der Bestellabschlussseite, auf der Zusammenfassung Seite aber schon noch.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
6.701
1.612
Berlin
Ja das dachte ich mir schon, dann müsstest du dir die Sessionvariable kurz vorher über einen Hook abgreifen und in eine eigene Session variable schreiben.
Das sollte ja nicht so problematisch sein.
 

sovenus

Neues Mitglied
22. Januar 2024
4
0
Danke für die Info, es funktioniert.

Hier ist der Code um den Code in die Session zu schreiben, falls das nochmal jemand braucht:
public function boot(Dispatcher $dispatcher)
{
parent::boot($dispatcher);
$dispatcher->listen(
' shop.hook.' . \HOOK_BESTELLVORGANG_PAGE_STEPBESTAETIGUNG,
function () {
if (isset($_SESSION['NeukundenKupon'])) {
$_SESSION["usedCouponCode"] = $_SESSION['NeukundenKupon']->cCode;
} else if (isset($_SESSION[' Kupon'])) {
$_SESSION["usedCouponCode"] = $_SESSION['Kupon']->cCode;
}
},
10
);
}

Und so kann man dann den Code auf der Abschlusseite bekommen: