kpoxas Posted September 5, 2010 Report Share Posted September 5, 2010 Вещь нужная, так как существуют скидки для разных групп, а переводить туда клиентов вручную напряжно.Итак решение: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 хоть какой-то А то добавлений в файлы очень мало, но тут их описываь - никто не поймет зрительно, пришлось файлы крепить измененные! Quote Link to post Share on other sites
tunerman Posted September 7, 2010 Report Share Posted September 7, 2010 Спасибо, респект тебе, как раз очень нужно было!!! Quote Link to post Share on other sites
kpoxas Posted September 7, 2010 Author Report Share Posted September 7, 2010 тут же можно решить проблему с автопереносом покупателя в какую-то группу, например, "покупатели". То есть, если клиент зарегистрировался и купил хоть что-то, он может попасть в определенную группу. Этой группе достаточно выставить минимальный предел 0.01 Quote Link to post Share on other sites
tunerman Posted September 8, 2010 Report Share Posted September 8, 2010 Как бы еще сделать такую систему, при которой только пользователь состоящий в какой-нибудь группе, мог вступать в след. группу при увеличении покупок.kpoxas - случайно не знаешь как можно так доработать? Quote Link to post Share on other sites
kpoxas Posted September 9, 2010 Author Report Share Posted September 9, 2010 Знаю Заходим в admin/Order.admin.php Находим функцию// перевод пользователя в нужную группу по накопительной скидке by kpoxasfunction 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); } } } Quote Link to post Share on other sites
dimabudnikov Posted December 1, 2010 Report Share Posted December 1, 2010 Все работало до пункта когда начал делать: "Заходим в admin/Order.admin.php Находим функцию" сделал все как описано заказ приходит захожу в админку чтоб присвоиь статус заказа жму на сам заказ и вот что выдает:Parse error: syntax error, unexpected $end in /var/www/МОЙСАЙТ/data/www/МОЙСАЙТ.РУ/admin/Order.admin.php on line 266Помогите с решением проблемы. Спасибо Quote Link to post Share on other sites
tunerman Posted April 12, 2011 Report Share Posted April 12, 2011 Выложите ещё раз, файлик удалили. Quote Link to post Share on other sites
tunerman Posted April 13, 2011 Report Share Posted April 13, 2011 Ну очень нужно, может кто-нибудь выложить? Quote Link to post Share on other sites
bts Posted June 29, 2011 Report Share Posted June 29, 2011 Выручайте! С ручным добавлением в группы полная жопа! Quote Link to post Share on other sites
nigga Posted July 1, 2011 Report Share Posted July 1, 2011 http://forum.simplacms.ru/comments.php?DiscussionID=442 Quote Link to post Share on other sites
mich Posted December 22, 2012 Report Share Posted December 22, 2012 Ребята, у кого есть файл? выложите, пожалуйста! Quote Link to post Share on other sites
delprofile Posted December 22, 2012 Report Share Posted December 22, 2012 я реализовал по другому. Бонусный счёт с каждой покупки.Зарегистрированный покупатель совершая покупку, получает на личный счёт бонус.После накопления например 2600 бонусных рублей гривен долларов может сделать покупку на них. Quote Link to post Share on other sites
mich Posted December 22, 2012 Report Share Posted December 22, 2012 Тоже хорошо, но в случае накопительной скидки, клиент видит скидку сразу и сумма общая снижается, это его мотивирует покупать больше..Но файлика ни у кого нет? (( Quote Link to post Share on other sites
AndryFroggy Posted December 22, 2012 Report Share Posted December 22, 2012 Делал систему накопительных скидом по принципу, все заказы клиента суммируются. В админке вводятся пороги: 3000р - 3%, 6000р - 5%, 12000 - 7% и т.д. хоть до 100% догнать можно. При сумме по заказам, у клиента автоматически получается по его порогу скидка. Плюс в том, что гибко можно регулировать сами пороги, также клиент в своем кабе видит все свои заказы и общию сумму и будущую скидку. Quote Link to post Share on other sites
obverse Posted January 8, 2013 Report Share Posted January 8, 2013 нужна такая функция еще хотелось бы что б покупатель вбивал номер карты и получал скидку Quote Link to post Share on other sites
Ramsesc Posted March 27, 2013 Report Share Posted March 27, 2013 Народ помогите настроить накопительную скидку, файлы удалили, а очень надо Quote Link to post Share on other sites
tsybart Posted June 14, 2014 Report Share Posted June 14, 2014 А как сделать, что бы просто пользователя оформившого заказ 3 раза автоматом переносило в нужную группу? Quote Link to post Share on other sites
mart Posted June 14, 2014 Report Share Posted June 14, 2014 Напишите в личку или скайп simplashop.com - есть реализация. Quote Link to post Share on other sites
nikolayv Posted April 12, 2017 Report Share Posted April 12, 2017 всем привет, а есть где-то файлики? Quote Link to post Share on other sites
Noxter Posted April 15, 2017 Report Share Posted April 15, 2017 всем привет, а есть где-то файлики?Есть, у фрилансеров (авторов модулей) за деньги Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.