Gastkonten automatisiert löschen?

Moin Moin,

können Gastkunden automatisch „zum Beispiel am nächsten Tag der Bestellung“ gelöscht werden?

MfG R. Amend

Nein, Kunden löschen entfernt die dazu gehörigen Bestellungen nicht!

Hi, ja das ist klar.

Mir geht es nur um folgendes:

„können Gastkunden automatisch „zum Beispiel am nächsten Tag der Bestellung“ gelöscht werden?“

Ob zu einer bestimmten Zeit eine Löschung gesteuert werden kann. Oder immer manuell löschen?

Cronjob einrichten. Eventuell kann man das mit dem Flow-Builder Pro umsetzen. Shopware kann es meinem Wissen nach nicht automatisch.

Hi Leute - das automatisierte Löschen von Gastkonten ist scheinbar ein wirklich unschönes Thema in Shopware6. Nutzt man Paypal Express Zahlungen, laufen einige dieser Konten auf.
In der Folge gibt es Probleme, wenn Kunden erst einmal mit ihrer Mailadresse ein Gastkonto haben. Denn eine Registrierung als echtes Kundenkonto geht meiner Kenntnis nach danach nicht mehr!
Falls jemand hier eine konkrete Lösung kennt, bitte gerne teilen. Das Problem müssten ja mehrere Shopbetreiber haben.
Der entsprechende CLI-Befehl, der die Gastkonten entfernen soll, tut bei unserer Installation einfach nichts.
database:clean-personal-data „guests/carts“

Das CLI-Kommando, das Gastkonten löschen soll, funktioniert nicht, da in dieser Logik eine Bedingung besteht, dass das Gastkonto keine Bestellungen enthalten darf. Es ist eine seltsame Logik, denn selbst wenn derselbe Gast erneut bestellt, wird für denselben Kunden ein zweites, drittes, viertes usw. Kundenkonto erstellt. Auf einem Gastkonto steht also sowieso nur eine Bestellung.

Um die Überprüfung zu entfernen, müssen Sie in der Datei „vendor/shopware/core/Checkout/Customer/DeleteUnusedGuestCustomerService.php“ sein und die Zeile „new EqualsFilter(‚orderCustomers.id‘, null),“ entfernen. Dann betrachtet das CLI-Kommando nur das Gastlabel und die ‚Lebensdauer‘.

OK, aber nach dem Edit im Core darf man das nach einem Update wieder tun. Wäre das nicht eine tolle Idee, daraus ein geeignetes Plugin zu bauen?

Sicher, da stimme ich vollkommen zu.

Was ich nicht verstehe, ist, warum dies so in Shopware integriert ist. Zumindest verstehe ich, dass es ein Gastkonto für einen Kunden geben kann, aber dann sollten auf diesem Konto alle Bestellungen platziert werden, die dieser Kunde tätigt. Jetzt wird für denselben Gast immer wieder ein neues Gastkonto erstellt. Ich habe eine Person momentan mehr als 40 Mal als Gastkonto in der Kundentabelle. :smiley:

Es sollte im ‚Core‘ geändert werden, dass man ein Gastkonto entweder gar nicht speichern möchte oder es nach einer gewissen Zeit löschen will, unabhängig davon, ob dieser Gast-Kunde Bestellungen getätigt hat.

Ja richtig. Jetzt bin ich ganz froh, dass ich wenigstens nicht der einzige mit dem Problem bin. Ich hätte erwartet, dass hier dazu mehr Feedback noch von Anderen kommt. Kann aber sein, dass nur wenige die „Sofortkauf“ Funktion von AmazonPay oder Paypal aktiv haben? Die wird bei uns aber so stark genutzt, dass ich das nicht abschalten will.
Ach…außerdem wird es viele Shops geben, die vielleicht nicht so viele Wiederholungskäufer haben. Je nach Zielgruppe/Geschäftsmodell. Bei uns ist der Wiederkäufer aber eher die Regel als die Ausnahme.

Ah…direkt in der Datenbank würde das wohl so aussehen, die Gastkonten zu löschen.
ABER ACHTUNG - ich habe den Befehl noch nie abgesetzt!


delete cwp., cw., ct., cr., ca., c. from customer c
left join customer_address ca on c.id = ca.customer_id
left join customer_recovery cr on c.id = cr.customer_id
left join customer_tag ct ON c.id = ct.customer_id
left join customer_wishlist cw on c.id = cw.customer_id
left join customer_wishlist_product cwp on cw.id = cwp.customer_wishlist_id
where c.guest=1

Noch eine Frage: Gibt es ein mögliches Risiko, alle Gastkonten zyklisch zu löschen?
Oder spricht nichts dagegen? Dann vermutlich am besten über den API Befehl/per CLI …nach Modifikation im Core, damit der Check auf eine Bestellung nicht stattfindet…?

Leute, mal ganz ehrlich…

Ja, dieses Risiko ist da, weil es sich auch bei Gastkonten um sog. Geschäftsvorfälle handelt, die der ordentliche Kaufmann 30 Jahre lang aufheben muss. Also ist das Risiko, dass Dir das Finanzamt, spätestens bei einer Tiefenprüfung, ordentlich in den Hintern treten kann.

Um ehrlich zu sein, wüsste ich nicht, wie man es technisch anders abbilden könnte, um den rechtlichen Gegebenheiten gerecht werden zu können. Wenn jemand andere Ideen dazu hat: Her damit!

