Добавление нового модификатора скидки

Материал из Umicms
Версия от 08:12, 9 ноября 2013; Stexe (обсуждение | вклад) (Новая страница: « category:Модуль Интернет магазин '''Задача:''' Добавить новый модификатор скидки наряду с мод…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к:навигация, поиск

Задача: Добавить новый модификатор скидки наряду с модификаторами "Процент от суммы" и "Фиксированный размер".

Реализация:

В этой статье мы добавим новый модификатор скидки - "Процент от суммы", но конечная сумма с учетом скидки будет округлена до целого в меньшую сторону.

  1. В модуле "Шаблоны данных" на вкладке "Типы данных" для типа "Модификаторы цены скидок" нужно добавить дочерний тип данных (подтип), например, "Процент от суммы (округленная)" и добавить поле в этот тип с идентификатором "percent" без кавычек и типом поля "Число с точкой" (можно посмотреть на примере типа данных "Процент от суммы заказа"). Также нужно выбрать назначение типа - "Модификатор цены скидки".
  2. В модуле "Шаблоны данных" на вкладке "Справочники" в справочник "Типы модификаторов скидок" нужно добавить новый элемент. Нужно заполнить поле "Идентификатор", им будет название файла PHP и префикс названия класса модификатора цены скидки. В поле "Тип данных (id)" нужно указать id типа данных, созданного в шаге №1. Поле "Тип данных (GUID)" можно не заполнять. В поле "Допустимые типы скидки" нужно выбрать допустимые типа скидки для данного модификатора.
  3. В директорию /classes/modules/emarket/classes/discounts/modificators нужно добавить файл с названием идентификатор.php ("идентификатор" - идентификатор, указанный для элемента на шаге №2). Вы можете скопировать файл /classes/modules/emarket/classes/discounts/modificators/proc.php и переименовать его. Класс модификатора должен иметь имя - "идентификаторDiscountModificator" без кавычек.

Пример кода нового модификатора скидки приведен ниже:

<?php
	class fpercentDiscountModificator extends discountModificator {
		public function recalcPrice($originalPrice) {
			return floor($originalPrice - ($originalPrice * $this->percent / 100));
		}
	};
?>