Регистрация Войти
Вход на сайт
» » Opencart - как изменить номера заказа

Opencart - как изменить номера заказа

Просмотров: 10600
Комментариев: 10
Версия для печати

Возможно, как и я, многие пользователи интернет-магазинов на движке opencart (в т.ч. и его сборок, типа CMS MaxyStore) сталкивались с необходимостью изменения номера заказа в магазине. По умолчанию, номер заказа при покупках формируется в магазине по порядку, т.е. первый заказ - заказ №1, второй - №2 и т.д. Как Вы понимаете это не совсем хорошо. Во-первых, с малым числом заказов в молодом интернет-магазине степень доверия клиентов навряд ли увеличится. Во-вторых, конкуренты могут реально посчитать ежедневное (ежемесячное) количество продаж в магазине, что также плюсов владельцу магазина не добавит. Исходя из этого наилучшим вариантом был бы такой, когда номер заказа генерировался каждый раз случайным образом (рандомно). Искал информацию в интернете как такое реализовать, но, к сожалению, ничего путевого и рабочего так и не нашел. Возможно, что плохо искал... :). Зато нашел пару таких, достаточно простых и работающих варианта. О чем и решил поделиться с вами, вдруг кому-нибудь пригодятся.


Вариант первый.

Оформляем заказ в магазине. Допустим, заказу присваивается номер 1. Далее, заходим в панель управления хостингом - БД - phpMyAdmin. В phpMyAdmin выбираем используемую БД (открываем все ее таблицы), находим oc_order, открываем ее и видим наш последний заказ с номером 1 (столбец "order_id"). Меняем номер заказа на любой другой, например, вместо "1" прописываем "1000". Следующий заказ, сделанный пользователем в интернет-магазине, будет уже имеет номер 1001. Как видим, все достаточно просто.


Вариант второй

В файле order.php (путь \catalog\model\checkout\order.php), после строки:


$order_id = $this->db->getLastId();

Вставляем две строчки:

$new_order_id = $order_id + 10;
	  $this->db->query("alter table `" . DB_PREFIX . "order` AUTO_INCREMENT=" .$new_order_id);


В верхней строке ($new_order_id = $order_id + 10;) мы увеличиваем номер следующего заказа на 10. Т.е., если у нас последний заказ был с номером 1 (№1), то следующий будет иметь уже номер 11, а последующий - №21 и т.п. Разумеется, вместо числа "10", можно использовать любое другое, на ваш выбор - "20", "37", "100" и т.п.

Данные способы проверял на версии opencart 1.5.5.1

Если, кому интересно, вот буржуйский модуль Random Order ID за 30$, который случайным образом генерирует номера заказов для интернет-магазинов opencart (версии v1.5.3, v1.5.3.1, v1.5.4, v1.5.4.1, v1.5.5, v1.5.5.1, v1.5.6).

К сожалению, я не php-программист, поэтому более ничего интересного по этому вопросу предложить не могу. Но, не теряю надежды - вдруг найдутся знающие люди, профессионалы, которые предложат какие-то свои интересные варианты или наработки.


Рейтинг статьи:
  
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо зайти на сайт под своим именем.
Комментарии (10)
Sergey 1 июля 2014 16:46
Спасибо! Помог 1-й способ. smile
Цитировать          1
Алексей 8 июля 2014 22:50
Как в БД менять номер, разобрался. Но дело в том, что у меня номер заказа вообще не выводится http://joxi.ru/9jy8UxjKTJBPH3IFxac
Вот языковой файл: http://joxi.ru/TT28UxjKTJArH4K_Dmo
Цитировать          2
Пользователь offline Офлайн Alexxey 10 июля 2014 08:52
Цитата: Алексей
Как в БД менять номер, разобрался. Но дело в том, что у меня номер заказа вообще не выводится ...

То, о чем я написал в статье - тестировал на opencart 1.5.5.1 и на сборке MaxyStore v.1.5.5.1. Почему у Вас номер заказа не выводится я, к сожалению, не знаю... Причины могут быть самые разные: другая версия движка, установленные ранее модули и дополнения и т.д.
Цитировать          3
Александр 24 августа 2014 13:57
Спасибо! Помог второй способ. люкстон.рф
Цитировать          4
Александр 9 марта 2015 20:26
Спасибо большое!Использовал оба способа)
Цитировать          5
Олег 9 апреля 2015 14:43
$new_order_id = rand($order_id,10000)*20;
$this->db->query("alter table `" . DB_PREFIX . "order` AUTO_INCREMENT=" .$new_order_id);
Можно так используя функцию rand(),будет генерировать случайное число от 1 до 10000 умноженое на любое число,либо любое другое арифметическое выражение.
Цитировать          6
Вероника 16 сентября 2015 23:18
Спасибо, помог первый способ!
Цитировать          7
Александр 19 сентября 2015 07:03
Спасибо. Помог первый способ
Цитировать          8
Sergey 30 сентября 2015 15:58
А как теперь вернуть id к стандартному отчету? Ну добавил я 9000 в БД. Отнимаю теже 9000 у id, а заказ снова 9000-ми приходит.
Цитировать          9
Сергей 10 ноября 2015 13:42
Генерировать ай-дишку не есть хорошо, можете нарваться на неприятность.
Цитировать          10
Оставить комментарий
Ваше имя: *
Ваш e-mail: *
Текст комментария:
Полужирный Наклонный текст Подчёркнутый текст Зачёркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите проверочный код (защита от спама):
код: ----