Перейти к содержимому


Возможность покупателю в истории заказов самостоятельно добавлять в заказ товары, используя код товара.


  • Вы не можете ответить в тему
Сообщений в теме: 7

#1 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 11 February 2014 - 02:03 PM

Возможность покупателю в истории заказов самостоятельно добавлять в заказ товары, используя код товара. При добавлении, администратору на почту приходит уведомление с указанием добавленного покупателем товара.

В order_history.php после строки :
if ( isset($order_detailed))
{

Вставляем :

if (isset ($_POST["code_add"])) {
if ($_POST["quantity_add"] < 1) $_POST["quantity_add"] = 1;
$add = db_query( "SELECT productID, name, price FROM ".DB_PRFX."products
WHERE product_code=".$_POST["code_add"]." AND enabled = 1
");
$add2 = db_fetch_row($add);
if ($add2['name']) {
$add_mail = 'Клиент сделал изменения в заказе № '.(int) $order_detailed.'<br>Добавлен товар : <a href="'.CONF_FULL_SHOP_URL.'product_'.$add2['productID'].'.html">'.$add2['name'].'</a> в количестве '.$_POST["quantity_add"].' шт';
xMailTxtHTMLDATA(CONF_GENERAL_EMAIL, 'Изменения в заказе №'.(int) $order_detailed.'', $add_mail);
$new_order_amount = $add2['price'] * $_POST["quantity_add"];
db_query("UPDATE ".DB_PRFX."orders SET order_amount=order_amount + ".$new_order_amount." where orderID=".(int) $order_detailed."
");
$chk = db_query( "SELECT itemID FROM ".DB_PRFX."ordered_carts
WHERE name LIKE '%".$add2['name']."%' AND orderID=".(int) $order_detailed."
");
$chk2 = db_fetch_row($chk);
if ($chk2['itemID']) {
db_query("UPDATE ".DB_PRFX."ordered_carts SET Quantity=Quantity + ".$_POST["quantity_add"]." where itemID=".$chk2['itemID']." LIMIT 1
");
}
else {
$pr_code = '['.$_POST["code_add"].']';
db_query("INSERT INTO ".SHOPPING_CART_ITEMS_TABLE." (productID) VALUES ('".(int)$add2['productID']."')");
db_query ("insert into ".DB_PRFX."ordered_carts
( itemID, orderID, name, Price, Quantity, tax, load_counter) ".
" values( ".db_insert_id().", ".(int) $order_detailed.", '{$pr_code} {$add2['name']}', ".
(int)$add2['price'].", ".(int)$_POST["quantity_add"].", '0', '0') ");
}
}
else {
$smarty->assign( "no_code", true);
}
}


В order_history.tpl перед

{if $order_status_report}

Вставляем :


{if $order.statusID != "5" and $order.statusID != "1"}
<table cellspacing="0" cellpadding="0" width="100%">
<form method="POST" action="" name="add">
<tr>
<td class="cbt" align="left"><b>Действия над заказом</b></td>
</tr>
</table>
<table cellspacing="1" cellpadding="10" width="100%" class="gre">
<tr>
<td align="center">
<input type="submit" value="Добавить товар к заказу">
{if $no_code}<br><span class="error">Товар не найден или отсутствует в продаже</span>{/if}
</td>
<td align="center"><input type="text" placeholder="Введите код товара" name="code_add"></td>
<td align="center"><input type="text" placeholder="Введите количество" name="quantity_add"></td>
</tr></form></table>
{/if}


Условие :

{if $order.statusID != "5" and $order.statusID != "1"}

подразумевает, что покупатель не может добавлять товар, если заказ Выполнен, или Отменен. Кому это не нужно, или у кого статусы заказов другие, можно это убрать или изменить.
  • 0

#2 NLO56

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 91 сообщений
Репутация: 5
Начинающий
  • ГородСанкт-Петербург

Отправлено 20 March 2014 - 08:36 AM

Что то у меня не получается. Вроде пути правильные.
Изменения делаем в:
core/tpl/user/название шаблона/order_history.tpl.html
и:
core/includes/order_history.php

В таблице префикс базы_order.status Смотрим.

statusID status_name

1 STRING_CANCELED_ORDER_STATUS

2 Новый

3 В обработке

4 Отправлен

5 Доставлен

6 Ожидание оплаты

7 Зарезервированно

8 Оплата получена

9 Уточнение заказа

10 Готов к выдаче

11 Выдан

12 Задержка отгрузки

13 Оповещение

{if $order.statusID != "5" and $order.statusID != "1"}

В этой строке нужно подставить ID статуса при котором данная опция будет не доступна.
В моем случае нужно для статусов:
Выдан (ID-11)
Отправлен (ID-4)
Переделываю:
{if $order.statusID != "11" and $order.statusID != "4"}

При попытке добавить товар, под появившейся кнопкой появлется красная надпись:
Товар не найден или отсутствует в продаже
Хотя товар с этим кодом в наличии.
Что не так?
  • 0

#3 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 20 March 2014 - 11:53 AM

При попытке добавить товар, под появившейся кнопкой появлется красная надпись:
Товар не найден или отсутствует в продаже


У вас не обрабатывается условие :

if (isset ($_POST["code_add"])) {

Проверьте, что не ошиблись в этой строке:

<td align="center"><input type="text" placeholder="Введите код товара" name="code_add"></td>

Это первое. И второе. Если присмотреться к коду, то в order_history.tpl, чуть ниже комментария {* Информация о заказе *}
есть еще одна форма :

<form action="" name='MainForm' method="POST">

Что она делает и отправляет я так и не понял. В таком виде получается, что

<form method="POST" action="" name="add">

находится внутри этой формы, что, в общем то, не правильно. Попробуйте убрать или закоментировать эту форму, а также в самом низу закрывающий ее тег :

</form>

В инструкции я это не писал, тк у меня изначально работало и так, а потребовалось это сделать, когда я добавил еще и возможность удалять товар и изменять количество.
  • 0

#4 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 20 March 2014 - 12:33 PM

Это первое. И второе. Если присмотреться к коду, то в order_history.tpl, чуть ниже комментария {* Информация о заказе *} есть еще одна форма :

В дефолтовом order_history.tpl.html нет ни комментария, ни формы. Это добавлено каким-то модулем либо дополнением.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#5 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 20 March 2014 - 01:02 PM

В дефолтовом order_history.tpl.html нет ни комментария, ни формы. Это добавлено каким-то модулем либо дополнением.

Ну, как же нету ) Специально скачал дефолтный шаблон и посмотрел. Комментария действительно нет, а вот форма есть. После кода :

{else}
<div class="fil1 white"></div>
<table cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="cbt" align="left"><b>{$smarty.const.STRING_ORDERING_INFO} #{$order.orderID}</b></td>
</tr>
</table>

  • 0

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 20 March 2014 - 01:14 PM

Комментария действительно нет, а вот форма есть.

А, да, есть. Я ошибся и искал форму add, а не MainForm.
И правда, не понятно, зачем там форма. Ни одного сабмита этой формы я не нашел.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 03 May 2014 - 08:15 PM

Если кому интересно будет, могу выложить также и возможность изменять кол-во товара, удалять товар, отменять заказ. Все это реализовано на Ajax, то есть ,без перезагрузки страницы, с уведомлением администратору о всех действиях, а также пользователю, во всплавающих сообщениях на экране.
Заранее спрашиваю, а не выкладываю сразу по одной простой причине - требуется небольшое время для подгонки всего этого под дефолтовый шаблон.
  • 0

#8 Revived

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 59 сообщений
Репутация: 0
Начинающий

Отправлено 20 August 2014 - 11:42 AM

Если кому интересно будет, могу выложить также и возможность изменять кол-во товара, удалять товар, отменять заказ. Все это реализовано на Ajax, то есть ,без перезагрузки страницы, с уведомлением администратору о всех действиях, а также пользователю, во всплавающих сообщениях на экране.
Заранее спрашиваю, а не выкладываю сразу по одной простой причине - требуется небольшое время для подгонки всего этого под дефолтовый шаблон.

Интересно конечно.
А с этим модулем у кого-то получилось, у меня так и не работает.

Ага, он просто не понимает кода где есть кириллические символы.

Вышел из ситуации так:
$code_add = $_POST["code_add"];
$add = db_query( "SELECT productID, name, price FROM ".DB_PRFX."products
WHERE  product_code='$code_add' AND enabled = 1");

Сообщение отредактировал Revived: 20 August 2014 - 06:09 PM

  • 0