Gruzin Опубликовано 3 сентября, 2017 Жалоба Поделиться Опубликовано 3 сентября, 2017 Всем привет, в магазине работает программа лояльности, при регистрации покупатель сразу попадает в группу у которой скидка 3%, по достижении суммы в 500 у.е пользователь автоматом переходит в другую группу где размер скидки больше, как сообщить покупателю в личном кабинете на какую сумму ещё надо купить товаров что бы перейти в следующую группу?Надеюсь объяснил доходчиво.Спасибо. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 3 сентября, 2017 Жалоба Поделиться Опубликовано 3 сентября, 2017 (изменено) Всё зависит от того, как реализован подсчет накопившейся суммы и передается ли она в шаблон.А дальше, отнимаете от 500 у.е. накопленную сумму и выводите разницу. Изменено 3 сентября, 2017 пользователем koteyka Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 3 сентября, 2017 Автор Жалоба Поделиться Опубликовано 3 сентября, 2017 Всё зависит от того, как реализован подсчет накопившейся суммы и передается ли она в шаблон.А дальше, отнимаете от 500 у.е. накопленную сумму и выводите разницу. По этой инструкции делал автоматическое изменение группы, может это поможет simpla/SettingsAdmin.php после // Простые звонки $this->settings->pz_server = $this->request->post('pz_server'); $this->settings->pz_password = $this->request->post('pz_password'); $this->settings->pz_phones = $this->request->post('pz_phones'); вставить $this->settings->group0_id = $this->request->post('group0_id'); $this->settings->amount_group_list = $this->request->post('amount_group_list'); $this->settings->amount_order_statuses = $this->request->post('amount_order_statuses'); 2. simpla/design/html/settings.tpl после <!-- Параметры --> <div class="block layer"> <h2>Интеграция с <a href="http://prostiezvonki.ru">простыми звонками</a></h2> <ul> <li><label class=property>Сервер</label><input name="pz_server" class="simpla_inp" type="text" value="{$settings->pz_server|escape}" /></li> <li><label class=property>Пароль</label><input name="pz_password" class="simpla_inp" type="text" value="{$settings->pz_password|escape}" /></li> <li><label class=property>Телефоны менеджеров:</label></li> {foreach $managers as $manager} <li><label class=property>{$manager->login}</label><input name="pz_phones[{$manager->login}]" class="simpla_inp" type="text" value="{$settings->pz_phones[$manager->login]|escape}" /></li> {/foreach} </ul> </div> <!-- Параметры (The End)--> вставить <!-- Параметры --> <div class="block layer"> <h2>Настройки покупателей и групп</a></h2> <ul> <li><label class=property>ID группы для помещения при регистрации</label><input name="group0_id" class="simpla_inp" type="text" value="{$settings->group0_id|escape}" /></li> <li><label class=property>Набор пороговых значений и ID соответствующих групп (строка вида "2000;3;5000;5;10000;4")</label><input name="amount_group_list" class="simpla_inp" type="text" value="{$settings->amount_group_list|escape}" /></li> <li><label class=property>Cтатусы заказов для учета достигнутой суммы (в виде "1,2") </label><input name="amount_order_statuses" class="simpla_inp" type="text" value="{$settings->amount_order_statuses|escape}" /></li> </ul> </div> <!-- Параметры (The End)--> 3. api/Users.php вставить в конце (перед финальной скобкой "}") function check_user_group($user_id){ $sts=$this->settings->amount_order_statuses; $sts=preg_split('@[^0-9]+@', trim($sts)); $sts=join(',', $sts); if($sts) $sts=" AND o.status IN ($sts)"; $query = $this->db->placehold("SELECT sum(p.price*p.amount) tot FROM __purchases p, __orders o where p.order_id=o.id AND o.user_id=? $sts ", $user_id); $this->db->query($query); $tot = $this->db->result('tot'); if(empty($tot)) return; $p=$this->settings->amount_group_list; $p=preg_split('@[^0-9]+@', trim($p)); $gr=-1; $sm=0; for($i=0; $i<count($p); $i+=2){ if($sm<$p[$i] && $p[$i]<=$tot){ $sm=$p[$i]; $gr=$p[$i+1]; } }; if($gr!=-1) $this->update_user($user_id, array('group_id' => $gr)); } 4. Если хотите, чтобы при вычислении достигнутых использовались только ОПЛАЧЕННЫЕ заказы, то в п.3 надо строку $query = $this->db->placehold("SELECT sum(p.price*p.amount) tot FROM __purchases p, __orders o where p.order_id=o.id AND o.user_id=? $sts ", $user_id); заменить на $query = $this->db->placehold("SELECT sum(p.price*p.amount) tot FROM __purchases p, __orders o where p.order_id=o.id AND o.paid AND o.user_id=? $sts ", $user_id); 5. view/CartView.php после // Очищаем корзину (сессию) $this->cart->empty_cart(); вставить if($order->user_id) $this->users->check_user_group($order->user_id); 6. simpla/OrderAdmin.php 6.1 вставить if($order->user_id) $this->users->check_user_group($order->user_id); перед // Отправляем письмо пользователю if($this->request->post('notify_user')) $this->notify->email_order_user($order->id); 6.2 вставить if($order->user_id) $this->users->check_user_group($order->user_id); перед header('Location: '.$this->request->get('return')); 7. view/RegistrView.php вместо elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR']))) вставить elseif($user_id = $this->users->add_user(array('name'=>$name, 'email'=>$email, 'password'=>$password, 'enabled'=>$default_status, 'last_ip'=>$_SERVER['REMOTE_ADDR'], 'group_id'=>$this->settings->group0_id) Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 3 сентября, 2017 Жалоба Поделиться Опубликовано 3 сентября, 2017 Плачу Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 4 сентября, 2017 Автор Жалоба Поделиться Опубликовано 4 сентября, 2017 Плачу Что на этот раз не так? Цитата Ссылка на сообщение Поделиться на другие сайты
loxter Опубликовано 4 сентября, 2017 Жалоба Поделиться Опубликовано 4 сентября, 2017 Инструкция выглядит довольно аккуратной. Если еще и работает, то лучшего и желать нечего. Плачу Фраза двусмысленная - то ли уважаемый Noxter льет слезы, то ли выписывает денежный перевод автору в знак одобрения представленного решения... Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 26 февраля, 2018 Жалоба Поделиться Опубликовано 26 февраля, 2018 по данному коду клиент может перескочить какой-то из пунктов в суммек примеру изначально у него 3%, чтобы получить 5% надо скупиться на 500 долларов, а третий 1000 долларов, если он скупится свыше 1000 сразу он попадет в 3ю а не вначале во вторую Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.