Как правило это делают для удобочитаемости номера заказа, ведь SFSDRGSTG гораздо сложнее назвать и запомнить нежели номер 0000000001, к примеру. Тем более, что этот  способ очень простой, что позволяет не исправлять десятки файлов, с переменной $order->reference на $order->id.

Почему я делаю не через override? 

да, потому что в prestashop 1.7 оверрайды можно делать только для классов, которые не используют пространства имен. Т.е. вы можете применить к таким классам как (Address.php, Product.php)

пруфы здесь: доки престашопа

в версии 1.6 всё это достаточно просто сделать через override папку.

Итак, что нам требуется сделать: 

В файле /classes/order.php ищем функцию:

public static function generateReference()
{
    return strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
}

И меняем на:


public static function generateReference()
{
    $last_id = Db::getInstance()->getValue('
        SELECT MAX(id_order)
        FROM '._DB_PREFIX_.'orders');
    return str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);
 
}

формат имени заказа будет: 000000001 и не надо везде править код.

Убрать дублирующиtся поля ID и Название заказа в панели управления, в меню заказы можно в

/controllers/admin/AdminOrdersController.php закоментировав код


/*
            'reference' => array(
                'title' => $this->trans('Reference', array(), 'Admin.Global')
            ),
*/



вот и всё

з.ы. данное решение подходит и для prestashop 1.6


Добавить комментарий

@

Комментарии

  • Denis 26.06.2019 18:06
    Спасибо! огромное