Основной курс по Joomla
0 Пользователей и 1 Гость просматривают эту тему.
  • 26 Ответов
  • 9801 Просмотров
*

vlom

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

*

vlom

  • Осваиваюсь на форуме
  • ***
  • 37
  • 2
Re: Человеческий номер заказа
« Ответ #1 : 24.04.2012, 15: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

  • Осваиваюсь на форуме
  • ***
  • 129
  • 1
Re: Человеческий номер заказа
« Ответ #2 : 22.06.2012, 17:11:53 »
У меня там есть только orders.php

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Re: Человеческий номер заказа
« Ответ #3 : 18.07.2012, 15: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

  • Осваиваюсь на форуме
  • ***
  • 54
  • 0
Re: Человеческий номер заказа
« Ответ #4 : 02.11.2012, 01:39:49 »
а как ноль убрать в начале?

*

Fedor Vlasenko

  • Профи
  • ********
  • 3800
  • 698
  • Все начинается с Value
Re: Человеческий номер заказа
« Ответ #5 : 02.11.2012, 01:46:57 »
а как ноль убрать в начале?
удалить заказы предыдущие
сделать, чтобы последний был цифровым ну и на крайний случай добавить строку
$_orderData->order_number=ltrim($_orderData->order_number, '0');

*

Dr.House

  • Новичок
  • *
  • 6
  • 0
Re: Человеческий номер заказа
« Ответ #6 : 06.11.2012, 17: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

  • Осваиваюсь на форуме
  • ***
  • 54
  • 0
Re: Человеческий номер заказа
« Ответ #7 : 08.11.2012, 03: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, 03:13:50 от glutton »

*

aivalab

  • Захожу иногда
  • **
  • 16
  • 0
Re: Человеческий номер заказа
« Ответ #8 : 26.11.2012, 16:34:08 »
Прошу помощи - как сбросить ID заказов ?
Сейчас после тестирования ID заказа идет наприер 179, а номер заказа 068. очень нужно уровнять, кто знает что делать ?

*

mixfix83

  • Новичок
  • *
  • 5
  • 1
Re: Человеческий номер заказа
« Ответ #9 : 01.12.2012, 21: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

  • Захожу иногда
  • **
  • 16
  • 0
Re: Человеческий номер заказа
« Ответ #10 : 01.12.2012, 21:54:42 »
id и номер заказа несколько разные вещи вообще-то

*

mixfix83

  • Новичок
  • *
  • 5
  • 1
Re: Человеческий номер заказа
« Ответ #11 : 03.12.2012, 11:31:46 »
id и номер заказа несколько разные вещи вообще-то
Естественно, а я разве утверждал обратное?

*

aivalab

  • Захожу иногда
  • **
  • 16
  • 0
Re: Человеческий номер заказа
« Ответ #12 : 03.12.2012, 11:54:03 »
Естественно, а я разве утверждал обратное?
наверное не так понял.
не подскажите, как мне все-таки уровнять эти два значения ?

*

mixfix83

  • Новичок
  • *
  • 5
  • 1
Re: Человеческий номер заказа
« Ответ #13 : 04.12.2012, 00:53:25 »
Цитировать
не подскажите, как мне все-таки уровнять эти два значения ?
А вот я не знаю, но если бы была такая у меня необходимость копал бы в базе данных

*

twister2013

  • Осваиваюсь на форуме
  • ***
  • 91
  • 3
Re: Человеческий номер заказа
« Ответ #14 : 10.09.2013, 13:01:45 »
Уважаемые любители VirtueMart!
Подскажите пожалуйста, у меня используется плагин для распечатки счета после оформления заказа, номер счета там выглядит так:
Код
СЧЕТ № <?php echo $InvId ?>
Номер заказа я сделал как написал Fedor Vlasenko . А как бы мне этот номер заказа вставить  вместо номера счета. Заранее спасибо

Решил сам. Как удалить пост не пойму
« Последнее редактирование: 12.09.2013, 16:15:33 от twister2013 »
Подпись - зло и лишний трафик

*

bankinobi

  • Осваиваюсь на форуме
  • ***
  • 42
  • 0
Re: Человеческий номер заказа
« Ответ #15 : 14.09.2013, 21:22:05 »
Решил сам. Как удалить пост не пойму
А и не надо ничего удалять, лучше напишите ваше решение проблемы)

*

twister2013

  • Осваиваюсь на форуме
  • ***
  • 91
  • 3
Re: Человеческий номер заказа
« Ответ #16 : 17.09.2013, 13:18:18 »
А и не надо ничего удалять, лучше напишите ваше решение проблемы)
заменил virtuemart_order_id на order_number
Подпись - зло и лишний трафик

*

magic7tyle

  • Осваиваюсь на форуме
  • ***
  • 37
  • 1
Re: Человеческий номер заказа
« Ответ #17 : 28.09.2013, 04: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

  • Живу я здесь
  • ******
  • 1066
  • 17
Re: Человеческий номер заказа
« Ответ #18 : 07.10.2013, 16: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

  • Практически профи
  • *******
  • 1892
  • 21
Re: Человеческий номер заказа
« Ответ #19 : 15.07.2014, 15:50:44 »
а как сделать чтобы номера заказов начинались с цифры 1 , следущий 2 и т.д.?

*

MMONSTERR

  • Осваиваюсь на форуме
  • ***
  • 59
  • 3
Re: Человеческий номер заказа
« Ответ #20 : 11.08.2014, 19: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

  • Завсегдатай
  • *****
  • 498
  • 70
  • могу укусить:)
Re: Человеческий номер заказа
« Ответ #21 : 18.08.2014, 14:52:45 »
Может кому пригодится... На просторах инета нашел плагин. И код не надо ковырять и номер заказа можно хоть как-то в божеский вид привести...

*

bankinobi

  • Осваиваюсь на форуме
  • ***
  • 42
  • 0
Re: Человеческий номер заказа
« Ответ #22 : 07.09.2014, 23:16:08 »
Может кому пригодится... На просторах инета нашел плагин. И код не надо ковырять и номер заказа можно хоть как-то в божеский вид привести...
За плагин спасибо, решил разом головняк)

*

Stasweb

  • Живу я здесь
  • ******
  • 1066
  • 17
Re: Человеческий номер заказа
« Ответ #23 : 28.10.2014, 11: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

  • Давно я тут
  • ****
  • 214
  • 5
Re: Человеческий номер заказа
« Ответ #24 : 28.04.2015, 12: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

  • Новичок
  • *
  • 6
  • 0
Re: Человеческий номер заказа
« Ответ #25 : 03.10.2015, 11:43:58 »
В VM3 эта функция помечена как устаревшая, вместо нее используется genStdOrderNumber (если кому-то интересно). Расположена там же, на одну позицию выше.

*

rony1111

  • Новичок
  • *
  • 3
  • 0
Re: Человеческий номер заказа
« Ответ #26 : 04.12.2015, 18:11:10 »
Нашла классный модуль (бесплатный). У меня все работает, сделала номер под требования разных курьерок https://www.genius-webdesign.com/joomla-extensions/63-genius-order-numbering-for-virtuemart-2
Joomla 2.5