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

Материал из Umicms
Перейти к:навигация, поиск
Строка 8: Строка 8:
 
[[Файл:Screenshot-by-nimbus (1).png]]<br/>
 
[[Файл:Screenshot-by-nimbus (1).png]]<br/>
 
Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт.<br/>
 
Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт.<br/>
[[Skidka002.png]]<br/>
+
[[Снимок экрана от 2014-10-06 13-12-02.png]]<br/>
 
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - card_discount.
 
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - card_discount.
 
При создании новой скидки выберем тип "на заказ" и в качестве правила скидки - созданное выше.
 
При создании новой скидки выберем тип "на заказ" и в качестве правила скидки - созданное выше.

Версия 09:15, 6 октября 2014


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

Создадим новый тип данных "номер карты" в модуле "шаблоны данных" и отметим галочки Общедоступный и Можно использовать как справочник.
Skidkapokarte01.pngScreenshot-by-nimbus.png
В справочнике, который соответствует этому типу, будут храниться номера дисконтных карт.
Screenshot-by-nimbus (1).png
Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт.
Снимок экрана от 2014-10-06 13-12-02.png
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - card_discount. При создании новой скидки выберем тип "на заказ" и в качестве правила скидки - созданное выше. В файле /classes/modules/emarket/classes/discounts/rules/counts.php (его необходимо создать) пишем следующий код:

<?php
class countsDiscountRule 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('127');
		$nums->where('name')->equals($cardNum);
		$res=$nums->result;
		if(count($res)){
			return true;
		}else{
			return false;
		}
	}
  }
};
?>

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