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


Просмотр неоформленных заказов и отправка напоминания о них покупателям.


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

#1 ssergioss25

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

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

Отправлено 31 March 2014 - 06:31 PM

Кто то тут просил, вроде бы.Предложу свой вариант. Суть его сводиться к следующему. В таблице shopping_carts создается 2 дополнительных поля :
1 - "timecart" - тип поля datetime, в нем будет хранится дата добавления товара в корзину покупателем для того, чтобы вычислять через сколько дней отправлять уведомление

2 - "send" тип поля boolean, по умолчанию 0, в нем будет храниться только два числа "0" или "1". Первое означает, что уведомление покупателю еще не было отправлено, а второе, что было. Мне показалось правильным сделать так, чтобы не надоедать покупателям письмами, а отправлять уведомление только один раз. Разумеется, если этот же покупатель вновь добавил товар, ему придет уведомление уже на него.

Далее :

1.Копируем файлы :

reports_cart.tpl.html - в core/tpl/admin

reports_cart.php - в core/includes/admin/sub

customer_order_no.tpl.html в core/tpl/email

2.В reports.php сразу за строкой :

array( "id" => "security", "name" => ADMIN_SECURITY )

вставляем :

,array("id"=>"cart", "name"=>ADMIN_CART)

3. В default.tpl.html после строки :

<div class="marg"><a href="{$smarty.const.ADMIN_FILE}?dpt=reports&amp;sub=security">{$smarty.const.ADMIN_SECURITY}</a></div>

вставляем :

<div class="marg">
<a href="{$smarty.const.ADMIN_FILE}?dpt=reports&amp;sub=cart">{$smarty.const.ADMIN_CART}</a>
</div>

В russian.php прописываем константу :

define('ADMIN_CART', 'Недоофомленные заказы');

4. В cart_functions.php меняем функцию :

function InsertItemIntoCart($itemID)
{
db_query("insert ".SHOPPING_CARTS_TABLE."(customerID, itemID, Quantity)".
"values( '".(int)regGetIdByLogin($_SESSION["log"])."', '".(int)$itemID."', 1 )" );
}

на :

function InsertItemIntoCart($itemID)
{
db_query("insert ".SHOPPING_CARTS_TABLE."(customerID, itemID, Quantity, timecart)".
"values( '".(int)regGetIdByLogin($_SESSION["log"])."', '".(int)$itemID."', 1, '".get_current_time()."')" );
}


В файле reports_cart.php есть переменная $days. В ней задается количество прошедших дней с того дня, когда покупатель положил товары в корзину. По умолчанию - 3.

После всего этого, в админке под "Отчеты" должна появиться ссылка "Недоофомленные заказы". Перейдя по ней, можно видеть содержимое корзины покупателей (если прошло заданное $days кол-во дней), а также отправлять им напоминание (текст напоминания можно изменить в файле customer_order_no.tpl.html).

Не исключаю, что где то что то пропустил, или допустил ошибку, хотя у меня лично все работает. Смотрите, используйте и, если что, пишите. Надеюсь, кому нибудь пригодиться )

Прикрепленные файлы

  • Прикрепленный файл  cart_mail.rar   2.35К   26 Количество загрузок:

  • 3

#2 Revived

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

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

Отправлено 30 September 2016 - 11:00 PM

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

#3 Salp

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

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 06 October 2016 - 11:40 PM

Интересно, а зачем оно все картинки перебирает и в присланном уведомлении товаров получается намного больше, чем реально лежит в корзине?
  • 0

#4 ssergioss25

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

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

Отправлено 09 October 2016 - 03:16 PM

Интересно, а зачем оно все картинки перебирает и в присланном уведомлении товаров получается намного больше, чем реально лежит в корзине?



Если вы имеете ввиду, что в письме покупателю дублируются товары, у которых больше одной фотографии, то нужно сделать вот что. В файле reports_cart.php :

Строку :

LEFT JOIN ".PRODUCT_PICTURES." AS g USING (productID)

заменить на :

LEFT JOIN ".PRODUCT_PICTURES." AS g ON (f.default_picture=g.photoID)


И еще одно, что не написал раньше. Уже не помню почему, но нужно было еще одну функцию изменить. В файле functions.php, в функции moveCartFromSession2DB :

строку :

db_query("insert ".SHOPPING_CARTS_TABLE." (customerID, itemID, Quantity) values ( ".
(int)$customerID.", ".(int)$itemID.", ".(int)$_SESSION["counts"][$key]." )");

заменить на :

db_query("insert ".SHOPPING_CARTS_TABLE." (customerID, itemID, Quantity, ,timecart) values ( ".
(int)$customerID.", ".(int)$itemID.", ".(int)$_SESSION["counts"][$key].", '".get_current_time()."' )");

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

#5 Salp

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

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 16 April 2017 - 10:10 PM

Обнаружил ошибку, которая возникла после установки модуля. Теперь при наборе товаров в корзину неавторизованным пользователем, после авторизации товары не переносятся в базу пользователя и исчезают из корзины. В админке в логах ошибок появляется запись:
ERROR: 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'timecart) values ( 1, 3681, 1, '2017-04-16 13:20:01' )' at line 1
Sql: insert cguy_shopping_carts (customerID, itemID, Quantity, ,timecart) values ( 1, 3681, 1, '2017-04-16 13:20:01' )
Link: /index.php?register_authorization=yes

  • 0

#6 Salp

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

  • Assistent vsupport.club
  • PipPipPip
  • 218 сообщений
Репутация: 54
Продвинутый

Отправлено 17 April 2017 - 12:14 AM

Проблема, вероятно, возникает из-за того что в таблицу shopping_carts было добавено поле timecart с флагом "Not Null". При переносе это поле не заполняется и поэтому возникает ошибка.

Нашел проблему - лишняя запятая в function.php
 db_query("insert ".SHOPPING_CARTS_TABLE." (customerID, itemID, ,timecart) values ( ".

должно быть
 db_query("insert ".SHOPPING_CARTS_TABLE." (customerID, itemID, timecart) values ( ".

  • 0

#7 hedhedhed

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

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 4
Начинающий

Отправлено 22 September 2017 - 03:20 PM

........
  • 0

#8 hedhedhed

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

  • Download User
  • PipPipPip
  • 107 сообщений
Репутация: 4
Начинающий

Отправлено 09 October 2017 - 11:38 AM

........
  • 0