Форум русской поддержки Joomla!® CMS
09.12.2016, 17:35:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Человеческий номер заказа

 (Прочитано 8776 раз)
0 Пользователей и 1 Гость смотрят эту тему.
vlom
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 37


« : 24.04.2012, 10:21:45 »

Кто подскажет где в вирте можно изменить способ формирования номера заказа?
Сейчас выглядит так 522b025 а мне скажем надо сделать такого вида 000356
что бы в номере содержались исключительно цифры и номера шли по порядку
Записан
vlom
Осваиваюсь на форуме
***

Репутация: +2/-0
Offline Offline

Сообщений: 37


« Ответ #1 : 24.04.2012, 13:47:21 »

решил таки эту проблему, хоть и пришлось пол дня потратить
решение такое, открываем файл /administartor/components/com_virtumarte/models/order.php
ищем метод generateOrderNumber
и меням его содержимое на
Код:
    $db = JFactory::getDBO();
        $q = 'SELECT `order_number`
        FROM #__virtuemart_orders
        ORDER BY `order_number` DESC
        LIMIT 1';
        $db->setQuery($q);
        $data = $db->loadAssoc();
        $a = (int)$data['order_number'] + 1;
        echo $a;
        return $a;
Записан
xilgiz
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 129


« Ответ #2 : 22.06.2012, 15:11:53 »

У меня там есть только orders.php
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #3 : 18.07.2012, 13:34:22 »

Файл administrator/components/com_virtuemart/models/orders.php
заменяем строку $_orderData->order_number =''; (у меня 565 была, версия 2.08) на
$_orderData->order_number = $this->generateOrderNumber($_usr->get('id'),0,$_orderData->virtuemart_vendor_id);
Радуемся и наслаждаемся  Yes!
Записан
glutton
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 54


« Ответ #4 : 01.11.2012, 23:39:49 »

а как ноль убрать в начале?
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #5 : 01.11.2012, 23:46:57 »

а как ноль убрать в начале?
удалить заказы предыдущие
сделать, чтобы последний был цифровым ну и на крайний случай добавить строку
$_orderData->order_number=ltrim($_orderData->order_number, '0');
Записан
Dr.House
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6



« Ответ #6 : 06.11.2012, 15:31:11 »

Файл administrator/components/com_virtuemart/models/orders.php
заменяем строку $_orderData->order_number =''; (у меня 565 была, версия 2.08) на
$_orderData->order_number = $this->generateOrderNumber($_usr->get('id'),0,$_orderData->virtuemart_vendor_id);
Радуемся и наслаждаемся  Yes!
а как сделать, что бы за номер заказа брал id заказа? заранее спасибо!
Записан
glutton
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Сообщений: 54


« Ответ #7 : 08.11.2012, 01:08:26 »

Файл administrator/components/com_virtuemart/models/orders.php
заменяем строку $_orderData->order_number =''; (у меня 565 была, версия 2.08) на
$_orderData->order_number = $this->generateOrderNumber($_usr->get('id'),0,$_orderData->virtuemart_vendor_id);
Радуемся и наслаждаемся  Yes!

Вот такую ошибку стало выдавать после подтверждения заказа:
Код:
Warning: substr() expects parameter 3 to be long, string given in /administrator/components/com_virtuemart/models/orders.php on line 1128

Что бы это могло быть?
Я как раз недавно добавил напрямую в базу данных 3 (три) разных продавца (vendors) - может, как раз с этим связано?
« Последнее редактирование: 08.11.2012, 01:13:50 от glutton » Записан
aivalab
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #8 : 26.11.2012, 14:34:08 »

Прошу помощи - как сбросить ID заказов ?
Сейчас после тестирования ID заказа идет наприер 179, а номер заказа 068. очень нужно уровнять, кто знает что делать ?
Записан
mixfix83
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 5


« Ответ #9 : 01.12.2012, 19:49:47 »

