Chudo Опубликовано 7 октября, 2016 Жалоба Поделиться Опубликовано 7 октября, 2016 (изменено) Добрые други. Нашёл я модуль "БОНУСЫ ДЛЯ SIMPLA" в просторах интернета. Но как я понял, он не совсем рабочий.Системы бонусных начислений за выполненные заказы с последующим использованием накопленных бонусов на расчет за заказы.Для начала опишу как его поставить.1) Начнем, делаем 3 SQL-запроса INSERT INTO `s_settings` (`setting_id`, `name`, `value`) VALUES (NULL, 'bonus_order', ''), (NULL, 'bonus_limit', ''); ALTER TABLE `s_users` ADD `balance` FLOAT( 8, 2 ) NOT NULL AFTER `name`; ALTER TABLE `s_orders` ADD `bonus_discount` FLOAT( 10, 2 ) NOT NULL AFTER `discount`; 2) Открываем файл api/Users.php, ищем (примерно 95 строка) $query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.group_id, u.enabled, u.last_ip, u.created, g.discount, g.name as group_name FROM __users u LEFT JOIN __groups g ON u.group_id=g.id $where LIMIT 1", $id); и меняем на $query = $this->db->placehold("SELECT u.id, u.email, u.password, u.name, u.balance, u.group_id, u.enabled, u.last_ip, u.created, g.discount, g.name as group_name FROM __users u LEFT JOIN __groups g ON u.group_id=g.id $where LIMIT 1", $id); 3) Открываем файл simpla/UserAdmin.php и после (14 строка) $user->email = $this->request->post('email'); Добавляем $user->balance = $this->request->post('balance', 'float'); 4) Открываем файл simpla/design/html/user.tpl и после (68 строка) <li><label class=property>Email</label><input name="email" class="simpla_inp" type="text" value="{$user->email|escape}" /></li> Добавляем <li><label class=property>Начислено бонусов</label><input name="balance" class="simpla_inp" type="text" value="{$user->balance|escape}" /> {$currency->sign}</li> 5) Открываем файл simpla/SettingsAdmin.php и после (29 строка) $this->settings->thousands_separator = $this->request->post('thousands_separator'); Добавляем $this->settings->bonus_order = $this->request->post('bonus_order'); $this->settings->bonus_limit = $this->request->post('bonus_limit'); 6) Открываем файл simpla/design/html/settings.tpl и перед (80 строка) <!-- Параметры --> <div class="block layer"> <h2>Настройки каталога</h2> Добавляем <div class="block layer"> <h2>Бонусы</h2> <ul> <li><label class=property>Начисление от заказа</label><input name="bonus_order" class="simpla_inp" type="text" value="{$settings->bonus_order|escape}" /> %</li> <li><label class=property>Лимит бонусов при заказе</label><input name="bonus_limit" class="simpla_inp" type="text" value="{$settings->bonus_limit|escape}" /> %</li> </ul> </div> 7) Открываем файл api/Orders.php заменим в двух местах в запросе (строки 25 и 81) o.discount Заменим на o.discount, o.bonus_discount 8) Далее в этом же файле заменим (500 строка) $query = $this->db->placehold("UPDATE __orders o SET o.total_price=IFNULL((SELECT SUM(p.price*p.amount)*(100-o.discount)/100 FROM __purchases p WHERE p.order_id=o.id), 0)+o.delivery_price*(1-o.separate_delivery)-o.coupon_discount, modified=NOW() WHERE o.id=? LIMIT 1", $order->id); На $query = $this->db->placehold("UPDATE __orders o SET o.total_price=IFNULL((SELECT SUM(p.price*p.amount)*(100-o.discount)/100 FROM __purchases p WHERE p.order_id=o.id), 0)+o.delivery_price*(1-o.separate_delivery)-o.coupon_discount-o.bonus_discount, modified=NOW() WHERE o.id=? LIMIT 1", $order->id); 9) Далее перед (451 строка) } return $order->id; Перед ней добавим if($order->user_id) { $user = $this->users->get_user(intval($order->user_id)); f(!empty($user)) $this->users->update_user($user->id, array('balance' => ($user->balance + $order->total_price * $this->settings->bonus_order / 100))); } 10) Далее перед (482 строка) } return $order->id; Перед ней добавим if($order->user_id) { $user = $this->users->get_user(intval($order->user_id)); if(!empty($user)) $this->users->update_user($user->id, array('balance' => max(0, $user->balance - $order->total_price * $this->settings->bonus_order / 100))); } 11) Открываем файл simpla/design/html/order.tpl и перед (308 строка) <div class="block discount layer"> <h2>Скидка</h2> Добавим <div class="block discount layer"> <h2>Бонусы</h2> <input type=text name=bonus_discount value='{$order->bonus_discount}' disabled> <span class=currency>{$currency->sign}</span> </div> <div class="subtotal layer"> С учетом бонусов<b> {($subtotal-$order->bonus_discount)|round:2} {$currency->sign}</b> </div> 12) Открываем файл view/CartView.php и после (47 строка) $order->name = $this->request->post('name'); Добавим $bonus = $this->request->post('bonus','integer'); 13) Далее после (строка 56) $this->design->assign('name', $order->name); Добавим $this->design->assign('bonus', $bonus); 14) Открываем файл design/default/html/cart.tpl и перед (72 строка) {if $coupon_request} Добавим {if $settings->bonus_limit && $user->balance} <tr> <th class="image"></th> <th class="name"><label><input type="checkbox" name="bonus" value="1"{if $bonus} checked{/if} /> оплатить бонусами (доступно {$user->balance|convert} {$currency->sign})</label></th> <th class="price"></th> <th class="amount"></th> <th class="price"> {if ($cart->total_price * $settings->bonus_limit / 100) >= $user->balance} {$user->balance|convert} {$currency->sign} {else} −{($cart->total_price * $settings->bonus_limit / 100)|convert} {$currency->sign} {/if} </th> <th class="remove"></th> </tr> {/if} 15) Открываем design/default/html/order.tpl и перед (61 строка) {* Скидка, если есть *} {if $order->discount > 0} Добавим {* Скидка, если есть *} {if $order->bonus_discount > 0} <tr> <th class="image"></th> <th class="name">бонусы</th> <th class="price"></th> <th class="amount"></th> <th class="price"> −{$order->bonus_discount|convert} {$currency->sign} </th> </tr> {/if} Так вот автор обещает работоспособность этого модуля. Но что-то как-то не очень он хочет работать. Поэтому прошу вас помочь мне разобраться с ним. У меня версия 2.3.6 и после выполнения 9 и 10 шага, сайт падает в ошибку 500. Есть подозрения, что скрипт написан для более поздней версии. А за недостатком знаний исправить сам не могу. ИСТОЧНИК МОДУЛЯ Изменено 7 октября, 2016 пользователем Chudo Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 7 октября, 2016 Жалоба Поделиться Опубликовано 7 октября, 2016 В п. 9 сразу видна ошибка - одна буква потерялась - должно быть if(!empty($user)) А вообще, если выкладываете чужой код, надо бы и источник упоминать.Похоже, взято отсюда:http://templazilla.ru/moduli-i-dopolnenija-simpla-cms/2016/05/17/bonusnaya-sistema.html Цитата Ссылка на сообщение Поделиться на другие сайты
Chudo Опубликовано 7 октября, 2016 Автор Жалоба Поделиться Опубликовано 7 октября, 2016 В п. 9 сразу видна ошибка - одна буква потерялась - должно быть if(!empty($user)) А вообще, если выкладываете чужой код, надо бы и источник упоминать.Похоже, взято отсюда:http://templazilla.ru/moduli-i-dopolnenija-simpla-cms/2016/05/17/bonusnaya-sistema.html Ссылку указал. Спасибо опять тебе)))) Цитата Ссылка на сообщение Поделиться на другие сайты
Chudo Опубликовано 7 октября, 2016 Автор Жалоба Поделиться Опубликовано 7 октября, 2016 В п. 9 сразу видна ошибка - одна буква потерялась - должно быть if(!empty($user)) А вообще, если выкладываете чужой код, надо бы и источник упоминать.Похоже, взято отсюда:http://templazilla.ru/moduli-i-dopolnenija-simpla-cms/2016/05/17/bonusnaya-sistema.html Установил. В итоге, когда делаешь заказ, то он приходит с цифрой 0, т.е любой товар стоит ноль рублей. Бонусы не начисляются, да и не списываются, если даже их начислить через админку пользователю. Kors, это может быть из за модифицированной корзины? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 7 октября, 2016 Жалоба Поделиться Опубликовано 7 октября, 2016 Причин может быть много.А в той разработке, видимо, ошибок еще предостаточно.Например, в коде не видно, где происходит уменьшение баланса при оплате бонусами - скорее всего, нигде...И смотрите в источнике комментарии - поддержки там никакой, зато автор прицепил форму для отправки ему денег за хорошую работу. Реально, если Вам действительно надо, чтоб это работало и готовы оплачивать - обращайтесь в личку... Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 7 октября, 2016 Жалоба Поделиться Опубликовано 7 октября, 2016 П зато автор прицепил форму для отправки ему денег за хорошую работу. И на странице вредный анти-Adblock стоит )) Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 17 ноября, 2016 Жалоба Поделиться Опубликовано 17 ноября, 2016 Причина в том, что в БД не сохраняет bonus_discount Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 7 декабря, 2016 Жалоба Поделиться Опубликовано 7 декабря, 2016 Кто-то смог поправить дополнение? Подскажите пожалуйста. Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Все привет, тоже интересует данное дополнение, бесплатное не работает, сегодня купил думал будет работать но увы оказалось таким же не рабочим, хорошо хоть за 5$ всего купил ))) Может кто подскажет где купить рабочее ? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Все привет, тоже интересует данное дополнение, бесплатное не работает, сегодня купил думал будет работать но увы оказалось таким же не рабочим, хорошо хоть за 5$ всего купил ))) Может кто подскажет где купить рабочее ? у меня есть такое http://forum.simplacms.ru/topic/11400-2-%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9-%D1%81%D1%87%D0%B5%D1%82-%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8F/ настрою под вас если что. пишите в личку Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Ну что господа программисты сможет кто нибудь допилить данный код , или он безнадёжен? Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 (изменено) Ну что господа программисты сможет кто нибудь допилить данный код , или он безнадёжен?у меня есть такое http://forum.simplacms.ru/topic/11400-2-виртуальный-счет-пользователя/ настрою под вас если что. пишите в личкуВы или не видите или ищите очередное решение за копейки, я вам уже писал ранее по поводу покупки на разных сайтах барыг, но вам видать никак не доходит суть. Тут программистов сделать такой модуль хватает но никто его вам не сделает за те же 5$, лично я бы взял от 40$ в зависимости от ТЗ. Изменено 22 июня, 2017 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Вы или не видите или ищите очередное решение за копейки, я вам уже {url=http://forum.simplacms.ru/topic/7099-2х-мультифильтр-с-диапазоном/page-3#entry98496]писал ранее[/url по поводу покупки на разных сайтах барыг, но вам видать никак не доходит суть.Тут программистов сделать такой модуль хватает но никто его вам не сделает за те же 5$, лично я бы взял от 40$ в зависимости от ТЗ.Я ведь не заставляю вас делать, но кроме вас ведь ещё есть люди, может кто и возьмётся. В конце концов не только ведь деньги в жизни существуют. О каком ТЗ идёт речь ? Всё ТЗ вверху написано. То что уже есть надо доделать , никаких ТЗ никто не предлагает и никто ничего не заказывает, может кто то ради спортивного интереса займётся этим вопросом. Вы так переживаете как будто я у вас из кармана деньги вытаскиваю или заставляю вас что то делать. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Вы спросили возьмется ли кто, вам Мишаня ответил а вы дурака и дальше включаете будто не видите сообщение, катимся по наклонной в сторону банальных попрошаек. Удачи! Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Вы спросили возьмется ли кто, вам Мишаня ответил а вы дурака и дальше включаете будто не видите сообщение, катимся по наклонной в сторону банальных попрошаек.Удачи!С Мишаней мы уже пообщались, у меня складывается впечатление , что вы тут работаете. На форуме есть такой раздел Платные модули и услуги , я по моему нахожусь в другом разделе , а вы вроде как оттуда. Ну ладно давайте закончим это бессмысленное общение. Удачи вам и всех благ. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 22 июня, 2017 Жалоба Поделиться Опубликовано 22 июня, 2017 Вы же сами спросили выше, где купить рабочее, чего стрелы водите? Странная особь... Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 23 июня, 2017 Жалоба Поделиться Опубликовано 23 июня, 2017 (изменено) Если кому интересно расскажу чем закончилась история с данным модулем. Оказалось , что модуль который я купил он рабочий, только инструкция не дописана, а я пытался делать по инструкции. Инструкция это текст который тут написан, но если тупо копировать файлы из архива на свой сайт то всё чудесно работает, так что приношу публичные извинения людям продавшим мне этот модуль. Я бы с удовольствием поделился модулем но к сожалению это противоречит правилам. Всем спасибо и удачи. Так что можно тут покупать. Из пяти купленных все пять работают без проблем. Изменено 23 июня, 2017 пользователем Gruzin Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 25 июня, 2017 Жалоба Поделиться Опубликовано 25 июня, 2017 (изменено) Что бы всё заработало нужно в файле view/cartview.php строка 90 дописать следующий код: После строк 90else {Добавляемif($bonus && $this->settings->bonus_limit && $this->user->balance) { if(($cart->total_price * $this->settings->bonus_limit / 100) > floatval($this->user->balance)) $order->bonus_discount = floatval($this->user->balance); else $order->bonus_discount = ($cart->total_price * $this->settings->bonus_limit / 100); $this->user->balance = $this->user->balance - $order->bonus_discount; $this->users->update_user($this->user->id, array('balance' => $this->user->balance)); } Ну и естественно исправить ошибку http://forum.simplacms.ru/topic/11868-%D0%B1%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%B0%D1%8F-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0-%D0%BD%D0%B0%D1%88%D1%91%D0%BB-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8C-%D0%B2-%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%BE%D1%80%D0%B0%D1%85/?do=findComment&comment=92197 Изменено 25 июня, 2017 пользователем Gruzin Цитата Ссылка на сообщение Поделиться на другие сайты
Julius123 Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 только минус что бонусы начисляются сразу после того как списывается товар и даже получается если статус "Принят" то бонус уже начислялся. Подскажите как сделать чтобы начислялись только при статусе "Выполнен" ? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 только минус что бонусы начисляются сразу после того как списывается товар и даже получается если статус "Принят" то бонус уже начислялся. Подскажите как сделать чтобы начислялись только при статусе "Выполнен" ? даже сразу после оформления заказа, не нужно принимать, достаточно чтобы заказ оформили, и бонусы упадут на счет дам подсказку, нужно последний код из CartView.php адаптировать для того чтобы он срабатывал только при закрытии заказав ф-и close() из api/Orders.php Цитата Ссылка на сообщение Поделиться на другие сайты
Julius123 Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 (изменено) даже сразу после оформления заказа, не нужно принимать, достаточно чтобы заказ оформили, и бонусы упадут на счет дам подсказку, нужно последний код из CartView.php адаптировать для того чтобы он срабатывал только при закрытии заказав ф-и close() из api/Orders.php Не совсем наверное понял, в файле CartView код выполняется только на сайте, а статус заказа мы меняем в админке и взаимосвязи не понял. По идее нужно редактировать api/Orders.php И я так понимаю не должно все таки при оформлении заказа начисляться бонусы, потому что они начисляются в api/Orders.php в функции - public function close($order_id) таким кодом: if($order->user_id) { $user = $this->users->get_user(intval($order->user_id)); if(!empty($user)) $this->users->update_user($user->id, array('balance' => ($user->balance + $order->total_price * $this->settings->bonus_order / 100))); } Изменено 2 ноября, 2017 пользователем Julius123 Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 (изменено) Не совсем наверное понял, в файле CartView код выполняется только на сайте, а статус заказа мы меняем в админке и взаимосвязи не понял. По идее нужно редактировать api/Orders.php да, я перепутал с списанием при новом заказе. нужно п9 и п10 править, они в правильном месте, но нужно еще проверять статус заказа там. + нет проверки если менеджер изменил пару раз статус заказа - бонусы начислятся столько же раз, если назад в новый перекинуть заказ и обратно Изменено 2 ноября, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
Julius123 Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 (изменено) да, я перепутал с списанием при новом заказе. нужно п9 и п10 править, они в правильном месте, но нужно еще проверять статус заказа там. + нет проверки если менеджер изменил пару раз статус заказа - бонусы начислятся столько же раз, если назад в новый перекинуть заказ и обратно Я пробовал сделать вот так, но не работает if($order->user_id) { $user = $this->users->get_user(intval($order->user_id)); if(!empty($user)) if ($order->status_id == 3) $this->users->update_user($user->id, array('balance' => ($user->balance + $order->total_price * $this->settings->bonus_order / 100))); } тогда вообще ни при каком статусе не начисляются бонусы, я так понимаю это связано с тем что функция close выполняется только при списании товара, а перед статусом Выполнен он списывается еще в статусе Принят Изменено 2 ноября, 2017 пользователем Julius123 Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 Я пробовал сделать вот так, но не работает if($order->user_id) { $user = $this->users->get_user(intval($order->user_id)); if(!empty($user)) if ($order->status_id == 3) $this->users->update_user($user->id, array('balance' => ($user->balance + $order->total_price * $this->settings->bonus_order / 100))); } тогда вообще ни при каком статусе не начисляются бонусы, я так понимаю это связано с тем что функция close выполняется только при списании товара, а перед статусом Выполнен он списывается еще в статусе Принят нет, просто нужно в эту ф-ю передавать еще и новый статус заказа, он изменяется после вызова ф-и. тоесть вот ту if ($order->status_id еще старый статус Цитата Ссылка на сообщение Поделиться на другие сайты
Julius123 Опубликовано 2 ноября, 2017 Жалоба Поделиться Опубликовано 2 ноября, 2017 (изменено) нет, просто нужно в эту ф-ю передавать еще и новый статус заказа, он изменяется после вызова ф-и. тоесть вот ту if ($order->status_id еще старый статус Может сделать вот так? $order = $this->get_order(intval($order_id)); if($order->user_id) { $user = $this->users->get_user(intval($order->user_id)); if(!empty($user)) if ($order->status_id == 3) $this->users->update_user($user->id, array('balance' => ($user->balance + $order->total_price * $this->settings->bonus_order / 100))); } Изменено 2 ноября, 2017 пользователем Julius123 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.