Bestellen ohne Registrierung - Kunde nicht automatisch löschen

Hallo,

wir haben einen Shop, welcher auch den Kauf ohne Registrierung erlaubt. Nun sollen die Bestellungen von einer Schnittstelle Richtung WaWi gebracht werden. Dabei möchten wir, dass Kunden, deren OXID-Kundennummer noch nicht in der WaWi vorhanden sind, direkt von der Schnittstelle angelegt werden. Das stellt kein Problem dar, solange es sich um in OXID registrierte Kunden handelt.

Bei nicht registrierten Kunden schaut es aber anders aus: Die Bestellung enthält keine Kundennummer, da der Kunde (Gast) nur kurz in OXID überlebt (keine Ahnung wie der Algorithmus arbeitet). Das macht uns aber Probleme, denn die Schnittstelle meint, in der WaWi den Kunden mit der leeren OXID-Kundennummer zu finden und weist ihm diese Bestellungen zu – Unsinn, ich weiß es, aber wir haben keinen sonstigen Zugriff auf diese Schnittstelle und eine andere kommt aus unterschiedlichen Gründen zurzeit nicht in Frage.

Das Problem wäre sofort gelöst, wenn OXID den temporär angelegten Kunden nicht löschen würde. Damit behielte die dazugehörige Bestellung die Kundennummer und die Schnittstelle würde für diese Kundennummer einen neuen Kunden anlegen.

Ja, jede Gastbestellung würde einen neuen Kunden bedeuten. Damit können wir aber gut leben.

Wie kann man erreichen, dass OXID den temporär angelegten Kunden bei Gastbestellungen nicht löscht? Gibt es vielleicht eine andere Möglichkeit, dass die Bestellung die Kundennummer behält? Nur diese brauchen wir, damit die Schnittstelle richtig funktioniert.

Im Voraus lieben Dank!

temuco

OXID löscht die Kunden nicht, das muss jemand oder etwas anderes bei euch machen.

Hallo und vielen Dank für die superschnelle Antwort.

ein Gast bestellt ohne Anmeldung. Er bekommt zum Beispiel die Nummer 17. OXID hat einen Benutzer 17 angelegt und in der Bestellung erscheint diese 17 im Feld Kundennummer.

Nun bestellt derselbe Gast ein weiteres Mal. Er verwendet wieder die identischen Adressdaten. Geht super einfach, da Eingabefelder das zuvor eingegebene vorschlagen. OXID vergibt nun diesem “neuen” Gast die Nummer 18 und legt diesen Benutzer auch an. In der neuen Bestellung steht nun die 18 im Feld Kundennummer.

Allerdings gibt es nun keinen Kunden 17 mehr und in der vorherigen Bestellung ist das Feld Kundennummer leer.

Wir haben etwas weitergeforscht und in der Bestellung (OXORDER) steht tatsächlich im Feld OXUSERID noch die ID des Benutzers 17 drin. Allerdings existiert dieser in OXUSERS nicht mehr.

Und das macht uns die enormen Probleme mit der Wawi-Schnittstelle.

Unser OXID ist eigentlich Standard CE 4.10.4 mit RoxIVE Theme-Manager.

Danke für jede Hilfe.

Oxid löscht schon Kunden - Bestellbeziehungen. Dies ist aber bei einer Einmalbestellung eines Kunden nicht der Fall, da bleibt eigentlich alles wie es ist. Die Beziehung geht erst mit der zweiten Bestellung ohne Kundenkonto zu der vorherigen verloren. Problematisch dürfte dies aber nur sein, wenn z.B. die Schnittstelle nur alle 15 Minuten die Bestellungen abruft und währenddessen der Kunde ohne Kundenkonto 2 Bestellungen durchführt.

Trotz dieser Einschränkung scheint in der Schnittstelle das Problem zu liegen. Egal was passiert, darf eine Bestellung nicht verloren gehen, notfalls muss diese eben auf ein Sammelkonto gebucht werden.

cya

Danke!

Wir sind mit der Schnittstelle nicht wirklich zufrieden, müssen mit ihr aber leben – Weihnachten steht vor der Tür…

Der Hersteller ist nicht gewillt, hier etwas zu ändern, es sei denn, man berappt dafür tausende von Euro. Ich verstehe, dass keiner was zu verschenken hat, aber beim Eintreffen einer leeren Kundennummer einen neuen Kunden in der WaWi zu errichten, anstelle einem bestehenden mit leerer OXID-Nummer zuzuweisen, dürfte programmtechnisch keine wirkliche Herausforderung sein.

Ich gehe davon aus, dass die E-Mail eines Users in OXID eindeutig sein muss und daher ein voriger Gast-Kunde mit gleicher E-Mail-Adresse gnadenlos gelöscht wird. Das ist der einfachere Weg. Gibt es dennoch eine Lösung bzw. einen Lösungsansatz?

Nochmals schönen Dank für die fulminanten Antworten!

temuco