Я себе сделал, что бы за id заказа шла дата. Например: 54011212, где 54 - id заказа, 011212 - день/месяц и год. В итоге функуия выглядит так
Код:
public function generateOrderNumber($uid = 0,$length=10, $virtuemart_vendor_id=1)
{
$db = JFactory::getDBO();
$q = 'SELECT `virtuemart_order_id` FROM #__virtuemart_orders ORDER BY `virtuemart_order_id` DESC LIMIT 1';
$db->setQuery($q);
$data = $db->loadAssoc();
$order_id = ($data['virtuemart_order_id']+1).date("dmy");
return (int)$order_id;
}
Записан
aivalab
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #10 : 01.12.2012, 19:54:42 »

id и номер заказа несколько разные вещи вообще-то
Записан
mixfix83
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 5


« Ответ #11 : 03.12.2012, 09:31:46 »

id и номер заказа несколько разные вещи вообще-то
Естественно, а я разве утверждал обратное?
Записан
aivalab
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 16


« Ответ #12 : 03.12.2012, 09:54:03 »

Естественно, а я разве утверждал обратное?
наверное не так понял.
не подскажите, как мне все-таки уровнять эти два значения ?
Записан
mixfix83
Новичок
*

Репутация: +1/-0
Offline Offline

Сообщений: 5


« Ответ #13 : 03.12.2012, 22:53:25 »

Цитировать
не подскажите, как мне все-таки уровнять эти два значения ?
А вот я не знаю, но если бы была такая у меня необходимость копал бы в базе данных
Записан
twister2013
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 92



« Ответ #14 : 10.09.2013, 11:01:45 »

Уважаемые любители VirtueMart!
Подскажите пожалуйста, у меня используется плагин для распечатки счета после оформления заказа, номер счета там выглядит так:
Код:
СЧЕТ № <?php echo $InvId ?>
Номер заказа я сделал как написал Fedor Vlasenko . А как бы мне этот номер заказа вставить  вместо номера счета. Заранее спасибо

Решил сам. Как удалить пост не пойму
« Последнее редактирование: 12.09.2013, 14:15:33 от twister2013 » Записан
bankinobi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 42



« Ответ #15 : 14.09.2013, 19:22:05 »

Решил сам. Как удалить пост не пойму
А и не надо ничего удалять, лучше напишите ваше решение проблемы)
Записан
twister2013
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Пол: Мужской
Сообщений: 92



« Ответ #16 : 17.09.2013, 11:18:18 »

А и не надо ничего удалять, лучше напишите ваше решение проблемы)
заменил virtuemart_order_id на order_number
Записан
magic7tyle
Осваиваюсь на форуме
***

Репутация: +1/-0
Offline Offline

Сообщений: 37



« Ответ #17 : 28.09.2013, 02:00:03 »

В данный момент у меня функция выглядит следующим образом:
Код:
public function generateOrderNumber($uid = 0,$length=10, $virtuemart_vendor_id=1)
{
$db = JFactory::getDBO();
$q = 'SELECT `virtuemart_order_id` FROM #__virtuemart_orders ORDER BY `virtuemart_order_id` DESC LIMIT 1';
$db->setQuery($q);
$data = $db->loadAssoc();
$order_id = date('Ymd').($data['virtuemart_order_id']+1);
return (int)$order_id;
}
и она выдаёт номер заказа типа 201309281, где 2013 - год, 09 - месяц, 28 - текущий день месяца, 1 - $data['virtuemart_order_id']...
Как мне получить номер заказа типа 20130928-00001
Записан
Stasweb
Живу я здесь
******

Репутация: +15/-0
Offline Offline

Пол: Мужской
Сообщений: 951



« Ответ #18 : 07.10.2013, 14:21:21 »

а вот можно с этого
Код:
public function generateOrderNumber($uid = 0,$length=10, $virtuemart_vendor_id=1)
{
$db = JFactory::getDBO();
$q = 'SELECT `virtuemart_order_id` FROM #__virtuemart_orders ORDER BY `virtuemart_order_id` DESC LIMIT 1';
$db->setQuery($q);
$data = $db->loadAssoc();
$order_id = ($data['virtuemart_order_id']+1).date("dmy");
return (int)$order_id;
}
чтоб было
не 212071013
а вот так  212-07,10,13
Записан
stardel
Практически профи
*******

Репутация: +21/-0
Offline Offline

Сообщений: 1890


« Ответ #19 : 15.07.2014, 13:50:44 »

