
mspc2OnSetProductDiscountPrice 
Событие срабатывает после применения купона, в момент вычета скидки на товар.
Добавлено с версии 1.1.18.
Параметры 
array $coupon— массив с промо-кодомnull|msOrder $order— объект заказаmsOrderилиnull, если промо-код применён к корзинеarray $product— массив данных товара (элемент товара из массива корзины, или массив данных объекта msOrderProduct)string $key— ключ позиции в массиве корзиныfloat $price— цена после применения скидкиfloat $old_price— цена до применения скидкиfloat|string $discount— скидка, может указываться в процентах или числомfloat $discount_price— стоимость скидки за 1 единицу товараfloat $discount_cost— сумма скидки
Пример 
php
switch ($modx->event->name) {
  case 'mspc2OnSetProductDiscountPrice':
    if (is_object($order)) {
      // Событие вызвано при пересчёте цен на товары в заказе
    }
    // Если купон с кодом `leto`
    if (strtolower($coupon['code']) === 'leto') {
      // Если это товар с ID = 5
      if ((int)$product['product_id'] === 5) {
        // Если опция color === `белый`
        if (mb_strtolower(@$product['options']['color'] ?: '', 'utf-8') === 'белый') {
          // Если кол-во единиц товара в корзине >= 2
          if ($product['count'] >= 2) {
            // Тогда прибавляем к цене товара +200 рублей
            $product['price'] += 200;
            // Соответственно, вычитаем эти 200 рублей из скидки за 1 единицу товара
            $product['discount_price'] -= 200;
            // И вычитаем разницу из общей скидки на товар (200 * кол-во товара в корзине)
            $product['discount_cost'] -= 200 * $product['count'];
          }
        }
        // Если опция color === `зелёный`
        if (mb_strtolower(@$product['options']['color'] ?: '', 'utf-8') === 'зелёный') {
          // То отдаём товар бесплатно
          $product['discount_price'] += $product['price'];
          $product['discount_price'] += $product['price'] * $product['count'];
          $product['price'] = 0;
        }
      }
    }
    $modx->event->returnedValues['product'] = $product;
    break;
}Важно 
В переменной
$productID товара находится под ключомproduct_id. При вызове и из корзины, и из заказа:$product['product_id'].Событие сработает, даже если скидка на товар = 0%. Главное, чтобы товар был тем или иным способом привязан к промо-коду.