[QUOTE=temuco;189913] Das ist der einfachere Weg. Gibt es dennoch eine Lösung bzw. einen Lösungsansatz?
[/QUOTE]

Nein, meines Wissen nach nicht.
Das Problem habe ich auch, da Newsletterabonenten (ohne Kundenkonto) die eine Bestellung als Gastbesteller tätigen, bei jeder Bestellung aus dem Newsletter ausgetragen werden. (Eine Lösung seitens Oxid habe ich aufgegeben.)

Die Frage ist, ob du mit der aktuellen Lösung nicht leben kannst? Was wirklich in dem Fall bei dir passiert habe ich noch nicht 100% verstanden. Weil, wenn die Schnittstelle alle 5 Minuten (oder 3 Minuten?) automatisch die Bestellungen abruft sollte es kaum zu doppelten Bestellungen innerhalb dieses Zeitraums von Gastbestellern kommen. Wenn du aktuell bei Bestellnummer 17 bist würde ich mir da sowieso wenig Gedanken drum machen. Zudem, was kann den schlimmstenfalls passieren? Ein oder zwei Bestellungen täglich laufen mit den korrekten Bestelldaten in ein Kundensammelkonto deiner Wawi. Schlimm? Solange du die Bestellungen korrekt ausgelieferst bekommst sollte es komplett egal sein.

cya

[QUOTE=Firefax;189914](Eine Lösung seitens Oxid habe ich aufgegeben.)[/QUOTE]
genau genommen brauchst du hier keine Lösung, da du jeden anschreiben darfst, der entweder ein Käufer oder ein Newsletter Abonnent ist.

Blöd wäre nur, wenn sich jemand aktiv vom Newsletter abmeldet, dann eine Bestellung macht und plötzlich die Abmeldung verloren geht.

Ja, das sehe ich auch so, dass dies bei einem ständigen Abruf alle paar Minuten nicht unbedingt zu Problemen führen dürfte.

Da wir nur die Bestellungen benötigen, hätten wir für dieses Problem einen möglichen Lösungsansatz:

OXUSER.OXUSERNAME nach OXUSER.OXURL umkopieren und OXUSER.OXUSERNAME = OXUSER.OXCUSTNR setzen.

Eine URL kann der Gastkunde gar nicht angeben und so hätte man keine Daten verloren. Allerdings für Newsletter nicht wirklich praktisch.

An welcher Programmstelle findet die Prüfung statt bzw. die Löschung?

Nochmals vielen Dank und liebe Grüße!

temuco

Im Übrigen die 17 stammt aus einer Testdatenbank :slight_smile: Es können an einem Wochenende gegen Jahresende durchaus 1.200 Bestellungen reinkommen. Da wünscht man sich möglichst effiziente Arbeit, was die Schnittstelle durch die fehlende Flexibilität/Bereitwilligkeit des Herstellers an dieser Stelle Probleme machen könnte.

Vielleicht habe ich auch etwas überreagiert, denn das fiel mir bei Tests auf. Aber wenn die Abrufintervalle kurz genug gewählt werden, sollte das Problem in der Tat selten auftreten.

[QUOTE=vanilla thunder;189915]genau genommen brauchst du hier keine Lösung, da du jeden anschreiben darfst, der entweder ein Käufer oder ein Newsletter Abonnent ist.
[/QUOTE]

Sehe ich anders.
Einem Käufer darf ich nur Infos zur Bestellung schicken, aber keine Werbung bzw. keinen Newsletter.
Ein Newsletterabonent muss zudem den Double-Opt-In Prozess durchlaufen, bevor er sich erfolgreich zum Newsletter registiert hat (und er auch die Benutzergruppe Newsletteranonent erhält). Nun gebe ich meinen Newsletterabonenten über die Benutzergruppe einen Versandkostenrabatt in Höhe von einem Euro. Wenn nun jemand reiner Newsletterabonnent ist oder sich als Gastbesteller für den Newsletter registiert hat verliert dieser bei einer weitern Gastbestellung sein Newsletterabo, da der alte User-Datensatz gekillt wird und nur noch der neue existiert. Newsletterabo und Benutzergruppen des Users der ersten Bestellung als Gast sind gelöscht.

cya

[QUOTE=temuco;189916]
An welcher Programmstelle findet die Prüfung statt bzw. die Löschung?
[/QUOTE]

Schau dir vielleicht erstmal das Datenbankschema an: http://docu.oxid-esales.com/CE/dbdocumentation/OXID_eShop_CE_4.9_DB_schema.png

Es geht ja die Verknüpfung von oxoder zu dem oxuser verloren. Etwas in der Tabelle oxUser zu fummeln bringt dir also nichts, du müsstest wenn dann die oxID des User anderst generieren lassen. Da bin ich aber dann raus und du dürftest tief im Core angekommen sein.

Überschrieben wird der Datensatz beim Absenden der Adressdaten im Checkout- Schritt Users, Schritt 2.

cya

