Zahlungsarten löschen mit Befehl in der DB?

Moin, eine Frage hierzu: Lt. WIKI: Zahlungsart löschen Eine Zahlungsart sollte nur in Ausnahmefällen gelöscht werden. Wir empfehlen Zahlungsarten grundsätzlich nur zu deaktivieren! Alle Kundenkonten und Bestellungen die mit dieser gelöschten Zahlungsart verknüpft sind, lassen sich danach nicht mehr über das Backend bearbeiten. Ich habe auch unter Zahlarten zig verschiedene, die gar nicht mehr im Shop aktiv habe oder überhaupt integriert sind. Ich finde das ziemlich nervig und unübersichtlich. Auch bekommt man die Kundendaten nicht mehr auf. Diese händisch in der DB einzeln zu ändern ist ja auch nicht gerade Vorteilhaft. Kann man nicht über einen bestimmten Befehl diese Alten komplett in der Datenbank löschen und den Kundenkonten und Bestellungen hier die Zahlart Vorkasse ID 5 zuweisen??? Ich bin da leider nicht firm, aber es müsste doch die Möglichkeit geben, den Befehl zu geben, wenn die Zahlungs-ID 18, 54, 226 jetzt in 5 ändern, oder so… Was sagen die Fachleute???

UPDATE `s_order` SET `paymentID` = 15 WHERE `paymentID` IN(1,2,3,4,5); DELETE FROM `s_core_paymentmeans` WHERE id IN (1,2,3,4,5); [color=red] Mit Vorsicht genießen.[/color] Optimalerweise vorher auf einem Test-System ausführen! Das habe ich jetzt spontan zusammen getippt und ist weder getestet noch komplett durchdacht. :wink: 15 ist zu ersetzen mit der ID der neuen gewünschten Zahlungsart. In deinem Beispiel ist das die 5. 1,2,3,4,5 ist eine Auflistung der ID’s der Zahlungsarten, die alle gelöscht werden nun die neue ID erhalten sollen. Bei dir sind es dann vermutlich 18, 54, 226. Ist das soweit verständlich? :smiley: Gruß, Patrick :shopware:

1 „Gefällt mir“

Jaaaaa, das ist verständlich! Ich werde es (vorher) testen und berichten. Vielen Dank.

Sodele, hat geklappt. Alle alten Zahlarten (Restbestände noch aus 3.5) sind weg! Endlich!! :smiley: Bestellungen aufmachen funktioniert und Kunden mit den alten Zahlarten haben Zahlart ID 5 Vorkasse. Alle Bestellungen mit alten ID’s jetzt ID5: UPDATE `s_order` SET `paymentID` = 5 WHERE `paymentID` IN(16,18,19,31,51,53,55,61,64); Alle Kunden haben jetzt ID5: UPDATE `s_user` SET `paymentID` = 5 WHERE `paymentID` IN(16,18,19,31,51,53,55,61,64); Alle alten Zahlarten gelöscht: DELETE FROM `s_core_paymentmeans` WHERE id IN(16,18,19,31,51,53,55,61,64);