Автор Тема: Реализация возможности промо код + предоставление скидок по картам клинтов  (Прочитано 1702 раз)

16 Апрель 2015, 16:10:42
  • Ветеран
  • *****
  • Сообщений: 527
  • Репутация: +1/-0
  • Сообщество PrestaShop
    • Просмотр профиля
С промо кодом, тут всё понятно, как на престе в разделе Правила корзины

А вот теперь интересное, предоставление скидок по картам клиентов. Есть таблица с клиентами, где помимо прочего указана скидка для конкретного клиента. Она может быть 5, 10 или 15 процентов.

Я хочу сделать так, в правилах корзины для престы создать дополнительно три скидки соответственно на 5, 10 и 15 процентов.

Теперь, чтобы рассчитать общую скидку я выполняю для промо кода
$cartRule = new CartRule(CartRule::getIdByCode(your_discount_code));
$this->context->cart->addCartRule($cartRule->id);

и после этого делаю запрос в базу по клиентам, узнаю какая у него скидка и в зависимости от этого подставляю один из трёх кодов:
$cartRule = new CartRule(CartRule::getIdByCode(discount_code_5_10_15));
$this->context->cart->addCartRule($cartRule->id);

Таки образом к корзине добавиться две скидки: одна по промо коду, а другая в зависимости от карты.
Все изменения думаю провести в ParentOrderController. Там где:

if (($cartRule = new CartRule(CartRule::getIdByCode($code))) && Validate::isLoadedObject($cartRule))
{
if ($error = $cartRule->checkValidity($this->context, false, true))
$this->errors[] = $error;
else
{
$this->context->cart->addCartRule($cartRule->id);
if (Configuration::get('PS_ORDER_PROCESS_TYPE') == 1)
Tools::redirect('index.php?controller=order-opc&addingCartRule=1');
Tools::redirect('index.php?controller=order&addingCartRule=1');
}

Так правильно будет сделать?
Сработает ли для одной корзины подряд несколько разных скидок?
$this->context->cart->addCartRule(...1);
$this->context->cart->addCartRule(...2);
16 Апрель 2015, 19:37:39
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Несколько скидок сработают.
Можно еще объединить их перед присвоением корзины. А потом только добавить общую сумму.
16 Апрель 2015, 20:22:43
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 113
  • Репутация: +3/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вам будет нужно считать общую скидку и применять только один раз.
16 Апрель 2015, 20:28:17
Ответ #3
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В одном заказе можно применить несколько скидок. Вы можете создать правила корзины по группам и по кодам.
17 Апрель 2015, 11:11:49
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Таки образом к корзине добавиться две скидки: одна по промо коду, а другая в зависимости от карты.
Все изменения думаю провести в ParentOrderController. Там где:
Ничего менять не нужно.
Для скилок по коду можно создать правила ценооброзования.
Для дисконтных карт установить модуль Gift Card.