@marco.steinhaeuser
„die der ordentliche Kaufmann 30 Jahre lang aufheben muss“

Verzeichnis zu den Aufbewahrungsfristen

Das Verzeichnis listet in alphabetischer Reihenfolge die wesentlichen Schriftgutarten auf. Dabei kann aus der Bezeichnung des Schriftgutes alleine noch keine Aussage über seine Aufbewahrung gemacht werden. Entscheidend ist die Funktion, die das Schriftgut im Betrieb hat.
In der Regel 10 Jahre bzw. 6 Jahre.
Siehe Beispiel: $ttps://www.ihk.de/koeln/hauptnavigation/recht-steuern/steuern/aufbewahrung-von-geschaeftsunterlagen-5905058

Gegen eine händische Löschung spricht doch nichts dagegen, oder? Die Daten bleiben als Bestellung doch erhalten. Bei anderen Shops kann eine Löschung der Gastkonten automatisiert eingestellt werden.

Bei uns sammeln wir aus allen Kanälen die Bestellungen in einerm ERP und schieben im Falle einer erfolgreichen Bestellung alles in ein DMS. Kommt es zu einer Prüfung, bekommt der Beamte das DMS - dann hat er alles. Erfahrungsgemäß ist das unkritisch, wenn man kooperiert und nichts zu verbergen hat. In unserer Welt ist ja eh alles x-Mal dokumentiert. Über Shop, Zahlungssysteme, Konten, ERP, DMS, …also 110% nachvollziehbar. Wenn da noch Fragen bleiben?

Zu Shopware: Ist halt die Frage, ob man das Problem mittels Bugtracker in die Entwicklung bringen könnte? Hat jemand schon mal einen Case dafür geöffnet? Dann könnte man ihn hochvoten…

1 Like

oO… kann natürlich gut sein, dass mein Wissen dazu schon einige Zeit zurückliegt und ich nicht mehr up-to-date bin, sorry.

Einen Bug sehe ich jetzt erstmal nicht und habe deshalb hier ein Ticket aufgemacht: https://feedback.shopware.com/forums/942607-shopware-6-product-feedback-ideas/suggestions/47526434-clean-up-guest-accounts-after-order-is-proceeded, auf das man prima voten kann.

Einen gleichlautenden Beitrag konnte ich weder im Issuetracker finden, noch in diesem o.g. Feedback-Kanal.

Ich hoffe, das hilft :wink:

Ok klasse, voted. :wink:
In Einzelfällen konnten wir in dem Zusammenhang Probleme mit der Passwort Reset Funktion feststellen bei Usern, die mit der gleichen Mailadresse sowohl Gast, als auch Full-Account haben.
Wir haben auch Einträge gefunden, bei denen der Full-Account auf einen ehemaligen Gastaccount läuft. Wir sehen das daran, dass Gas-Accounts dann viele Bestellungen haben (Anzahl Orders > 1). Also irgendwas wird da durcheinander geworfen…

Mit dieser Abfrage können Gastbestellungen zusammengeführt werden. Alle Gastbestellungen werden dann auf das älteste Gastkonto mit derselben E-Mail-Adresse verschoben. Dadurch erhalten Sie ein ‚Gastkonto‘-Kundenkonto mit allen Bestellungen, die dieser Gast jemals aufgegeben hat.

Anschließend können Sie mit der ‚CLI‘:

’ bin/console customer:delete-unused-guests’

Alle Gastkonten automatisch löschen, auf denen nach der Abfrage keine Bestellungen mehr verzeichnet sind. Bei mir führte dies dazu, dass ich nach einer erfolgreichen Zusammenführung ganze 43.764 Gastkonten löschen konnte.

Aber Achtung! Verwenden Sie diese Abfrage auf eigenes Risiko. Die Abfrage funktioniert in meiner eigenen Umgebung, in der ich MySQL 8 zusammen mit Shopware 6.5 verwende.

Hier ist die Abfrage:

UPDATE order_customer oc
INNER JOIN (
    SELECT c1.id AS customer_id, c1.email, c1.bound_sales_channel_id, c1.customer_number, oc.order_id, (
        SELECT MIN(c2.id)
        FROM customer c2
        WHERE c2.email = c1.email
    ) AS oldest_customer_id
    FROM customer c1
    INNER JOIN order_customer oc ON c1.id = oc.customer_id
    WHERE c1.guest = 1
    AND (
        SELECT COUNT(*)
        FROM customer c2
        WHERE c2.email = c1.email
        AND c2.bound_sales_channel_id = c1.bound_sales_channel_id
        AND c2.customer_number < c1.customer_number
    ) > 0
) AS customer_data ON oc.customer_id = customer_data.customer_id
SET oc.customer_id = customer_data.oldest_customer_id;
1 Like

Hallo zusammen, ich habe gerade ein Plugin erstellt, das dabei hilft, Gastkonten automatisch zu entfernen. Wenn es etwas gibt, das Sie verbessern müssen, lassen Sie es mich wissen.
Sie können dieses Plugin in diesem Repository herunterladen: GitHub - 50lution/automatically-cleanup-guest: Automatically clean up guest accounts

5 Likes

Hier übrigens ein Plugin, das neben ungenutzten Gastkonten auch zahlreiche andere veraltete/ungültige Datensätzen löscht: Datenbank aufräumen und beschleunigen | Shopware Store

Viele Grüße

@HungMac

Ist das im Store auch zu finden?
Und wie wäre der Preis?