Как правило это делают для удобочитаемости номера заказа, ведь 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
Frustrated by the lack of "pluck" in lodash... found this cool trick pic.twitter.com/vvj2JSvOBh
— Caleb Porzio (@calebporzio) 19 июля 2017 г.
Написал модуль отзывов для магазина.