Скидка на товар в зависимости от количества этого товара в корзине

Материал из Umicms
Версия от 04:35, 28 июля 2011; VITL' (обсуждение | вклад) (Новая страница: «В данной статье мы рассмотрим пример добавления нового правила скидки на товар. В зависим…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

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

Аналогично данной статье Добавление нового правила скидки, необходимо добавить новое правило скидки. В новом типе данных, дочернем по отношению к типу "Правила скидок", добавляем поле с идентификатором counts. Также добавляем новый элемент в справочник "Типы правил для скидок":

  • Идентификатор: counts
  • Тип данных (id): id только что созданного типа данных в разделе "Правила скидок"
  • Допустимые типы скидки: На товары каталога

А в папку \classes\modules\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 количество объектов при котором, скидка будет применена к товару.