Jump to content

(Gelöschte) Demo Artikel erscheinen dennoch bei Bestellung


jschm

Recommended Posts

Hi zusammen,

 

ich betreibe einen Presta 1.6.1.12 Shop. Der Shop ist komplett eingerichtet und live, Demodaten habe ich alle vor dem Live-Gang gelöscht. Unter "Erweiterte Einstellungen - Leistung" sind alle Caches deaktiviert.

 

Gestern kam die erste Bestellung rein. Es wurde 1 Artikel bestellt, auf der Bestellbestätigung an den Kunden wurden jedoch 4 Artikel aufgelistet, 2 davon waren Demoprodukte, berechnet wurde nur der eine reale Artikel. Wenn ich im Backend in der Bestellübersicht die Bestellung öffne und einen Demoartikel anklicke kommt "Objekt kann nicht geladen werden (nicht gefunden)"

Auch auf der 2. Bestellung waren wieder 3 Demoprodukte vorhanden! Es gab außerdem auch eine dritte Bestellung, ohne Demodaten. 

 

So, wie gesagt sind die Demo-Produkte nicht mehr im Shop existent, warum erscheinen die in der Bestellbestätigung beim Kunden?? :( Bin echt ratlos, und da der Shop live ist, ist das ganze sehr unpraktisch.

 

Danke für jeden Tipp!

post-1400530-0-47762100-1500316087_thumb.png

Edited by jschm (see edit history)
Link to comment
Share on other sites

Das beschriebene Problem ist ein typisches Problem, wenn man Daten aus Tests nur unvollständig in der Datenbank löscht. Vielfach geht man davon aus, dass man für die Bestellungen einfach nur ps_orders löscht.

 

Das reicht bei weitem nicht, da dort z.B. nur die Basisdaten einer Bestellung gespeichert sind. Es gibt viele weitere Tabellen, wo dann die Warenkörbe, Produktedetails, Steuern, Rechnungen, Lieferscheine etc. gespeichert sind.

 

Wenn man unvollständig löscht, passiert technisch folgendes:

 

Prestashop vergibt eine neue Bestellnummer (id_order) und schreibt die Daten in die Bestelltabelle ps_orders.

Dann lädt PS den Warenkorb mit der zubehörigen ID. Wenn es diesen früher schon mal gegeben hat, liegen da schon die ersten Leichen rum. Dann versucht PS, die Details in allen weiteren Tabellen ebenfalls nachzutragen. Gibt es dann diese Bestell-ID, die Artikel ID oder die Kunden/Adress-ID dort schon, schlägt der Insert natürlich fehlt.

 

Ergebnis:

man hat einen lustigen Mix von alten Demo- und neuen Live-Daten.

Link to comment
Share on other sites

Danke für die Infos! In der Tat habe ich einfach manuell im Backend alle Artikel gelöscht. Mir war nicht bewusst, dass dies nicht ausreicht. 

Wie muss ich denn jetzt vorgehen, kann ich die restlichen Demo-Einträge manuell über myPHP löschen? 

 

Viele Grüße

Jan

Link to comment
Share on other sites

Das kostenlose Modul Prestashop Cleaner bietet Hilfe.

 

Danke für den Tipp, wenn ich die Warnungen im Modul richtig verstehe, löscht mir das aber alle (!) Daten (Katalog, Bestellungen, etc.), nicht nur die Demo Daten?

Wenn dem so is, würde mir das leider nicht helfen, der Shop ist im Live Betrieb und ich habe alle Daten manuell eingetragen :( 

 

Welche Möglichkeiten gäbe es denn noch? Notfalls auch komplett manuell wenn ich die Stellen in der DB kennen würde in der sich Demo-Daten verstecken

Link to comment
Share on other sites

In der Tat habe ich einfach manuell im Backend alle Artikel gelöscht.

Zunächst hattest du geschrieben, du hättest die "Demodaten" gelöscht, jetzt sprichst du nur von den Artikeln. Die Demobestellungen und evtl. weiteres hast du nicht gelöscht?

Link to comment
Share on other sites

OK etwas präziser: Ich habe alles was ich von den Demo-Daten gefunden habe manuell (!) gelöscht und den Demo-Modus deaktiviert (auf "Übersicht"). Dazu zählen Bestellungen, Artikel und was ich sonst gefunden habe. Dachte das reicht, und ich hatte nicht erwartet das die dann, obwohl gelöscht, noch in Bestellungen einlaufen.

Link to comment
Share on other sites

In diesem Fall muss man leider alle relevanten DB-Tabellen manuell durchforsten und diejenigen Rows löschen, welche zu Testaufträgen gehören.

 

Es sind leider recht viele Tabellen, die mit Auftragsdaten verbunden sind.

 

Alternativ nur ps_orders und ps_cart manuell bereinigen und dann mittels Cleaner Modul eine Konsistenz - Bereinigung (Dritte Option) ausführen. Vorher einen Backup machen!

Link to comment
Share on other sites

Und vielleicht noch den Hinweis:

 

Deine Daten sind nach unserem Kenntnisstand heute nicht mehr konsistent, da Test und Realdaten gemischt wurden.

 

Mein Vorschlag kann dieses Ausmass für künftige Bestellungen eliminieren, jedoch heute schon falsche Daten nicht mehr rückwirkend reparieren. Das könnte man nur manuell und mit sehr viel Wissen zum Datenmodell machen.

 

Normal nutzt man halt den PS Cleaner, BEVOR man produktiv startet.

Link to comment
Share on other sites

Ich denke, wenn man nicht falsch löscht, sind noch vorhandene Demodaten nicht wirklich ein Problem, sofern man nicht wirklich den Shop als alleinige Quelle für Steuererklärungen etc. nutzt. Es gelingt mir halt nur nicht rauszubekommen, was er denn nun wirklich wie gelöscht hat, so kann man in der Grundausstattung ja Bestellungen nicht im BackOffice löschen und Operationen in der Datenbank (was er vielleicht mit "manuell" meint) sind immer gefährlich (wer dann allerdings vorher kein Backup gemacht hat, ist halt selbst schuld ...)

 

 Nur, wenn da noch Reste von Demodaten im System sind, muß man die schließlich auch finden können ...

 

Ich habe übrigens den Prestashop-Cleaner nie verwendet (gab es schon immer diese vier Auswahlmöglichkeiten?). Ich denke auch, daß es nicht die Regel ist, daß man Demodaten bereits löschen will, bevor man die ersten Kategorien anlegt oder Artikel einpflegt, da wäre eine Funktion, die wirklich nur die Demodaten löscht, erheblich besser.

Link to comment
Share on other sites

Unschön ist es schon. Ich kann ja so aus Prestashop keine korrekte Rechnung für besagte Bestellungen erzeugen. Und was Kunden per Mail ggf schon bekommen haben ist wohl für die Tonne.

 

P.S. Wir löschen immer mal direkt in der DB wenn es sein muss. Aber nur mit vorheriger Sicherung.

Link to comment
Share on other sites

Danke für eure Hilfe! 

 

Die Bestellungen habe ich über die URLs gelöscht: /index.php?tab=AdminOrders&id_order=317&deleteorder&token=b1ab3ae12ab44116bca6bf58c4f439ca einfach jede Bestellung geöffnet und entsprechend angepasst, hatte funktioniert, dachte ich. 

 

DB Backup ist selbstverständlich, habe ich. Ich schaue jetzt Mal die Tabellen ps_orders und ps_cart durch und lösche alles was mit Demo Daten zu tun hat. 

Die bereits getätigten Bestellungen sind natürlich "durch", ich möchte, dass es bei zukünftigen Bestellungen funktioniert :)

 

EDIT

  • Also in ps_orders sind keine Demo Bestellungen mehr enthalten, nur noch die "live" Bestellungen.
  • In psd_cart konnte ich leider nichts finden, da ich die Felder nicht interpretieren kann, alles nur numerisch
  • Mit dem Cleaner habe ich folgendes durchgeführt: EINSCHRÄNKUNGEN DER FUNKTIONALEN INTEGRITÄT Prüfen & Reparieren sowie DATENBANKBEREINIUNG --> Der Shop läuft und es scheint alles noch zu funktionieren, ob es das gebracht hat weiß ich allerdings nicht

 

Die letzte Änderung vom Cleaner habe ich zwischengespeichert, die erste leider nicht

Durch folgende Abfragen wurden Dateninkonsistenzen bereinigt:
DELETE FROM ps_configuration WHERE id_configuration = 364
1 Zeile(n)
DELETE FROM `ps_access` WHERE `id_tab` NOT IN (SELECT `id_tab` FROM `ps_tab`)
4 Zeile(n)
DELETE FROM `ps_cart_product` WHERE `id_cart` NOT IN (SELECT `id_cart` FROM `ps_cart`)
341 Zeile(n)
DELETE FROM `ps_category_group` WHERE `id_group` NOT IN (SELECT `id_group` FROM `ps_group`)
1 Zeile(n)
DELETE FROM `ps_module_currency` WHERE `id_currency` NOT IN (SELECT `id_currency` FROM `ps_currency`)
1 Zeile(n)
DELETE FROM `ps_order_carrier` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`)
2 Zeile(n)
DELETE FROM `ps_order_detail` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`)
7 Zeile(n)
DELETE FROM `ps_order_history` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`)
4 Zeile(n)
DELETE FROM `ps_order_invoice` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`)
2 Zeile(n)
DELETE FROM `ps_order_invoice_payment` WHERE `id_order` NOT IN (SELECT `id_order` FROM `ps_orders`)
2 Zeile(n)
DELETE FROM `ps_product_sale` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`)
5 Zeile(n)
DELETE FROM `ps_search_index` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`)
436 Zeile(n)
DELETE FROM `ps_specific_price_priority` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`)
3 Zeile(n)
DELETE FROM `ps_stock_available` WHERE `id_product` NOT IN (SELECT `id_product` FROM `ps_product`)
7 Zeile(n)
Edited by jschm (see edit history)
Link to comment
Share on other sites

Unschön ist es schon. Ich kann ja so aus Prestashop keine korrekte Rechnung für besagte Bestellungen erzeugen.

`Das war jetzt ein Mißverständnis, ich meinte, daß es nicht unbedingt stören muß, wenn sich noch teilweise Demo-Bestellungen oder andere Demo-Daten im Shopsystem befinden, natürlich nur, wenn diese nicht zu Fehlern bei aktuellen Bestellungen führen.

 

