Скидка на товар в зависимости от количества этого товара в корзине
Актуально для версии 19.
В данной статье мы рассмотрим пример добавления нового правила скидки на товар. В зависимости от количества добавленного товара в корзину к товару будет применяться указанная скидка.
Аналогично данной статье Добавление нового правила скидки, необходимо добавить новое правило скидки. В новом типе данных, дочернем по отношению к типу "Правила скидок", добавляем поле с идентификатором counts. Также добавляем новый элемент в справочник "Типы правил для скидок":
- Идентификатор: counts
 - Тип данных (id): id только что созданного типа данных в разделе "Правила скидок"
 - Допустимые типы скидки: На товары каталога
 
А в папку /classes/components/emarket/classes/discounts/rules/ необходимо скопировать файл counts.php следующего содержания:
<?php
class countsDiscountRule extends discountRule implements itemDiscountRule {
  
  public function validateItem(iUmiHierarchyElement $orderItem) {
  
    $itemsCount = '';
    $emarket = cmsController::getInstance()->getModule('emarket');
    if(!$emarket) return;
    //текущая корзина
    $order = $emarket->getBasketOrder();
    
    foreach($order->getItems() as $orderItemBasket) {
      $object_id = $orderItemBasket->getItemElement()->getId();
      if($object_id == $orderItem->id){
        $itemsCount = $orderItemBasket->getAmount();
      break;
      }
    }
    
    // Если кол-во товаров в корзине >= условия в скидке то возвращаем true
    if($itemsCount >= $this->counts){
      return true;
    }else{
      return false;
    }
  }
};
?>
Далее, уже в модуле "Интернет-магазин", во вкладке "Скидки", в новой скидке указываем в поле counts количество объектов при котором, скидка будет применена к товару.
Более подробные инструкции: 
1. Идём в Шаблоны данных 
2. В строку поиска пишем Правила скидок 
3. Добавляем новый тип данных дочерний к Правилам скидок: 
Название типа: например, "В зависимости от количества товаров" 
Назначение типа: Правило скидки 
Здесь же добавляем новое поле: 
Название: количество 
Идентификатор: counts 
Тип: число 
Видимое: Да 
Запоминаем id: /admin/data/type_edit/460/ - у меня 460 
4. Также, через поиск ищем справочник "Типы правил для скидок" и открываем его на просмотр (нажать на глазик). 
5. Добавляем новое наименование в справочник, открываем его на редактирование 
Название: От количества в корзине 
Идентификатор: counts 
Тип данных (id): id только что созданного типа данных в разделе "Правила скидок" (я введу 460) 
Допустимые типы скидки: На товары каталога 
6. В папку /classes/components/emarket/classes/discounts/rules/ необходимо скопировать файл counts.php следующего содержания: как в статье 
7. Идем в Интернет магазин на вкладку Скидки и создаем новую скидку "От количества в корзине", тип скидки "На товары каталога". Модификатор цены "Процент от суммы", правила валидации "От количества в корзиине". Нажимаем Добавить. 
8. Делаем скидку активной, в поле "Процент от суммы" ставим например 5, в поле "От количества в корзине" ставим например 2. Сохраняем. 
9. Проверяем, что всё работает так как нужно, при увеличении количества товара на 2 - мы получаем ожидаемую скидку.