Регистрация
Вход через соцсети
Восстановление пароля

Скидки не авторизованным пользователям

Новый топик
07.02.2012, 14:01
Ответить | Цитировать
Гость
Гость

Добрый день!
Существует ли возможность в магазине предоставлять скидки по общей стоимости в корзине для не авторизованных пользователей или тут уже с бубном колдовать нужно?
т.е. если пользователь авторизовался то скидки работают на 5+, но если пользователь не авторизован и набрал товара на n-ную сумму, то скидка не отображается.
08.02.2012, 11:28
Ответить | Цитировать
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

Есть ошибка в неткэте: скидки не срабатывают для неавторизированного пользователя, в следующем обновлении это будет исправлено.

Ксю доставляет...
03.05.2012, 12:52
Ответить | Цитировать
Димк

Зарегистрирован:
2012-03-21
Сообщений: 6

Цитата:
Есть ошибка в неткэте: скидки не срабатывают для неавторизированного пользователя, в следующем обновлении это будет исправлено.


Добрый день!
Обновился до версии 4.7, скидки все так же не срабатывают для неавторизованного пользователя. Удалось ли как-то исправить или обойти эту ошибку?

Не бывает неудачных экспериментов. Бывают неправильно интерпретированные результаты.
04.05.2012, 14:57
Ответить | Цитировать
Димк

Зарегистрирован:
2012-03-21
Сообщений: 6

Пока не вышло неофициального исправления, сделал временную заплатку. Похоже, что корзина не видит global $AUTH_USER_ID у неавторизованного пользователя, поэтому для функции ApplyDiscounts() (которая находится в /netcat/modules/netshop/function.inc.php) я взял айдишник из объекта корзины CartContents:
Код:
/* костыль для обхода ошибки неработающей скидки для неавторизованного пользователя */
$user_id_for_discount_arr = $this->CartContents;
$user_id_for_discount = $user_id_for_discount_arr[0][User_ID];

ну и чуть ниже по тексту подставил вместо $AUTH_USER_ID свою переменную $user_id_for_discount в
Код:
$discounts = assoc_array("
SELECT * FROM Message$this->discount_table as a, User_Group as ug
WHERE ug.User_ID = $user_id_for_discount AND......


Не бывает неудачных экспериментов. Бывают неправильно интерпретированные результаты.
06.05.2012, 19:18
Ответить | Цитировать
Строганов

Зарегистрирован:
2012-05-06
Сообщений: 1

Скажите, как вам 4.3 в действии?
Рекомендовали бы?

souz01.com - Ассоциация качества пожарной отрасли
12.05.2012, 13:35
Ответить | Цитировать
Nexwich
Панасин Александр
Nexwich

Зарегистрирован:
2011-04-05
Сообщений: 943

А чемя тебя не устраивает 4.7? а скоро выйдет новая. Чем дальше тем только лучше становится.
Ставь последнию или обноляй до таковой и не парьсе все будет в шоколаде.

Модуль "Почтовые уведомления" – настройка уведомлений на вашем сайте без программирования. Цена отзыв. Мне очень важно ваше мнение.
21.05.2012, 11:22
Ответить | Цитировать
Димк

Зарегистрирован:
2012-03-21
Сообщений: 6

в прошлом сообщении я в абсолютно неверном месте брал $AUTH_USER_ID, кроме того дело было также и в условии выборки скидок. Вот более правильный кусок функции:
Код:

$user_id_for_discount = (!empty($AUTH_USER_ID) ? $AUTH_USER_ID : 0 );
$registered_user_string = ($user_id_for_discount > 0 ? "ug.User_ID = ".$user_id_for_discount." AND " : "");
/* костыли END */

// кусок костылей: строка (a.UserGroups = '' OR FIND_IN_SET(ug.PermissionGroup_ID, a.UserGroups)) заменена на
// (a.UserGroups = '' OR a.UserGroups = (SELECT PermissionGroup_ID FROM User_Group WHERE User_ID=".$user_id_for_discount."))
$discounts = assoc_array("
SELECT * FROM Message$this->discount_table as a, User_Group as ug
WHERE ".$registered_user_string."
(
(
a.AppliesTo=2 /* whole cart */ AND
(a.UserGroups = '' OR FIND_IN_SET(ug.PermissionGroup_ID, a.UserGroups))
)
OR
(
/* discounts applied to goods */ (a.GoodsTypes = '' OR $goods_types) AND
(a.UserGroups = '' OR a.UserGroups = (SELECT PermissionGroup_ID FROM User_Group WHERE User_ID=".$user_id_for_discount."))
)
) AND ( /* common part for both cart and goods discounts */
(
(a.ValidFrom IS NULL AND a.ValidTo IS NULL) OR
(a.ValidFrom <= NOW() AND a.ValidTo >= NOW())
) AND
(a.TypeOfPrice = '' OR FIND_IN_SET('$this->PriceColumn', a.TypeOfPrice)) AND
Checked = 1
)
GROUP BY a.Message_ID ORDER BY a.AppliesTo, a.Priority DESC
");


Не бывает неудачных экспериментов. Бывают неправильно интерпретированные результаты.
21.05.2012, 11:26
Ответить | Цитировать
Димк

Зарегистрирован:
2012-03-21
Сообщений: 6

С версией 4.3, по-моему, не сталкивался. Думаю, что в ней вполне можно работать. Но лучше, конечно, обновиться (если есть возможность). Например в версии 4.7 дизайн корзины можно теперь редактировать из админки, а в более старых версиях приходилось в файлах ковыряться.

Не бывает неудачных экспериментов. Бывают неправильно интерпретированные результаты.
198 196 2012-05-21 11:26:19 11880
Описание проекта