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


Правила форума

Внимание!!! Если не можете скачать, пожалуйста ознакомьтесь с условиями получения доступа с файлам форума. Правила форума


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


Сообщений в теме: 6

#1 ssergioss25

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

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

Отправлено 31 марта 2014 - 18:31

Кто то тут просил, вроде бы.Предложу свой вариант. Суть его сводиться к следующему. В таблице 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К   21 Количество загрузок:


#2 Revived

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

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

Отправлено 30 сентября 2016 - 23:00

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

#3 Salp

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

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

Отправлено 06 октября 2016 - 23:40

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

#4 ssergioss25

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

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

Отправлено 09 октября 2016 - 15:16

Просмотр сообщенияSalp (06 октября 2016 - 23:40) писал:

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


Если вы имеете ввиду, что в письме покупателю дублируются товары, у которых больше одной фотографии, то нужно сделать вот что. В файле 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()."' )");

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

#5 Salp

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

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

Отправлено 16 апреля 2017 - 22:10

Обнаружил ошибку, которая возникла после установки модуля. Теперь при наборе товаров в корзину неавторизованным пользователем, после авторизации товары не переносятся в базу пользователя и исчезают из корзины. В админке в логах ошибок появляется запись:
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


#6 Salp

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

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

Отправлено 17 апреля 2017 - 00:14

Проблема, вероятно, возникает из-за того что в таблицу 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 ( ".


#7 hedhedhed

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

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

Отправлено 22 сентября 2017 - 15:20

Цитата

в админке под "Отчеты" должна появиться ссылка "Недоофомленные заказы"
что-то нет ничего :(
Или она появляется не сразу ?