Ограничение на использование бонусов

Тема в разделе "OpenCart", создана пользователем crist, 30 июл 2014.

  1. crist

    crist

    Регистрация:
    2 окт 2013
    Сообщения:
    269
    Симпатии:
    503
    Подскажите, как реализовать такую штуку чтобы клиент мог оплатить не более половины суммы заказа бонусами.
    Спасибо заранее
     
    NinoZombie нравится это.
  2. Beloksik

    Beloksik

    Регистрация:
    27 июл 2014
    Сообщения:
    4
    Симпатии:
    2
    присоединяюсь - подскажите решение. спасибо
     
  3. Beloksik

    Beloksik

    Регистрация:
    27 июл 2014
    Сообщения:
    4
    Симпатии:
    2
    Пока нашёл вот такое решение, которое работает только для одного товара.
    К сожалению когда в корзине 2 товара - подсчёт становится неверный:

    catalog\controller\checkout\cart.php

    Код:
    if ($this->cart->hasProducts() || !empty($this->session->data['vouchers'])) {
    $points = $this->customer->getRewardPoints();

    $points_total = 0.5;

    foreach ($this->cart->getProducts() as $product) {
    if ($product['points']) {
    $points_total *= $product['points'];
    }
    }
    --- Добавлено, 4 авг 2014 ---
    В том же файле: catalog\controller\checkout\cart.php

    Код:
    protected function validateReward() {
    $points = $this->customer->getRewardPoints();

    $points_total = 0.5;

    foreach ($this->cart->getProducts() as $product) {
    if ($product['points']) {
    $points_total *= $product['points'];
    }
    }
     
    Последнее редактирование: 4 авг 2014
    crist нравится это.
  4. NinoZombie

    NinoZombie

    Регистрация:
    27 окт 2013
    Сообщения:
    223
    Симпатии:
    59
    А где от суммы к оплате деньгами вычитается количество списанных бонусов ? :(
    Будет время - запилю такой модуль
     
    crist нравится это.
  5. Beloksik

    Beloksik

    Регистрация:
    27 июл 2014
    Сообщения:
    4
    Симпатии:
    2
    Решение выше работает при оплате товаров по отдельности.
    $points_total = 0.5; (здесь что-то типа половины)
    ......
    $points_total *= $product['points']; (здесь умножается)

    P.S. В итоге имеем 50% от количества всех бонусов товара т.е. фактически суммы заказа при заказе одного товара.
    Чтобы это работало необходимо задействовать Цену товара в бонусах (Сумма товара = Сумме бонусов) . Тогда в корзине увидите вычитание этих самых %...
    --- Добавлено, 4 авг 2014 ---
    В данном примере реализована оплата бонусами не более 30% от общей суммы заказа.[​IMG]
     
    Последнее редактирование: 4 авг 2014
    crist нравится это.
  6. viv80

    viv80

    Регистрация:
    14 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    а как сделать вычитание имеющихся бонусов из цены товара при фиксированной максимльной сумме бонусов задданных товару? Например имеется 300 бонусов. При покупке товара стоимостью 1000р(заданно 200 баллов в поле "Баллы:Укажите за сколько баллов можно купить товар."). Происходил расчет 1000-200 баллов=800р? Без каких либо процентов от цены.
     
  7. viv80

    viv80

    Регистрация:
    14 окт 2014
    Сообщения:
    4
    Симпатии:
    0
    Почему то при добавлении 2х товаров в корзину макс кол-во баллов нереальное получается.
    Кол-во баллов = цене
    $points_total = 0.2; (здесь что-то типа половины)
    ......
    $points_total *= $product['points']; (здесь умножается)


    Применить бонусные баллы (Доступно 1000)

    Сколько баллов использовать (максимум 35712000):
    Сумма:34300р.
    Reward Points(1000):-1000р.
    Итого:33300р.

    Что за цифра в максимуме? где ошибка?
    При одном наименовании товара нормально все, так же как и при нескольких кол-вах одного товара