[Помогите] Номер заказа

Тема в разделе "OpenCart", создана пользователем ulikiev, 31 май 2013.

  1. ulikiev

    ulikiev

    Регистрация:
    3 фев 2013
    Сообщения:
    102
    Симпатии:
    29
    нужно чтобы номера заказов были не по очередности 1. 2. 3. 4. 5.
    а в случайном/уникальном порядке 1. 4. 7. 11. 3. 90. 34 можно с буквами 12d 3f 5d

    можно ли такое организовать?
     
  2. ulikiev

    ulikiev

    Регистрация:
    3 фев 2013
    Сообщения:
    102
    Симпатии:
    29
    или можно по времени 26-10-2013 14:30
     
  3. yuzi

    yuzi

    Регистрация:
    5 янв 2013
    Сообщения:
    133
    Симпатии:
    71
    можно все ))
    используй php функция date():

    string date ( string format [, int timestamp] )

    d -> День месяца, 2 цифры с ведущими нулями от 01 до 31
    D -> Сокращенное наименование дня недели, 3 символа от Mon до Sun
    F -> Полное наименование месяца, например January или March от January до December
    g -> Часы в 12-часовом формате без ведущих нулей От 1 до 12
    G -> Часы в 24-часовом формате без ведущих нулей От 0 до 23
    h -> Часы в 12-часовом формате с ведущими нулями От 01 до 12
    H -> Часы в 24-часовом формате с ведущими нулями От 00 до 23
    i -> Минуты с ведущими нулями 00 to 59
     
  4. ulikiev

    ulikiev

    Регистрация:
    3 фев 2013
    Сообщения:
    102
    Симпатии:
    29
    во первых где ее использовать
    а во вторых id_order задается mysql
     
  5. yuzi

    yuzi

    Регистрация:
    5 янв 2013
    Сообщения:
    133
    Симпатии:
    71
    1- использовать при занесении заказа в Mysql: ...catalog\model\checkout\order.php
    2 - снять AUTO_INCREMENT с поля id_order (и теперь не будет задаваться автоматически)
     
    ulikiev нравится это.
  6. ulikiev

    ulikiev

    Регистрация:
    3 фев 2013
    Сообщения:
    102
    Симпатии:
    29
    пожалуйста еще по подробнее!!! не могу сам догнать
    что то здесь надо менять?
    public function getOrder($order_id) {
    $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "'");
     
  7. yuzi

    yuzi

    Регистрация:
    5 янв 2013
    Сообщения:
    133
    Симпатии:
    71
    Функция "public function getOrder($order_id)" - это выборка уже сделанных заказов.
    В самом верху файла есть функция "public function addOrder($data)" она отвечает за добавления нового заказа в Базу Данных MySql:
    добавляете в перечень переменных 'id_order' и присваиваете ему значение функции date() = 'date("m.d.y-H:i:s")' тогда номер заказа у Вас сформируется в формате 01.06.13-15:04:59
    Не забудьте предварительно подготовить в БД это поле 'id_order' как 'varchar(20)' !!!
     
  8. ulikiev

    ulikiev

    Регистрация:
    3 фев 2013
    Сообщения:
    102
    Симпатии:
    29
    попадает в брошенные заказы!
    может скиньте готовую строчку
    Код:
    public function addOrder($data) {
    $this->db->query("INSERT INTO `" . DB_PREFIX . "order` SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', store_id = '" . (int)$data['store_id'] . "', store_name = '" . $this->db->escape($data['store_name']) . "', store_url = '" . $this->db->escape($data['store_url']) . "', customer_id = '" . (int)$data['customer_id'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', payment_firstname = '" . $this->db->escape($data['payment_firstname']) . "', payment_lastname = '" . $this->db->escape($data['payment_lastname']) . "', payment_company = '" . $this->db->escape($data['payment_company']) . "', payment_company_id = '" . $this->db->escape($data['payment_company_id']) . "', payment_tax_id = '" . $this->db->escape($data['payment_tax_id']) . "', payment_address_1 = '" . $this->db->escape($data['payment_address_1']) . "', payment_address_2 = '" . $this->db->escape($data['payment_address_2']) . "', payment_city = '" . $this->db->escape($data['payment_city']) . "', payment_postcode = '" . $this->db->escape($data['payment_postcode']) . "', payment_country = '" . $this->db->escape($data['payment_country']) . "', payment_country_id = '" . (int)$data['payment_country_id'] . "', payment_zone = '" . $this->db->escape($data['payment_zone']) . "', payment_zone_id = '" . (int)$data['payment_zone_id'] . "', payment_address_format = '" . $this->db->escape($data['payment_address_format']) . "', payment_method = '" . $this->db->escape($data['payment_method']) . "', payment_code = '" . $this->db->escape($data['payment_code']) . "', shipping_firstname = '" . $this->db->escape($data['shipping_firstname']) . "', shipping_lastname = '" . $this->db->escape($data['shipping_lastname']) . "', shipping_company = '" . $this->db->escape($data['shipping_company']) . "', shipping_address_1 = '" . $this->db->escape($data['shipping_address_1']) . "', shipping_address_2 = '" . $this->db->escape($data['shipping_address_2']) . "', shipping_city = '" . $this->db->escape($data['shipping_city']) . "', shipping_postcode = '" . $this->db->escape($data['shipping_postcode']) . "', shipping_country = '" . $this->db->escape($data['shipping_country']) . "', shipping_country_id = '" . (int)$data['shipping_country_id'] . "', shipping_zone = '" . $this->db->escape($data['shipping_zone']) . "', shipping_zone_id = '" . (int)$data['shipping_zone_id'] . "', shipping_address_format = '" . $this->db->escape($data['shipping_address_format']) . "', shipping_method = '" . $this->db->escape($data['shipping_method']) . "', shipping_code = '" . $this->db->escape($data['shipping_code']) . "', comment = '" . $this->db->escape($data['comment']) . "', total = '" . (float)$data['total'] . "', affiliate_id = '" . (int)$data['affiliate_id'] . "', commission = '" . (float)$data['commission'] . "', language_id = '" . (int)$data['language_id'] . "', currency_id = '" . (int)$data['currency_id'] . "', currency_code = '" . $this->db->escape($data['currency_code']) . "', currency_value = '" . (float)$data['currency_value'] . "', ip = '" . $this->db->escape($data['ip']) . "', forwarded_ip = '" .  $this->db->escape($data['forwarded_ip']) . "', user_agent = '" . $this->db->escape($data['user_agent']) . "', accept_language = '" . $this->db->escape($data['accept_language']) . "', date_added = NOW(), date_modified = NOW()");
    
    --- добавлено: 1 июн 2013 в 20:10 ---
    и заказ просмотреть не могу "Страница, которую Вы запрашиваете, не найдена"
     
  9. noobie

    noobie

    Регистрация:
    27 мар 2013
    Сообщения:
    174
    Симпатии:
    22
    Так же интересует этот вопрос. Ставил модуль отдельный AddonCustomOrderID но он работает странно и не решает задачу.
    У кого то есть решение?
     
  10. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    319
    Симпатии:
    54
    Привет!
    Решили вопрос с AddonCustomOrderID?
    или нашли другой путь?

    Выложите модуль пожалуйста
     
  11. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    А смысл так заморачиваться? Поставьте какое-нибудь большое начальное значение order id и хватамба. Например, можно стартануть с 10000
     
  12. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    319
    Симпатии:
    54
    объясняю
    важен не начальный номер, а шаг между номерами заказов.
    для того чтобы не было видно сколько магазин продает товаров.
    Это отлично реализовано на амазоне, таобао, алиэкспресс, витакост, и так далее.

    И вообще, вопрос был как это сделать, но не по какому умыслу:ninja:.
     
  13. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    Вот не пойму я таких вот извращений с нормально организованной логикой, зачем вам номера заказов в системе менять, если нужно какое то отображение для клиента или в отчетах - выводите номер счета, а номер заказа не трогайте.
     
    mr.Elias нравится это.
  14. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    319
    Симпатии:
    54
    BACO, подскажите в каких шаблонах надо закомментировать номер заказа?
     
  15. Baco

    Baco Антихронофаг Команда форума

    Регистрация:
    9 окт 2012
    Сообщения:
    803
    Симпатии:
    399
    Если имееться в виду, номер, который фигурирует в письме, то надо зайти по адресу: catalog/model/checkout/order.php
    найти: и начиная со строки: $subject = sprintf($language->get('text_new_subject'), $order_info['store_name'], $order_id); и до конца функции рассылки убрать $order_id, это так в общем направление, а так, то деликатно надо смотреть что к чему...
     
    mr.Elias нравится это.
  16. mr.Elias

    mr.Elias

    Регистрация:
    15 июн 2013
    Сообщения:
    319
    Симпатии:
    54
    а если в кабинете пользователя еще удалить, то где надо копать?

    Но вообще мне идея с айди заказа в формате даты ГГГГММЧЧММСС нравится намного больше. логичнее как-то.
     
  17. Yoda

    Yoda

    Регистрация:
    5 фев 2013
    Сообщения:
    122
    Симпатии:
    22
    catalog/controller/accaunt/ и смотреть какие ещё файлы используются
     
    mr.Elias нравится это.