а как сделать чтобы номера заказов начинались с цифры 1 , следущий 2 и т.д.?
Записан
MMONSTERR
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 59



« Ответ #20 : 11.08.2014, 17:39:30 »

Да простят меня программисты. Или улучшат мой код, я сделал так:

В administrator/components/com_virtuemart/models/orders.php, я добавил в самый конец функции generateOrderNumber следующее:
Код:
$_SESSION['mm_vm_order_id'] = $data;
return $data;

А в templates\ВАШ_ШАБЛОН\html\com_virtuemart\cart\order_done.php

Код:
$db =& JFactory::getDBO();
$___id_order = mysql_fetch_assoc(mysql_query("SELECT `virtuemart_order_id` FROM `".$db->getPrefix()."virtuemart_orders` WHERE
`order_number` = '".$_SESSION['mm_vm_order_id']."' LIMIT 1;"));
echo 'Номер заказа: '.$___id_order['virtuemart_order_id'];
Записан
Messir
Завсегдатай
*****

Репутация: +70/-0
Offline Offline

Пол: Мужской
Сообщений: 499


могу укусить:)


« Ответ #21 : 18.08.2014, 12:52:45 »

Может кому пригодится... На просторах инета нашел плагин. И код не надо ковырять и номер заказа можно хоть как-то в божеский вид привести...
Записан
bankinobi
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 42



« Ответ #22 : 07.09.2014, 21:16:08 »

Может кому пригодится... На просторах инета нашел плагин. И код не надо ковырять и номер заказа можно хоть как-то в божеский вид привести...
За плагин спасибо, решил разом головняк)
Записан
Stasweb
Живу я здесь
******

Репутация: +15/-0
Offline Offline

Пол: Мужской
Сообщений: 951



« Ответ #23 : 28.10.2014, 10:23:53 »

На 4-том шаге оформления стал выдавать вот такую ошибку
Цитировать
Couldn't create order
No order created
и номер заказа стал какой-то странный
был такой (2124231014)  при том что ID заказа (2124) и дата (23-10-14)
до ошибки стал выводить
2-1 а ID заказа нормальный 2150 по порядку
дальше стал вообще не понятно что выводить
2147483647-2014-10-28- а ID заказа 2154
в /administartor/components/com_virtumarte/models/order.php
строки 1313 / 1321
Код:
static public function generateOrderNumber($uid = 0,$length=10, $virtuemart_vendor_id=1)
{
    $db = JFactory::getDBO();
    $q = 'SELECT `virtuemart_order_id` FROM #__virtuemart_orders ORDER BY `virtuemart_order_id` DESC LIMIT 1';
    $db->setQuery($q);
    $data = $db->loadAssoc();
    $order_id = ($data['virtuemart_order_id']+1).date("dmy");
    return (int)$order_id;
}
Записан
Dobreff
Давно я тут
****

Репутация: +8/-4
Offline Offline

Сообщений: 212


« Ответ #24 : 28.04.2015, 11:23:08 »

Я себе сделал, что бы за id заказа шла дата. Например: 54011212, где 54 - id заказа, 011212 - день/месяц и год. В итоге функуия выглядит так
Код:
public function generateOrderNumber($uid = 0,$length=10, $virtuemart_vendor_id=1)
{
$db = JFactory::getDBO();
$q = 'SELECT `virtuemart_order_id` FROM #__virtuemart_orders ORDER BY `virtuemart_order_id` DESC LIMIT 1';
$db->setQuery($q);
$data = $db->loadAssoc();
$order_id = ($data['virtuemart_order_id']+1).date("dmy");
return (int)$order_id;
}

Отлично! Супер! Работает.
Записан
Carapax
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #25 : 03.10.2015, 10:43:58 »

В VM3 эта функция помечена как устаревшая, вместо нее используется genStdOrderNumber (если кому-то интересно). Расположена там же, на одну позицию выше.
Записан
rony1111
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 3


« Ответ #26 : 04.12.2015, 17:11:10 »

Нашла классный модуль (бесплатный). У меня все работает, сделала номер под требования разных курьерок https://www.genius-webdesign.com/joomla-extensions/63-genius-order-numbering-for-virtuemart-2
Joomla 2.5
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet