Ich habe ein seltsames Problem mit der Bestellnummer in Magento.
Als kürzlich eine Bestellung auf meiner Website 100000350
aufgegeben wurde , lautete die Bestellnummer. Idealerweise sollte es so sein, 100000370
wie meine vorherigen Bestellnummern waren 100000369
und 100000367
. Ich habe den Screenshot unten dazu angehängt
Außerdem habe ich nach den Fehlerprotokollen gesucht, aber keinen Eintrag gefunden. Wir verwenden SagePay und PayPal als Zahlungsgateway dafür.
Kann mich jemand dazu führen?
magento-1.7
sales-order
order-status
Dexter
quelle
quelle
Antworten:
Als ich zum ersten Mal eine Nummer außerhalb der Sequenz bekam, waren wir überrascht und bestürzt, bis ich herausfand, was los war. Dies hängt damit zusammen, wie Magento Kundenauftragsnummern zuweist.
Nun zur Erklärung.
Der Magento-Bestellvorgang erstellt ein Angebot, wenn zum ersten Mal etwas in den Warenkorb gelegt wird.
Zu diesem Zeitpunkt ist das Angebot nur ein potenzieller Kundenauftrag . Es ist keine Nummer zugewiesen, da sich der Kunde nicht verpflichtet hat, dafür zu bezahlen.
Wenn der Kunde zum Auschecken auf die Schaltfläche "Weiter" klickt , wird er:
Was folgt, ist ein wichtiger Punkt: Die Kunden, die sich im Warenkorb registrieren, werden bis zum Abschluss der Bestellung als Gastkunden behandelt und gelangen auf die Erfolgsseite. Zu diesem Zeitpunkt wird ihr Konto erstellt und sie sind angemeldet. Das Angebot bleibt ein Gastkundenangebot mit dem Sitzungszeitlimitverlust des Warenkorbs, wenn die Bestellung nicht abgeschlossen und eine Erfolgsseite angezeigt wird.
Bei einer Kreditkartenbestellung geschieht Folgendes, wenn Sie auf die Schaltfläche Bestellung aufgeben klicken.
sales_flat_quote
Tabelle in derreserved_order_id
Spalte)Wenn die Kreditkartentransaktion für einen Kunden vom Kreditkartenzahlungs-Gateway abgelehnt wird und der nächste Kunde eine erfolgreiche Bestellung aufgibt, wird die Reihenfolge der Kundenauftragsnummern übersprungen, da dem Kundenauftrag für die abgelehnte Zahlung eine reservierte Kundenauftragsnummer zugewiesen wurde und dem folgenden erfolgreichen Kundenauftrag wird die nächste verfügbare Nummer zugewiesen.
Bei Gastwagen (Gastbestellungen und nicht erfolgreiches Registrieren bei Warenkorbkunden), die das Sitzungszeitlimit überschreiten, geht diese reservierte Kundenauftragsnummer nach Ablauf der Sitzung verloren, wodurch Lücken in der Kundenauftragssequenz entstehen .
Kunden, die sich vor dem Klicken auf die Schaltfläche "Weiter" angemeldet haben , wird dem Angebot eine Kunden-ID zugewiesen. Wenn sie also versuchen, eine Bestellung aufzugeben und feststellen, dass sie abgelehnt wurde, können sie zurückkehren, sich anmelden, feststellen, dass der Warenkorb noch Inhalt enthält, und die Bestellung, manchmal viel später (am längsten bis heute war vier Monate). Das Zitat wird die zugewiesene reserviert Kundenauftragsnummer verwenden, was zu einem außerhalb der Reihenfolge Kundenauftragsnummer zeigt in Ihrem Kundenauftragsmanagement Anzeige.
quelle
Ich hatte das gleiche Problem, aber es war nur, als der Server mit einer großen Menge an Last getroffen wurde. Dieses Problem tritt auf, weil die Datenbank beim Konvertieren des Angebots in die Reihenfolge in den Sperrstatus wechselt. Bei weiterer Prüfung stellte ich fest, dass das Problem darin bestand, dass versucht wurde, innerhalb der Transaktion direkt nach dem Einfügen in die Tabelle sales_flat_order in die Tabelle sales_flat_order_grid zu schreiben. Bei gleichzeitigen Abfragen kam es zu Sperrkollisionen. Die eigentliche Lösung besteht darin, sales_flat_order_grid aus der Transaktion zu entfernen.
Der Link hat mir geholfen, das Problem zu verstehen
Der Patch hat das Problem für mich behoben.
Sie müssen die Funktion _afterSave aus dem Mage_Sales_Model_Abstract entfernen und hinzufügen
Lassen Sie mich wissen, ob es das Problem für Sie löst.
quelle
Ich bin nicht sicher, aber dies könnte Ihr Problem lösen:
Soweit ich denke, könnte etwas Ihren
eav_entity_store
Tisch gestört haben . Es enthält Informationen zur nächsten Inkrement-ID, dh zur zu verwendenden Bestell-ID. Möglicherweise hat ein Modul oder Code in Ihrem Magento-System dies geändert.Öffnen Sie diese Tabelle und aktualisieren Sie die Spalte increment_last_id mit Ihrer letzten Bestellnummer. Seien Sie vorsichtig, es enthält Zuwachs IDs von anderen auch wie Rechnung, Versand usw. Um sicher zu sein, gehen Sie einfach auf
eav_entity_types
Tisch und sehen , was das istentity_type_id
fürsales/order
(Spalteentity_model
). In meinem Magento ist es 5. Gehen Sie nun zureav_entity_store
Tabelle und aktualisieren Sie einfach die increment_id für die Zeile mit dementity_type_id
Wert 5. Sie können sie direkt über phpmyadmin aktualisieren oder Abfragen wie ausführen.Bitte beachten Sie, dass 5 in meinem Magento für die Bestellung entity_type_id ist
Es kann viele Gründe für Ihr Problem geben, aber ich denke, dies könnte Ihr Problem lösen.
quelle