Die Bestellungen habe ich über die URLs gelöscht: /index.php?tab=AdminOrders&id_order=317&deleteorder&token=b1ab3ae12ab44116bca6bf58c4f439ca einfach jede Bestellung geöffnet und entsprechend angepasst, hatte funktioniert, dachte ich. 

Diese Möglichkeit ist mir komplett neu, keine Ahnung ob das funktionieren kann oder nicht, ich würde ja eher vermuten, daß damit nur die Zeile im BackOffice nicht angezeigt wird und beim nächsten Mal wieder da ist. Vielleicht wurde aber tatsächlich eine unvollständige Löschung in der Datenbank dadurch ausgelöst.

 

Interessant, wieviele Tabellen da berücksichtigt werden müssen, wenn man direkt in der Datenbank etwas sauber löschen will ...

 

Von Haus ist aus rechtlichen Gründen ein Löschen von Bestellungen in Prestashop eigentlich nicht möglich, es gibt aber zahlreiche auch kostenlose Module dafür.

Edited by rictools (see edit history)
Link to comment
Share on other sites

@RIC

Alles i.O. Ich kann nach Urlaub auch mal ALLE Tabellen posten, die relevant sind.

Nur ps_orders und ps_cart funktioniert aber in Verbindung mit PS Cleaner Option 3 (referentielle Integrität) auch gut. Warum?

Löscht man in genannten Tabellen, dann hat es überzählige Fremdindexe, zb für Produktedaten, Carrier, Steuern etc. Der PS Cleaner räumt diese überzähligen Leichen dann weg, wenn der Haupt-Tabelleneintrag dafür fehlt.

Link to comment
Share on other sites

und P.S.

Wir haben mehrere Installationen, bei welchen Prestashop sowohl Kunden- als auch Lieferanten-Zahlungen per Schnittstelle an FIBU-Programme liefern. Und auch Verkäufe im Ladengeschäft darüber gehen.

 

Da achten wir penibelst auf korrekte Daten. Nur Test- Kunden mit ID 1, 2 und 3 werden da ggf. nicht übertragen.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...