Не списываются бонусные баллы

Тема в разделе "Ошибки и их решения", создана пользователем slvrdmn, 15 фев 2016.

  1. slvrdmn

    slvrdmn Новичок

    Сообщения:
    4
    Симпатии:
    3
    Здравствуйте, столкнулся с проблемой на версиях 2.1.0.1 (rs.2) и 2.1.0.2 (rs.1) - бонусные баллы в заказе учитываются, но с клиента не списываются.
    Прежние наработки были на версии 2.0.2.0 (rs.3) с нее собственно и начал практическое знакомство с Opencart, там при оформлении заказа если применить бонусные баллы они у клиента автоматически отминусовывались.
    Недавно начал с нуля на 2.1.0.1 (rs.2) и не сразу обратил на это внимание, сейчас для теста поставил чистый 2.1.0.2 (rs.1) ничего не менял, никаких модулей и тем не ставил, включил только оплату наличными и создал тестового клиента, сделал несколько заказов тестовых товаров которые при установке уже имелись, применяю бонусы, в админке в заказе они учитываются, а у клиента они не списываются.
    Уважаемые знатоки, опытные эксперты, подскажите, может не вижу, не знаю чего-то очевидного, опыта у меня маловато. В заказе использовал метод оплаты - наличными, доставка - самовывоз.
    Может будет полезным - обратил внимание на такой ньюанс - если в "Учитывать в заказе" выключить "Кредит магазина", то бонусные баллы при заказе вообще применить не получается и соответственно в заказе они не учитываются.
    Пробовал менять статусы заказов (предположил что бонусы списываются при каком-либо из них) - все равно не списываются. Если зайти в редактирование клиента, то там на вкладке бонусы можно вручную списать или добавить любое их количество, но это несколько не то что нужно, пользоваться таким костылем кончено можно, но в крайнем случае.
     
    mr_eas нравится это.
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    mr_eas нравится это.
  3. slvrdmn

    slvrdmn Новичок

    Сообщения:
    4
    Симпатии:
    3
    Благодарю, заработало, однако с указанным исправлением баллы списываются, но только если использовать не все баллы, а меньше, хотя бы на 1 балл, если использовать все имеющиеся баллы - ситуация та же, в заказе учитываются, но у клиента не списываются, поэтому логично рассудив, поменял знак на ">=" и все заработало как надо, списывается сколько необходимо баллов - и полностью и частично, еще раз благодарю.
     
    Последнее редактирование: 17 фев 2016
    mr_eas нравится это.
  4. UserWii

    UserWii Пользователь

    Сообщения:
    111
    Симпатии:
    2
    У меня все равно почему-то не работает. Я отредактировал товар и назначил количество за которое покупать может купить товар и количество начисляемых баллов, после этого клиент добавляет товар в корзину, там указывает какое количество баллов списать, пишет что списано и подтверждает заказ. Но в итоге у него баллы не списываются и в админке на странице заказа ничего не указано. Если вручную делать, то и списывает и начисляет. Как быть?
     
  5. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    на какой версии? Все точно сделано? Модификаторы обновили? Стороннего ничего мешающего не установлено?
     
  6. UserWii

    UserWii Пользователь

    Сообщения:
    111
    Симпатии:
    2
    Version 2.1.0.2. Модификаторы обновил. Ну разве что-то Ajax Quick Checkout.

    и еще на странице оформления заказ пишет " Баллы успешно применены!", но в итого ничего не меняется. Хотя купоны и подарочные сертификаты применяются.

    Все разобрался, было выключено Кредит магазина. Правда связь с бонусными балами мне не понятна.
     
    Последнее редактирование модератором: 3 мар 2016
  7. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
     
  8. UserWii

    UserWii Пользователь

    Сообщения:
    111
    Симпатии:
    2
    Как сделать что бы бонусные баллы были видны только для зарегистрированным клиентам?
     
  9. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    1. Вопрос не по теме.
    2. Поиск по форуму поможет найти ответ. Только нужно будет отредактировать нужный шаблон который указан в документации.
     
  10. Zarazakbr

    Zarazakbr Новичок

    Сообщения:
    4
    Симпатии:
    1
    Наконец-то!!! 2 вечера уже сижу.... туплю с этими баллами. Такая же и у меня была проблема. Пишет, что баллы применились, а на самом деле нет. Сумма как была, так и осталась. Но при чем тут кредит магазина...... Вот ппц...
     
  11. absg

    absg Новичок

    Сообщения:
    7
    Симпатии:
    0
    Ничего из этого не помогло (((
    Остались обе проблемы:
    1. Если ставлю в карточке товара бонусы для группы покупателей - они не начисляются
    2. Когда товар оплачивается бонусами (полностью или частично) - бонусы не списываются с клиента, и это печально, т.к. за десятку бонусов один клиент все товары скупит (((
    файл вот такой получился:

    Код:
    <?php
    class ModelTotalReward extends Model {
        public function getTotal(&$total_data, &$total, &$taxes) {
            if ($this->config->get('credit_status') && isset($this->session->data['reward'])) {
                $this->load->language('total/reward');
    
                $points = $this->customer->getRewardPoints();
    
                if ($this->session->data['reward'] <= $points) {
                    $discount_total = 0;
    
                    $points_total = 0;
    
                    foreach ($this->cart->getProducts() as $product) {
                        if ($product['points']) {
                            $points_total += $product['points'];
                        }
                    }
    
                    $points = min($points, $points_total);
    
                    foreach ($this->cart->getProducts() as $product) {
                        $discount = 0;
    
                        if ($product['points']) {
                            $discount = $product['total'] * ($this->session->data['reward'] / $points_total);
    
                            if ($product['tax_class_id']) {
                                $tax_rates = $this->tax->getRates($product['total'] - ($product['total'] - $discount), $product['tax_class_id']);
    
                                foreach ($tax_rates as $tax_rate) {
                                    if ($tax_rate['type'] == 'P') {
                                        $taxes[$tax_rate['tax_rate_id']] -= $tax_rate['amount'];
                                    }
                                }
                            }
                        }
    
                        $discount_total += $discount;
                    }
    
                    $total_data[] = array(
                        'code'       => 'reward',
                        'title'      => sprintf($this->language->get('text_reward'), $this->session->data['reward']),
                        'value'      => -$discount_total,
                        'sort_order' => $this->config->get('reward_sort_order')
                    );
    
                    $total -= $discount_total;
                }
            }
        }
    
        public function confirm($order_info, $order_total) {
            $this->load->language('total/reward');
    
            $points = 0;
    
            $start = strpos($order_total['title'], '(') + 1;
            $end = strrpos($order_total['title'], ')');
    
            if ($start && $end) {
                $points = substr($order_total['title'], $start, $end - $start);
            }
    
            $this->load->model('account/customer');
    
            if ($this->model_account_customer->getRewardTotal($order_info['customer_id']) < $points) {
            if ($this->model_account_customer->getRewardTotal($order_info['customer_id']) >= $points) {
                $this->db->query("INSERT INTO " . DB_PREFIX . "customer_reward SET customer_id = '" . (int)$order_info['customer_id'] . "', order_id = '" . (int)$order_info['order_id'] . "', description = '" . $this->db->escape(sprintf($this->language->get('text_order_id'), (int)$order_info['order_id'])) . "', points = '" . (float)-$points . "', date_added = NOW()");
            } else {
                return $this->config->get('config_fraud_status_id');
            }
        }
    }
        public function unconfirm($order_id) {
            $this->db->query("DELETE FROM " . DB_PREFIX . "customer_reward WHERE order_id = '" . (int)$order_id . "' AND points < 0");
        }
    }
    
    Что не так - ума не приложу ((
    Кредит в Учитывать в заказе и включал и выключал, сбрасывал и обновлял кэш... даже после добавленного в файле
    if ($this->model_account_customer->getRewardTotal($order_info['customer_id']) > $points) {
    закрывающую скобку где только ни ставил... В общем жуть (((
    Модули да, стоят. Но кроме зависимых опций ничто на бонусы не посягает насколько я помню. Еще Бест чекаут стоит, который как-то тоже может быть с бонусами связан...
     
  12. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    не указали версию движка. Проверяете на голой установке. Если все норм... ищите проблему в модулях своих.
     
  13. absg

    absg Новичок

    Сообщения:
    7
    Симпатии:
    0
    OC 2.1.0.1 rs2
     
  14. absg

    absg Новичок

    Сообщения:
    7
    Симпатии:
    0
    и на голой сборке вообще(!) нет возможности оплатить бонусами! (((
    Что сделал:
    1. добавил бонусов клиенту - 500
    2. выключил и включил обратно со сбросом кэша и с обновлением модификаторов Кредит магазина и Оплата бонусами
    3. Нашел товар с бонусами - 200 в товаре и 400 в дефолтной группе во вкладке Бонусы товара
    4. Забросил в корзину
    5. Прошел и вдоль и поперек оформление заказа - оплаты бонусами нигде нет (((
    да, это же все пробовал и С и БЕЗ описанных изменений ((( жесть!
     
  15. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    в смысле нет? Их просто нужно настроить. Выше же написано как.
    это пробовали?

    зачем? Ну жесть все напутали ))
     
  16. absg

    absg Новичок

    Сообщения:
    7
    Симпатии:
    0

    так я сначала со включенным кредитом попробовал - нет ничего, потом выключил - тот же эффект, и опять включил. я вот об этом.
    Бонусы на счете есть.
     
  17. slvrdmn

    slvrdmn Новичок

    Сообщения:
    4
    Симпатии:
    3
    absg, в приведенном вами файле вижу что вы добавили строку, задублировали точно такую же но с нужным знаком, а нужно было только исправить знак "<" на ">=", удалите неправильную строку, обновите модификаторы, все должно заработать.
     
    Vlad нравится это.
  18. absg

    absg Новичок

    Сообщения:
    7
    Симпатии:
    0
    РАБОТАЕТ!!! Спасибо! Огромное!
    Может еще сможете подсказать - что делать, чтобы при покупке товара с бонусами эти бонусы зачислялись не через кнопочку в админке а автоматически?
    ОС 2.1.0.1 rs2
     
  19. slvrdmn

    slvrdmn Новичок

    Сообщения:
    4
    Симпатии:
    3
    К сожалению не подскажу, такова логика работы с бонусами у OC, сам не заморачивался этим, так как заказ все равно кто-то должен обрабатывать и менять статус заказа и начислять или отменять бонусы, а если дорабатывать под себя, то плясать видимо нужно от изменения статуса заказа.
     
  20. absg

    absg Новичок

    Сообщения:
    7
    Симпатии:
    0
    Это как раз на автомате делается когда электронные товары особенно - из панели админа - Модули-Оплата-Статус заказа после оплаты.
    ...Понял, спасибо! Буду смотреть обработку заказа...