oxuser.oxusername nach oxuser.oxurl umkopieren und oxuser.oxusername = oxuser.oxcustnr setzen.

oxuser.oxusername (E-Mail-Adresse) soll nach oxuser.oxurl kopiert werden. Im nächsten Schritt die eindeutige Kundennummer (meine 17 im Beispiel :-)) überschreibt oxuser.oxusername (die E-Mail-Adresse).

Die Relation zur Bestellung wird aber über oxuser.oxid == oxorder.oxuserid hergestellt und bleibt daher unberührt. So zeigt eben die Bestellung weiterhin die Kundennummer an (17). Dass ich dann an “17” keine E-Mail mehr senden kann, versteht sich von selbst – nichts für Newsletter.

Das Setzen von oxuser.oxusername = oxuser.oxcustnr soll nur für die Eindeutigkeit von oxuser.oxusername sorgen.

um es mal auf den Punkt zu bringen:

  • in der oxid-DB in der tabelle oxuser ist die Spalte oxusername unique (warum?)
  • jeder Neu-Kunde - egal ob schon mal als Gast bestellt oder erstmalig - erhält eine eindeutige Kundennummer
  • in der Oxid-DB wird eine zweite Gast-Bestellund mit gleicher Mail-Adresse überschrieben (weil unique)
  • in einem WaWi sollte das kein Problem sein, da neue Kundennummer

Ja, richtig. Und wo liegt das Problem?

Ich möchte nur vollständige Bestellungen, die nicht um die Kundennummer beschnitten werden, nur weil der Besteller zweimal hintereinander als Gast mit derselben E-Mail-Adresse bestellt hat. Wenn es sich um den gleichen handelt, dann habe ich ihn in der WaWi zweimal angelegt. Das verschmerze ich aber.

[QUOTE=temuco;189922]…
Ich möchte nur vollständige Bestellungen, die nicht um die Kundennummer beschnitten werden…
[/QUOTE]
in jeder Bestellung steht ja in der Tabelle oxorder eine oxuserid. Zu dieser ID gibt es auch zum Zeitpunkt der Bestellung immer einen Datensatz in der oxuser mit der Kundennummer.
Falls der Kunde ein zweites Mal bestellt und nicht angemeldet ist, wird der erste Datensatz des Kunden mit den neuen Daten überschrieben weil die Mailadresse ja unique ist. Die kompletten Kundendaten stehen aber auch in der oxorder!

Um dein Problem zu lösen, gibt es zwei Möglichkeiten:

  • entweder die Kundendaten per cronjob jede Minute in das WaWi einlesen (so machen wir es in viel frequentierten Shops)
  • oder die Tabelle oxorder um ein Feld mit der Kundennummer erweitern und per Modul bei der Bestellung füllen

Im übrigen würde ich mich nicht an der Kundennummer festklammern. Die Verknüpfung der Tabellen über IDs ist schon genial und auch zB bei 2 Shops im WaWi fail-safe. Die Kundennummer ist nur ein Info-Feld.

Das Problem kennen wir auch und es ist gar nicht so trivial.
Wie geschildert: bestellt der Kunde als Gast bekommt er seine Kundennummer 17, bestellt er später noch mal als Gast mit den selben Daten bekommt er eine neue Kundennummer.

Hintergrund ist schlicht, dass die E-Mail unique ist und darum kein neuer Datensatz zum selben User mit der selben Mailadresse in die User-Tabelle eingetragen werden kann. Also wird der bestehende Datensatz mit der neuen Kundennummer überschrieben.

Das kann z.B. zu Problemen führen, wenn ein Kunde zwei Bestellungen hintereinander macht, weil er vielleicht in erster Bestellung etwas vergessen hat. Wenn dann die beiden Bestellungen nicht direkt an die WaWi gehen, sondern zweitversetzt z.B. durch Cronjob alle halbe Stunde, dann fehlt der ersten Bestellung die Kundennummer.

Wir hatten z.B. den Problemfall mit dem Paymentprovider, der für seine Verarbeitung die übermittelte primär Kundennummer nutzt. Das gab dann Durcheinander im Erstattungsfall, denn der Paymentprovider hatte für einen datentechnisch identischen Kunden nun inzwischen drei verschiedene Kundennummern übermittelt bekommen.

Mir ist dabei absolut nicht klar, warum nicht die bestehende Kundennummer nicht nachgenutzt wird, wenn doch der Kundendatensatz anhand seiner eindeutigen Mailadresse identifiziert wurde.

Aber wahrscheinlich darf der Kunde in seiner neuen Rechnung nicht die selbe Kundennummer finden, weil er sonst ja erkennen könnte, dass seine Daten doch langfristiger nachgehalten werden, obwohl er ja nur als Gast bestellt. :slight_smile:

cooper

Alles richtig, nur wenn der cronjob Richtung WaWi auf alle 10 Minuten eingestellt ist, wird es sehr unwahrscheinlich dass Daten von oxuser im WaWi verloren gehen.