Alte Bestellungen in PrestaShop archivieren: ein schnelles Backoffice, ohne Rechnungen zu verlieren
Mit den Jahren wachsen die Bestelltabellen, und das Backoffice wird zäh. Löschen ist keine Option, archivieren schon. Wir erklären, was verschoben wird, was erhalten bleiben muss und welche Vorsichtsmaßnahmen die Nummerierung schützen.
Sie öffnen „Bestellungen“ im Backoffice, und es dauert. Sie filtern nach Kunde, und es dauert noch länger. Der Shop verkauft seit Jahren, und jede Bestellung hat Zeilen in rund zwanzig Tabellen hinterlassen: Positionen, Statusverlauf, Zahlungen, Rechnungen, Versand, Nachrichten, der Warenkorb, aus dem sie entstanden ist. Keine dieser Zeilen verschwindet von selbst.
Die Versuchung ist, alte Bestellungen zu löschen. Tun Sie das nicht: Sie haben Aufbewahrungspflichten, und eine in PrestaShop von Hand gelöschte Bestellung hinterlässt verwaiste Zeilen in anderen Tabellen. Was Sie tun können, ist archivieren.
Warum es langsam wird
Die Bestellliste von PrestaShop fragt nicht nur eine Tabelle ab. Um jede Zeile darzustellen, verknüpft sie die Bestellung mit Kunde, Adresse, Land, aktuellem Status und Währung, und zum Filtern und Sortieren muss sie viele Zeilen durchgehen. Bei Zehn- oder Hunderttausenden von Bestellungen arbeitet jede Suche auf dem gesamten Verlauf, auch wenn Sie nur die dieser Woche sehen wollen.
Das betrifft auch andere Bildschirme: die Kundenansicht, die Statistiken, einige Module, die Werte aus dem Bestellverlauf berechnen, und die Exporte.
Archivieren ist nicht löschen
Archivieren heißt, die alten Bestellungen aus den aktiven Tabellen zu nehmen und sie vollständig in anderen Tabellen abzulegen, wo man sie einsehen und bei Bedarf zurückholen kann. Der Unterschied zum Löschen ist grundlegend:
- Die Bestellung existiert weiter mit allen Daten: Positionen, Beträge, Steuern, Rechnungen, Gutschriften, Zahlungen und Nachrichten.
- Sie können sie suchen und ansehen, wenn ein Kunde oder Ihre Steuerberatung danach fragt.
- Sie können sie mit derselben Nummer wiederherstellen, wenn sie im Tagesgeschäft wieder gebraucht wird.
Handels- und Steuerrecht verpflichten Sie, Rechnungen und Unterlagen jahrelang aufzubewahren. Archivieren ist damit vereinbar, Löschen nicht.
Was mit jeder Bestellung mitwandern muss
Eine Bestellung in PrestaShop ist keine einzelne Zeile. Verschieben Sie nur die Bestelltabelle, hängt der Rest in der Luft. Mindestens zusammen gehören:
- Die Bestellung und ihre Positionen.
- Der Statusverlauf.
- Rechnungen, Lieferscheine, Zahlungen und Gutschriften.
- Rücksendungen und ihre Positionen.
- Versanddienstleister und Sendungsverfolgung.
- Der Warenkorb, aus dem sie entstanden ist, und seine Produkte.
- Die Nachrichten zur Bestellung.
Und es muss als Transaktion ablaufen: Entweder wird die ganze Bestellung verschoben oder gar nichts. Eine Archivierung, die mittendrin abbricht und auf jeder Seite eine halbe Bestellung hinterlässt, ist schlimmer, als nicht zu archivieren.
Die Fallen der Nummerierung
Hier liegt das Detail, das die meisten Probleme macht. PrestaShop berechnet die nächste Bestell-, Rechnungs- und Lieferscheinnummer aus den Nummern, die in den Tabellen stehen. Archivieren Sie ausgerechnet die Bestellung mit der letzten Rechnungsnummer, kann PrestaShop sie „nicht sehen“ und bei der nächsten Rechnung die Nummer wiederholen. Eine doppelte Rechnungsnummer ist ein ernstes steuerliches Problem.
Vorsichtige Regeln:
- Niemals die Bestellung mit der letzten Bestell-, Rechnungs- oder Lieferscheinnummer archivieren.
- Verhindern, dass eine neue Bestellung die Nummer einer archivierten bekommt.
- Wenn Sie mit einem anderen Modul eigene Serien oder Nummernkreise verwenden, prüfen Sie vor dem Archivieren in einer Kopie, wie es die nächste Nummer berechnet.
Welche Bestellungen archivieren
Das übliche Kriterium ist das Alter, aber es lohnt sich, es zu verfeinern:
- Mindestalter. Ein halbes Jahr oder ein Jahr ist ein vernünftiger Ausgangspunkt; es hängt von Ihrer Rückgabefrist und der Gewährleistung ab.
- Status. Nur abgeschlossene Bestellungen: zugestellt, storniert, erstattet. Eine Bestellung, die auf Zahlung wartet oder sich in der Rücksendung befindet, wird nicht archiviert.
- Jüngste Bewegung. Hatte eine alte Bestellung kürzlich einen Statuswechsel (eine späte Gutschrift, ein Gewährleistungsfall), wartet man besser.
- Geteilte Bestellungen. Hat ein Warenkorb mehrere Bestellungen erzeugt, werden alle zusammen archiviert oder keine.
Was sich für Sie und den Kunden ändert
Eine archivierte Bestellung verlässt die Tabellen des Kerns, daher:
- Sie zählt nicht mehr in den Kernstatistiken von PrestaShop.
- Sie erscheint nicht im Verlauf unter „Mein Konto“ des Kunden, bis Sie sie wiederherstellen; es empfiehlt sich ein Hinweistext, dass seine alten Bestellungen archiviert sind und er sie anfordern kann.
- Module, die Werte aus dem Verlauf berechnen (Treueprogramme, Segmente, Empfehlungen), sehen sie nicht mehr. Prüfen Sie, welche Sie einsetzen.
Mit Verstand vorgehen
- Vollständige Sicherung der Datenbank vor der ersten Archivierung.
- Simulation: Kandidaten und zu verschiebende Zeilen zählen, ohne etwas zu verschieben.
- Kleine Durchgänge am Anfang, und die Archivliste sowie eine Wiederherstellung prüfen.
- Automatisieren mit einer geplanten Aufgabe und einem E-Mail-Bericht zu jedem Lauf.
- Endgültiges Löschen gesperrt lassen. Wenn eines Tages etwas aus dem Archiv gelöscht wird, soll das ein bewusstes Entsperren und eine eigene Berechtigung erfordern.
Ein Hinweis zu den Versionen: Läuft Ihr Shop noch auf einer frühen 1.7 oder einer 1.6, entlastet das Archivieren das Backoffice, ersetzt aber nicht das Update. PrestaShop 8 und 9 mit aktuellem PHP sind auch bei denselben Abfragen schneller. Steht eine Migration an, verringert vorheriges Archivieren die Datenmenge, die übertragen und getestet werden muss.
Häufige Fragen
Kann ich für eine archivierte Bestellung noch eine Gutschrift ausstellen? Nicht direkt: Zuerst stellen Sie sie wieder her, erstellen die Gutschrift wie gewohnt, und auf Wunsch wandert sie beim nächsten Durchgang wieder ins Archiv. Deshalb sollte das Mindestalter über Ihrer Rückgabefrist und Gewährleistung liegen.
Gibt das Archivieren Speicherplatz frei? Es verschiebt Zeilen von einigen Tabellen in andere, die Gesamtgröße der Datenbank sinkt also nicht. Besser wird die Geschwindigkeit der Abfragen auf den aktiven Tabellen. Die Tabellen nach jedem Lauf zu optimieren hilft, einen Teil des durch Lücken belegten Platzes zurückzugewinnen.
Und kann meine Steuerberatung weiterhin alte Rechnungen anfordern? Ja. Die Rechnungen bleiben mit der archivierten Bestellung gespeichert und lassen sich bei Bedarf einsehen oder wiederherstellen.
So lösen Sie es in PrestaShop
RKR Order Archive nimmt alte Bestellungen aus den aktiven Tabellen und legt sie vollständig, mit ihren 20 Tabellen (Positionen, Verlauf, Rechnungen, Zahlungen, Rücksendungen, Gutschriften, Warenkorb und Nachrichten), in einem Archiv mit Liste, Suche und Filtern ab. Sie wählen Alter, Status, Shop, Mindestbetrag und Größe jedes Durchgangs und können Bestellungen mit jüngster Bewegung ausschließen. Es bringt einen Simulationsmodus, einen Cron mit eigenem Token, einen E-Mail-Bericht und eine exakte Wiederherstellung mit derselben Nummer mit. Jeder Vorgang ist eine Transaktion; die Bestellung mit der letzten Rechnungs-, Lieferschein- oder Bestellnummer wird nicht archiviert, geteilte Bestellungen werden erst archiviert, wenn alle zusammen können, und das endgültige Löschen ist standardmäßig gesperrt.