У меня странная проблема с номером заказа в Magento.
В последнее время, когда один заказ был размещен на моем сайте номер заказ пришел был 100000350
, В идеале это должно было быть, 100000370
как мои предыдущие порядковые номера были 100000369
и 100000367
. Я прикрепил скриншот ниже для этого
Более того, я проверил журналы ошибок, но не нашел ни одной записи. Мы используем SagePay и PayPal в качестве платежного шлюза для него.
Кто-нибудь может направить меня в этом?
Ответы:
В первый раз, когда я получил порядковый номер, у нас было удивление и некоторое смятение, пока я не выяснил, что происходит. Это связано с тем, как Magento распределяет номера заказов на продажу.
Теперь для объяснения.
Процесс заказа Magento создает предложение при первом добавлении чего-либо в корзину.
На данный момент предложение является только потенциальным Заказом на продажу . У него нет назначенного номера, потому что клиент не взял на себя обязательство платить за него.
Когда клиент нажимает кнопку «Приступить» к оформлению заказа, он будет:
Ниже приводится важный момент: клиенты, которые решили зарегистрироваться в корзине, считаются гостевыми клиентами до тех пор, пока заказ не будет завершен, и они не перейдут на страницу успеха, после чего их учетная запись будет создана, и они вошли в систему. Цитата остается гостевым предложением клиента с потерей времени ожидания сеанса в корзине, если заказ не выполнен, и отображается страница успеха.
С заказом кредитной карты происходит следующее, когда нажимается кнопка « Разместить заказ» .
sales_flat_quote
таблица вreserved_order_id
столбце)Если транзакция по кредитной карте отклонена для какого-либо клиента шлюзом оплаты по кредитной карте, и следующий клиент разместит успешный заказ, в последовательности номеров заказов на продажу будет пропущено из-за того, что заказу на продажу с отклоненным платежом назначен зарезервированный номер заказа на продажу. и следующему успешному заказу на продажу присваивается следующий доступный номер.
Для гостевых тележек (гостевых заказов и неудачных регистраций в клиентах корзины), которые превышают время ожидания сеанса, этот зарезервированный номер заказа на продажу будет потерян по истечении сеанса, оставляя пробелы в последовательности заказа на продажу.
Для клиентов, которые вошли в систему до нажатия кнопки « Продолжить» , котировке присваивается идентификатор клиента, поэтому, если они попытаются разместить заказ и обнаружат, что он отклонен, они могут вернуться, войти в систему, обнаружить, что в корзине все еще есть содержимое, и разместить порядок, иногда намного позже (самый длинный на сегодняшний день был четыре месяца). В предложении будет использоваться назначенный зарезервированный номер заказа на продажу, в результате чего на дисплее управления заказами на продажу отобразится номер заказа клиента, вышедший из последовательности .
источник
Я столкнулся с той же проблемой, но это было только тогда, когда сервер был загружен с огромной нагрузкой. Эта проблема возникает, потому что БД переходит в состояние блокировки при преобразовании кавычек в порядок. При дальнейшей проверке я обнаружил, что проблема заключалась в том, что он пытался записать данные в таблицу sales_flat_order_grid в транзакции сразу после вставки в таблицу sales_flat_order. При одновременных запросах это вызывало конфликты блокировки. Реальное решение состоит в том, чтобы убрать часть sales_flat_order_grid из транзакции.
Ссылка помогла мне понять проблему
Патч решил проблему для меня.
Вы должны удалить функцию _afterSave из Mage_Sales_Model_Abstract и добавить
Дайте мне знать, если это решит проблему для вас.
источник
Я не уверен, но это может решить вашу проблему:
Насколько я думаю, что-то могло помешать вашему
eav_entity_store
столу. Он содержит информацию о следующем инкрементном идентификаторе, т.е. используемом порядке. Возможно, какой-то модуль или код в вашей magento-системе изменили его.Откройте эту таблицу и обновите столбец increment_last_id своим последним идентификатором заказа. Будьте осторожны, он содержит идентификаторы приращения других, такие как счет-фактура, отгрузка и т. Д. Чтобы быть уверенным, просто перейдите в
eav_entity_types
таблицу и посмотрите, чтоentity_type_id
дляsales/order
(столбецentity_model
). В моем magento его 5. Так что теперь перейдите кeav_entity_store
таблице и просто обновите increment_id для строки, чей номерentity_type_id
5. Вы можете напрямую обновить ее через phpmyadmin или вы можете выполнить запрос как,Обратите внимание, что 5 является entity_type_id в моем magento для заказа
Может быть много причин для вашей проблемы, но я думаю, что это может решить вашу проблему.
источник