Автор Тема: Нестандартный функционал "оплата бонусами". Любые идеи!!!  (Прочитано 31 раз)

27 Октябрь 2017, 11:50:05
  • Старожил
  • ****
  • Сообщений: 324
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Требуется каждому клиенту завести бонусную карту (со своим уникальным номером)  всего около 500 штук

Бонусы по каждой карте из 1С выгружаются в таблицу mysql.
Т.е. мы уже имеем таблицу с бонусами для каждой карты (бонусы постоянно меняются)

Подскажите как можно реализовать функционал "оплата бонусами" в корзине в данном случае.

Возможно изменить уже существующий модуль?
Мне нужно перепилить модуль так, чтобы бонусы для каждой карты брались из существующей таблицы.

Какие хуки задействовать?
Любая идея будет полезной.

Заранее большое спасибо!
27 Октябрь 2017, 12:09:25
Ответ #1
  • Фрилансер
  • *
  • Сообщений: 148
  • Репутация: +0/-0
    • Просмотр профиля
Если у вас модуль Rewards или Program Ref Pro, то менять ненужно, в них включаете оплату бонами и клиенты могут платить накоплеными бонами, подарочными картами или картами вознаграждения. 
27 Октябрь 2017, 12:34:39
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 14167
  • Репутация: +14571/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Возможно изменить уже существующий модуль?
Какой модуль хотите изменить? Нет таких модулей в базовом prestashop. Покупать и потом менять не есть хорошо, лучше сразу свой создать. При том что нужна привязка к 1С. Создавайте новый модуль, соедините несколько, модуль подарочных карт, накопительной скидки и связи с 1С.
27 Октябрь 2017, 12:40:26
Ответ #3
  • Старожил
  • ****
  • Сообщений: 324
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Возможно изменить уже существующий модуль?
Какой модуль хотите изменить? Нет таких модулей в базовом prestashop. Покупать и потом менять не есть хорошо, лучше сразу свой создать. При том что нужна привязка к 1С. Создавайте новый модуль, соедините несколько, модуль подарочных карт, накопительной скидки и связи с 1С.

Спасибо за Ваш ответ.
То, что такого модуля нет я догадывался :)

По поводу соединения нескольких модулей.

модуль подарочных карт - есть в наличии Gift card v1.0.17 - от Timactive
По модулю накопительной скидки, подойдёт ли loyalty?
Какие модули посоветуете соединить Вы?
Дайте точное название пожалуйста!!!
27 Октябрь 2017, 13:53:12
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 14167
  • Репутация: +14571/-2
  • Сообщество PrestaShop
    • Просмотр профиля
То что у вас есть подойдут. А для 1С нужно будет самому функции добавить.
27 Октябрь 2017, 14:16:01
Ответ #5
  • Старожил
  • ****
  • Сообщений: 324
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
По идее мне нужен только следующий минимальный функционал.

В правилах корзины создаю необходимое количество правил для каждой бонусной карты.
Где в качестве кода указываю номер карты.

Необходимо реализовать следующий момент.

Когда клиент в корзине вводит номер карты, чтобы добавить скидку к стоимости товара (Стандартный функционал "Купон").
В общем в этот момент необходимо узнать величину скидки из таблицы mysql и использовать её.

Как это сделать?
Возможно есть таблица с правилами корзины. Где у каждого правила есть поле "Величина скидки".
Туда подставить нужную скидку в момент ввода и обработки купона и на этом всё??
27 Октябрь 2017, 14:43:40
Ответ #6
  • Старожил
  • ****
  • Сообщений: 324
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если покороче, то вопрос такой.

Как програмно изменить величину скидки в Правилах корзины???

Как создать купон это понятно

$rule = new CartRule;
$rule->name[Configuration::get('PS_LANG_DEFAULT')] = $this->l('Gift Certificate');

$rule->id_customer = $id_customer; //ID клиента, для которого создается купон
$rule->date_from = date('Y-m-d', time());
$rule->date_to = date('Y-m-d', strtotime('+1 year', time()));
$rule->quantity = 1; //количество купонов
$rule->quantity_per_user = 1;
$rule->partial_use = TRUE;
$rule->code = Tools::passwdGen(); //код купона
$rule->reduction_amount = 100; //сумма купона
$rule->active = TRUE;
$rule->minimum_amount_currency = 1;
$rule->reduction_currency = $id_currency;
if (Shop::isFeatureActive()) {
    $rule->shop_restriction = 1;
}

$rule->save();


А вот как затем в нём изменить

$rule->reduction_amount = 100; //сумма купона
Подскажите пожалуйста!

Пока нашёл только один вариант.
В таблице cart_rule находим нужную бонусную карту и далее в поле reduction_amount вносим необходимую величину скидки.

И после этого вызываем:
$this->context->cart->addCartRule($id_cart_rule);
27 Октябрь 2017, 17:06:57
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 987
  • Репутация: +10/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Можно же создать в правилах корзины скидку, сгененрировать код, разрешить использование частями и высылать клиенту письмо с кодом. Получается бонусная карта.
27 Октябрь 2017, 17:26:26
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 33082
  • Репутация: +26762/-0
    • Просмотр профиля
Требуется каждому клиенту завести бонусную карту (со своим уникальным номером)  всего около 500 штук
У вас же есть модуль подарочных карт, вот в нем и создайте карты.