Перейти к содержанию
Официальный форум поддержки Simpla

Рекомендуемые сообщения

Вещь нужная, так как существуют скидки для разных групп, а переводить туда клиентов вручную напряжно.
Итак решение:
1) Надо добавить столбец в таблицу groups, где хранятся данные о группах, в котором будут лежать накопительные пределы.
Для этого заходим в phpmyAdmin вашей БД магазина и выполняем запрос:

ALTER TABLE groups ADD COLUMN acc_limit float(10,2) NOT NULL default '0.00'


Тут float(10,2) означает, сколько нам понадобится знаков до и после запятой (в данном случае - 8 до и 2 после). Выставляете в зависимости от вашей валюты. Мне восьми хватит с головой.

2) Далее скачиваем по ссылке http://narod.ru/disk/24524971000/simpla.zip.html файлы, которые надо заменить в точности так, как они лежат в архиве
3) Только файл email_accumulated_discount.tpl кладем в папку design/ваш_шаблон/html/ - это шаблон уведомления, который отсылается зарегиным клиентам, когда они переходят в новую группу.

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

В закладке "Группы покупателей" добавилось новое поле "Накопительный предел".

Надеюсь, кому-то помог.
Буду рад предложениям.
P.S. Ну плз, сделайте BBCode хоть какой-то :(
А то добавлений в файлы очень мало, но тут их описываь - никто не поймет зрительно, пришлось файлы крепить измененные!

Ссылка на сообщение
Поделиться на другие сайты

тут же можно решить проблему с автопереносом покупателя в какую-то группу, например, "покупатели". То есть, если клиент зарегистрировался и купил хоть что-то, он может попасть в определенную группу. Этой группе достаточно выставить минимальный предел 0.01

Ссылка на сообщение
Поделиться на другие сайты

Как бы еще сделать такую систему, при которой только пользователь состоящий в какой-нибудь группе, мог вступать в след. группу при увеличении покупок.

kpoxas - случайно не знаешь как можно так доработать?

Ссылка на сообщение
Поделиться на другие сайты

Знаю :)

Заходим в admin/Order.admin.php
Находим функцию

// перевод пользователя в нужную группу по накопительной скидке by kpoxas
function set_accumulated_group($user_id)
{
// получим сумму всех заказов
$query = sql_placeholder('SELECT
SUM(orders_products.price*orders_products.quantity) as sum
FROM orders
LEFT JOIN orders_products ON orders.order_id = orders_products.order_id
WHERE user_id=?
AND (orders.status=2 or orders.payment_status=1)
', $user_id);
$this->db->query($query);
$sum = $this->db->results();
$sum=(!empty($sum))?$sum[0]->sum:0;

// получим текущий предел для этого юзера
$query = sql_placeholder('SELECT gr.acc_limit from groups gr, users u WHERE gr.group_id=u.group_id and u.user_id=?', $user_id);
$old_limit = $this->db->results();

$old_limit=(!empty($old_limit))?$old_limit->acc_limit:0;

// получим соответствующую пределу группу для этого юзера
$query = sql_placeholder('SELECT groups.*, users.email, users.name as user_name
FROM groups
LEFT JOIN users on users.user_id=?
WHERE groups.acc_limit < ?
AND groups.acc_limit > ?
ORDER BY groups.acc_limit DESC',
$user_id, $sum, $old_limit);
$this->db->query($query);
$available_group = $this->db->results();


if (!empty($available_group))
{
$available_group=$available_group[0];

$query = sql_placeholder('UPDATE users
SET group_id=?
WHERE user_id=?',
$available_group->group_id, $user_id);
$this->db->query($query);
// отошлем уведомление
$this->smarty->assign('available_group', $available_group);
$this->smarty->assign('accumulated_value', $sum);
$this->smarty->assign('main_currency', $this->main_currency);
$message = $this->smarty->fetch('file:../../design/'.$this->settings->theme.'/html/email_accumulated_discount.tpl');
$this->email($available_group->email, 'Вы получили накопительную скидку '.$available_group->discount.'%', $message);
}

}



и меняуем на эту. Вроде должно работать. Так не проверял






function set_accumulated_group($user_id)
{
// получим сумму всех заказов
$query = sql_placeholder('SELECT
SUM(orders_products.price*orders_products.quantity) as sum
FROM orders
LEFT JOIN orders_products ON orders.order_id = orders_products.order_id
WHERE user_id=?
AND (orders.status=2 or orders.payment_status=1)
', $user_id);
$this->db->query($query);
$sum = $this->db->results();
$sum=(!empty($sum))?$sum[0]->sum:0;

// получим текущий предел для этого юзера
$query = sql_placeholder('SELECT gr.acc_limit, gr.group_id
FROM users as u
LEFT JOIN groups as gr on (gr.group_id=u.group_id)
WHERE u.user_id=?', $user_id);
$old_limit = $this->db->results();

if (!empty($old_limit->group_id) && $old_limit->group_id!='')
{
$old_limit=(!empty($old_limit))?$old_limit->acc_limit:0;

// получим соответствующую пределу группу для этого юзера
$query = sql_placeholder('SELECT groups.*, users.email, users.name as user_name
FROM groups
LEFT JOIN users on users.user_id=?
WHERE groups.acc_limit < ?
AND groups.acc_limit > ?
ORDER BY groups.acc_limit DESC',
$user_id, $sum, $old_limit);
$this->db->query($query);
$available_group = $this->db->results();


if (!empty($available_group))
{
$available_group=$available_group[0];

$query = sql_placeholder('UPDATE users
SET group_id=?
WHERE user_id=?',
$available_group->group_id, $user_id);
$this->db->query($query);
// отошлем уведомление
$this->smarty->assign('available_group', $available_group);
$this->smarty->assign('accumulated_value', $sum);
$this->smarty->assign('main_currency', $this->main_currency);
$message = $this->smarty->fetch('file:../../design/'.$this->settings->theme.'/html/email_accumulated_discount.tpl');
$this->email($available_group->email, 'Вы получили накопительную скидку '.$available_group->discount.'%', $message);
}

}

}

Ссылка на сообщение
Поделиться на другие сайты
  • 2 месяца спустя...

Все работало до пункта когда начал делать: "Заходим в admin/Order.admin.php Находим функцию" сделал все как описано заказ приходит захожу в админку чтоб присвоиь статус заказа жму на сам заказ и вот что выдает:

Parse error: syntax error, unexpected $end in /var/www/МОЙСАЙТ/data/www/МОЙСАЙТ.РУ/admin/Order.admin.php on line 266

Помогите с решением проблемы. Спасибо

Ссылка на сообщение
Поделиться на другие сайты
  • 4 месяца спустя...
  • 2 месяца спустя...
  • 1 год спустя...

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

Ссылка на сообщение
Поделиться на другие сайты

Тоже хорошо, но в случае накопительной скидки, клиент видит скидку сразу и сумма общая снижается, это его мотивирует покупать больше..
Но файлика ни у кого нет? ((

Ссылка на сообщение
Поделиться на другие сайты

Делал систему накопительных скидом по принципу, все заказы клиента суммируются. В админке вводятся пороги: 3000р - 3%, 6000р - 5%, 12000 - 7% и т.д. хоть до 100% догнать можно. При сумме по заказам, у клиента автоматически получается по его порогу скидка. Плюс в том, что гибко можно регулировать сами пороги, также клиент в своем кабе видит все свои заказы и общию сумму и будущую скидку.

Ссылка на сообщение
Поделиться на другие сайты
  • 3 недели спустя...
  • 2 месяца спустя...
  • 1 год спустя...
  • 2 года спустя...

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...