Добавление нового правила скидки — различия между версиями
| VITL' (обсуждение | вклад) | Cmac (обсуждение | вклад)  | ||
| Строка 40: | Строка 40: | ||
| «Раздел» должен быть прямым родителям для объекта каталога, т.е. указание промежуточного раздела, в котором есть подразделы, в данном случае не сработает. | «Раздел» должен быть прямым родителям для объекта каталога, т.е. указание промежуточного раздела, в котором есть подразделы, в данном случае не сработает. | ||
| + | [[Категория:Модуль Интернет магазин]] | ||
Версия 10:42, 8 сентября 2011
В данной статье будет рассказано о том, как добавить новое правило скидки для товаров. Для примера будет рассмотрен вариант добавления скидки, которая будет применяться к товару только в том случае, если он находится в определенном разделе и относится к определенному производителю.
Допустим, у товаров есть поле Производитель, типа выпадающий список, идентификатор поля proizvoditel, справочник для поля - «Производитель». Тогда добавим дочерний тип по отношению к «Правила скидок», модуль "Шаблоны данных". Назовем новый тип «На раздел и производителя». В поле «Назначение типа» выберем «Правило скидки», добавим поле "Раздел" с типом «Ссылка на дерево», строковый идентификатор 'razdely'. Также добавим поле "Производитель", с типом выпадающий список, а справочник укажем такой же как и для товаров, т.е. «Производитель». Будем считать, что новый тип данных имеет object_id = 1062.
Откроем содержание справочника «Типы правил для скидок», добавим еще один элемент, с названием «На раздел и производителя», Идентификатор – brand, Тип данных – 1062, Допустимые типы скидки - На товары каталога.
Далее в папку \classes\modules\emarket\classes\discounts\rules\ добавим файл brand.php, со следующим содержанием:
<?php
	class brandDiscountRule extends discountRule implements itemDiscountRule {
		public function validateItem(iUmiHierarchyElement $orderItem) {
			if(!is_array($this->razdely)) {
				return false;
			}
                        // слева, proizvoditel - идентификатор поля в Правиле скидки
                        // справа, proizvoditel - идентификатор поля у товара
			if($this->proizvoditel == $orderItem->proizvoditel){
  			 foreach($this->razdely as $catalogItem) {
    				if($catalogItem->id == $orderItem->getParentId()) {
    					return true;
    				}
  			 }
			}			
			return false;
		}
	};
?>
Теперь остается добавить саму скидку. В модуле Интернет-магазин, вкладка «Скидки», добавляем скидку:
- Тип скидки - На товары каталога
- Модификатор цены - Процент от суммы
- Правила валидации - На раздел и производителя
Указываем необходимые параметры скидки:
- Процент скидки
- Разделы
- Производитель
«Раздел» должен быть прямым родителям для объекта каталога, т.е. указание промежуточного раздела, в котором есть подразделы, в данном случае не сработает.
