Скидка по карте — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(¯\_(ツ)_/¯)
Строка 3: Строка 3:
 
Задача: активировать скидку, если у пользователя есть дисконтная карта.
 
Задача: активировать скидку, если у пользователя есть дисконтная карта.
  
Создадим новый тип данных "номер карты" в модуле "шаблоны данных" и отметим галочки Общедоступный и Можно использовать как справочник. <br/>
+
Создадим новый справочник "Скидочные карты" в модуле Шаблоны данных вкладка Справочники кнопка "Добавить справочник". <br/>
[[Файл:Skidkapokarte01.png]][[Файл:Screenshot-by-nimbus.png]]<br/>
+
[[Файл:Screenshot_207.png]]<br/>
В справочнике, который соответствует этому типу, будут храниться номера дисконтных карт.<br/>
+
В этом справочнике будут храниться номера дисконтных карт. Для добавления кода карты необходимо выбрать справочник и нажать кнопку "Посмотреть"<br/>
[[Файл:Screenshot-by-nimbus (1).png]]<br/>
+
[[Файл:Screenshot_209.png]]<br/>
Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт.<br/>
+
Далее нужно создать новый тип, дочерний к типу "Правила скидок", назовем его "Скидка по карте".<br/>
[[Файл:Снимок экрана от 2014-10-06 13-12-02.png]][[Файл:Screenshot-by-nimbus (2).png]]<br/>
+
 
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - card_discount.
+
[[Файл:Screenshot_210.png]][[Файл:Screenshot_208.png]]<br/>
При создании новой скидки выберем тип "на заказ" и в качестве правила скидки - созданное выше.
+
В справочник "Типы правил скидки" необходимо добавить новый элемент с именем "Скидочная карта" для которого указать:
В файле /classes/modules/emarket/classes/discounts/rules/counts.php (его необходимо создать) пишем следующий код:
+
Идентификатор - discountcard, Тип данных (id) - нужно указать id созданного ранее типа данных "Скидка по карте", "Допустимые типы скидки" добавить "На заказ"<br/>
 +
[[Файл:Screenshot_212.png]][[Файл:Screenshot_211.png]]<br/>
 +
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете) в группу полей Дополнительная информация. В примере - card_discount.
 +
 
 +
При создании новой скидки выберем тип "На заказ" и в качестве правила скидки - созданное выше.
 +
В файле /classes/modules/emarket/classes/discounts/rules/discountcard.php (его необходимо создать) пишем следующий код:
 
<source lang="php">
 
<source lang="php">
 
<?php
 
<?php
class countsDiscountRule extends discountRule implements orderDiscountRule {
+
class discountcardDiscountRule extends discountRule implements orderDiscountRule {
 
   
 
   
 
   public function validateOrder(order $order) {
 
   public function validateOrder(order $order) {
Строка 26: Строка 31:
 
$cardNum = $userObject->getValue("card_discount");  
 
$cardNum = $userObject->getValue("card_discount");  
 
$nums = new selector ('objects');
 
$nums = new selector ('objects');
$nums->types('object-type')->id('127');
+
$nums->types('object-type')->id('188');
 
$nums->where('name')->equals($cardNum);
 
$nums->where('name')->equals($cardNum);
 
$res=$nums->result;
 
$res=$nums->result;
Строка 40: Строка 45:
 
</source>
 
</source>
  
В данном примере 127 - это id созданного справочника с номерами карт.
+
В данном примере 188 - это id созданного справочника "Скидочные карты" с номерами карт.
 
Если номер карты, введенный пользователем в своем личном кабинете, будет найден в справочнике, то скидка активируется.
 
Если номер карты, введенный пользователем в своем личном кабинете, будет найден в справочнике, то скидка активируется.
 
[[Категория:Модуль Интернет магазин]][[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]
 
[[Категория:Модуль Интернет магазин]][[Категория:Вопросы и уроки разработки сайтов на UMI.CMS]]

Версия 14:18, 24 октября 2018


Задача: активировать скидку, если у пользователя есть дисконтная карта.

Создадим новый справочник "Скидочные карты" в модуле Шаблоны данных вкладка Справочники кнопка "Добавить справочник".
Screenshot 207.png
В этом справочнике будут храниться номера дисконтных карт. Для добавления кода карты необходимо выбрать справочник и нажать кнопку "Посмотреть"
Screenshot 209.png
Далее нужно создать новый тип, дочерний к типу "Правила скидок", назовем его "Скидка по карте".

Screenshot 210.pngScreenshot 208.png
В справочник "Типы правил скидки" необходимо добавить новый элемент с именем "Скидочная карта" для которого указать: Идентификатор - discountcard, Тип данных (id) - нужно указать id созданного ранее типа данных "Скидка по карте", "Допустимые типы скидки" добавить "На заказ"
Screenshot 212.pngScreenshot 211.png
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете) в группу полей Дополнительная информация. В примере - card_discount.

При создании новой скидки выберем тип "На заказ" и в качестве правила скидки - созданное выше. В файле /classes/modules/emarket/classes/discounts/rules/discountcard.php (его необходимо создать) пишем следующий код:

<?php
class discountcardDiscountRule extends discountRule implements orderDiscountRule {
 
  public function validateOrder(order $order) {
	
	$permissions = permissionsCollection::getInstance();
	$currentUserId = $permissions->getUserId();
	$objects = umiObjectsCollection::getInstance();
	$userObject = $objects->getObject($currentUserId);
	
	if($userObject instanceof umiObject) {
		$cardNum = $userObject->getValue("card_discount"); 
		$nums = new selector ('objects');
		$nums->types('object-type')->id('188');
		$nums->where('name')->equals($cardNum);
		$res=$nums->result;
		if(count($res)){
			return true;
		}else{
			return false;
		}
	}
  }
};
?>

В данном примере 188 - это id созданного справочника "Скидочные карты" с номерами карт. Если номер карты, введенный пользователем в своем личном кабинете, будет найден в справочнике, то скидка активируется.