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;
}
$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;
}