Modulsuche - Bestellübersicht ausführlicher und Warenkorb/Checkout schöner?

Hallo Oxid-Freunde,

ich bin gerade auf der Suche nach einem Modul welches früher mal irgendwo gesehen hatte und nirgendwo mehr finde…

Das Modul hieß “Schöner Warenkorb” oder “Schöner Checkout” oder so ähnlich.
Meine Vorstellung/Erwartung ist, dass Warenkorb und/oder der Checkout vom Design her etwas moderner gestaltet wird und das nicht mehr so Oxid-typisch aussieht (mehr angelehnt an andere Shopsysteme) (ein Kunde wünscht sich das).

Ein weiteres Modul suche ich, welches die Bestellhistorie (im Frontend-Kunden-Account) ausführlicher und übersichtlicher gestaltet - ggf. auch mit Storno-Button für den Kunden solange die Bestellung noch nicht bearbeitet ist (für versehentlich falsche Bestellungen - das minimiert den Korrespondenz-Aufwand für den Storno). - Ist euch so ein Modul bekannt?

Das ganze kann ich theoretisch auch selber in den Templates umsetzen - aber wenn es hierzu schon Module gibt, muss ich das Rad nicht neu erfinden.

Danke vorab.

Moin :slight_smile:

Nein, und unter OXID Store | Frontend & User Experience | online kaufen habe ich auch nichts gefunden.

Da es sich bei Dir um Design-Fragen handelt, solltest dies problemlos über das Shop-Theme umsetzen können.

Viele Grüße,
Tim

du kannst mir gerne eine anfrage schreiben, das lässt sich als modul umsetzen.

Danke für eure Rückmeldungen.
Ich war mir nur ziehmlich sicher, so etwas schon einmal gesehen zu haben.
Die Umsetzung kann ich auch selber machen … ich wollte das Rad nur nicht nochmal neu erfinden :wink:

1 Like

Ich habe nun eine Programmierfrage zu dieser Anpassung, die ich oben erwähnt habe.

Ich habe einen Controller, den ich über GET und POST-Parameter ansprechen kann und er geht auch in die Funtkion rein.
Nun ist es so, dass das Order-Objekt eine recht simple Methode cancelOrder() hat.
Diese kann ich einfach ausführen → dann wird der oxstorno-Wert bei der Order und den OrderArticles in der Datenbank gesetzt.

Meine Frage ist nun aber: Wie kann ich das im Frontend vor Parameter-Manipulation schützen?
Welche Objekte und Methoden habe ich zur Verfügung um zu prüfen, dass der der die Aktion ausführt auch der entsprechend berechtigte Frontend-Nutzer ist?

Danke vorab!

Die cancelOrder() Methode steckt im Order Model und ist dadurch vor Aufrufe von Außen geschützt. Wenn Du diese Methode über den Deinen Controller von Außen aufrufbar machst, dann musst du auch sicherstellen eine Prüflogik zu integrieren ob der Aufruf auch von einen Benutzer kommt welcher dazu berechtigt ist.

Bei den Account Controller kannst Dir das abgucken, dort ist es z.B. wie folgt gelöst in der render() Methode:

// is logged in ?
$oUser = $this->getUser();
if (!$oUser) {
  return $this->_sThisTemplate = $this->_sThisLoginTemplate;
}

So ähnlich kannst dies in Deinem Modul auch berücksichtigen. Wenn Du noch sicher gehen möchtest, dass die Bestellung auch dem User zugeordnet musst dies vorab prüfen und dort noch ein Fehlerhandling integrieren.

Prima Danke.

Mein Ansatz sieht nun so aus:

    public function simCancelOrder() {
        $oConfig       = Registry::getConfig();
        $oOrder      = oxNew(Order::class);
        if ($sOxId = $oConfig->getRequestParameter('oxid')) {
            if ($sOxId && $oOrder->load($sOxId)) {
                // is logged in ?
                $oUser = $this->getUser();
                if (!$oUser) {
                    // return $this->_sThisTemplate = $this->_sThisLoginTemplate;
                    return false;
                } else {
                    if ( $oUser->oxuser__oxid->value === $oOrder->oxorder__oxuserid->value ) {
                        $oOrder->cancelOrder();

                        // ToDo:
                        // - Mailsenden
                        // Hinweismeldung ausgeben
                        return true;
                    }
                }
            }
        }
        return false;
    }

Noch eine Frage: Ist eigentlich eine Storno-Rückgangig-Machen-Funktion im Backend vorgesehen? Habe nichts dahingehend gefunden.

1 Like

Hi Sir_Paladin,
für die angefragten Punkte habe ich fertige Module, habe dir eine Nachricht dazu geschrieben.

Das wäre eine neue Bestellung.

Durch erneutes Klicken auf “Eintrag Stornieren” in der Artikelliste kannst die Artikel einzeln in der Bestellung “widerherstellen”. Einzig den Eintrag “oxorder__oxstorno” musst dann mit einem Befehl (s.
order::cancelOrder(); ) wieder auf 0 setzen.