Skip to content
  1. Компоненты
  2. msPromoCode2
  3. Кейсы
  4. Применять либо промокод msPromoCode2, либо бонусы msBonus2

Применять либо промокод msPromoCode2, либо бонусы msBonus2

Иногда приходится ограничить посетителя магазина в скидке, а точнее дать применить либо промокод, либо воспользоваться бонусами.

Данный плагин решает эту задачу. Позволяет применить либо промокод msPromoCode2, либо бонусы msBonus2.

Добавляем плагин и вешаем его на события msb2OnBeforeSetBonus и mspc2OnBeforeSetCoupon.

php
$msb2 = $modx->getService('msbonus2', 'msBonus2', MODX_CORE_PATH . 'components/msbonus2/model/msbonus2/');
$msb2->initialize($modx->context->key);
$msb2Manager = $msb2->getManager();

$mspc2 = $modx->getService('mspromocode2', 'msPromoCode2', MODX_CORE_PATH . 'components/mspromocode2/model/mspromocode2/');
$mspc2->initialize($modx->context->key);
$mspc2Manager = $mspc2->getManager();

$error_text = 'Можно воспользоваться либо промо-кодом на скидку, либо бонусами.';

switch ($modx->event->name) {
  case 'msb2OnBeforeSetBonus':
    $result = $mspc2Manager->getCurrentCoupon();
    if (is_array($result)) {
      $modx->event->output($error_text);
    }
    break;

  case 'mspc2OnBeforeSetCoupon':
    $result = $msb2Manager->getCartWriteoff();
    if (!empty($result)) {
      $modx->event->output($error_text);
    }
    break;
}