Jump to content
покупайте без комиссии
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

Произвольный номер заказа


Recommended Posts

Нужен модуль, который будет нумеровать заказы не 1, 2, 3, 4 и т.д., а по правилу "последний номер +13" к примеру.

Link to post
Share on other sites

А это где должно выводиться? Клиенту, в админку, на почту или куда?

Link to post
Share on other sites

9 минут назад, niger сказал:

А это где должно выводиться? Клиенту, в админку, на почту или куда?

По идее везде: админка, клиенту на почту, на сайте при формлении заказа.

Link to post
Share on other sites

5 минут назад, nikifalex сказал:

почему именно +13 ?

Это для примера дано (указано же в задании "+13, к примеру"). Т.е. это значение можно через админку менять. Или в идеале настраивается 1 раз по правилу:

При заказе  9:00 до 17:00 к последнему номеру заказа +16.

При заказе с 17:00 до 20:00  к последнему номеру заказа +11. 

При заказе с 20:00 до 09:00  к последнему номеру заказа +7.

Т.е. 1 раз прописано правило. Менять не надо  этом случае.

Link to post
Share on other sites

не получится у вас такое

разве что не номер а номер счета это да, это можно

 

Ну или просто сделать дополнительно поле с таким номером

Edited by spectre
Link to post
Share on other sites

Я так предполагаю, вам нужно во всех контроллерах, найти order_id и добавить к этой переменной 13. Или добавить свою логику. Но это во многих местах придется делать. И в админке тоже. 

Так как добавлять в таблицу не по порядку это не феншуй.

Edited by niger
Link to post
Share on other sites

@spectre @niger вы какую то дичь пишете. Это делается относительно легко и без проблем.

Link to post
Share on other sites
2 минуты назад, nikifalex сказал:

@spectre @niger вы какую то дичь пишете. Это делается относительно легко и без проблем.

Ну так поделитесь :)

Так сходу надо добавлять в addorder к getlastid но сдается мне будут приколы

Link to post
Share on other sites
5 минут назад, nikifalex сказал:

@spectre @niger вы какую то дичь пишете. Это делается относительно легко и без проблем.

Готова приобрести данное решение))

Link to post
Share on other sites

@nikifalex В базу при сохранении херачить с такими айди?)))) ну ну. Легко и без проблема это сделать. Очень классный  вариант исполнения 

Link to post
Share on other sites

1 минуту назад, spectre сказал:

Ну так поделитесь :)

Так сходу надо добавлять в addorder к getlastid но сдается мне будут приколы

Зато легко и без проблем =)

Link to post
Share on other sites

1 минуту назад, spectre сказал:

Так сходу надо добавлять в addorder к getlastid но сдается мне будут приколы

 

Вот вам решение без приколов.

просто высчитывайте order_id самостоятельно, по любому алгоритму. И передавайте его явно в INSERT INTO order запрос

тогда auto_increment срабатывать не будет.

проверка на уникальность primary может дать отлуп в 0.0001% случаев, поэтому ловите ошибку после insert

 

Link to post
Share on other sites
6 минут назад, nikifalex сказал:

 

Вот вам решение без приколов.

просто высчитывайте order_id самостоятельно, по любому алгоритму. И передавайте его явно в INSERT INTO order запрос

тогда auto_increment срабатывать не будет.

проверка на уникальность primary может дать отлуп в 0.0001% случаев, поэтому ловите ошибку после insert

 

Я в ОПЕНКАРТ просто пользователь, которому надо совсем всё "в рот положить". Можно подробное решение? Если Вам удобно, то можно в ЛС писать.

Link to post
Share on other sites

  • 2 months later...

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

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

добавить строки

$new_order_id = $order_id + КОЛИЧЕСТВО_ПОЗИЦИЙ;
$this->db->query("alter table `" . DB_PREFIX . "order` AUTO_INCREMENT=" .$new_order_id);

Если нужно случайное число, например от 5 до 15, напишите вместо КОЛИЧЕСТВО_ПОЗИЦИЙ - rand(5, 15)

Проверено на версиях 1.5 - 2.3

После внесения изменений не забывайте обновлять кэш дополнений.

Edited by ukrline
Link to post
Share on other sites

16 часов назад, ukrline сказал:

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


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

добавить строки


$new_order_id = $order_id + КОЛИЧЕСТВО_ПОЗИЦИЙ;
$this->db->query("alter table `" . DB_PREFIX . "order` AUTO_INCREMENT=" .$new_order_id);

Если нужно случайное число, например от 5 до 15, напишите вместо КОЛИЧЕСТВО_ПОЗИЦИЙ - rand(5, 15)

Проверено на версиях 1.5 - 2.3

После внесения изменений не забывайте обновлять кэш дополнений.

Супер!!!

На 2.3. работает.

БЛАГОДАРЮ)))

Link to post
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
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.