Скидка по карте — различия между версиями
Velross (обсуждение | вклад) |
Velross (обсуждение | вклад) |
||
Строка 5: | Строка 5: | ||
Создадим новый тип данных "номер карты" в модуле "шаблоны данных" и отметим галочки Общедоступный и Можно использовать как справочник. <br/> | Создадим новый тип данных "номер карты" в модуле "шаблоны данных" и отметим галочки Общедоступный и Можно использовать как справочник. <br/> | ||
[[Файл:Skidkapokarte01.png]][[Файл:Screenshot-by-nimbus.png]]<br/> | [[Файл:Skidkapokarte01.png]][[Файл:Screenshot-by-nimbus.png]]<br/> | ||
− | В справочнике, который соответствует этому типу, будут храниться номера дисконтных карт. | + | В справочнике, который соответствует этому типу, будут храниться номера дисконтных карт.<br/> |
+ | [[Файл:Screenshot-by-nimbus (1).png]]<br/> | ||
Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт. | Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт. | ||
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - card_discount. | В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - card_discount. |
Версия 09:08, 6 октября 2014
Задача: активировать скидку, если у пользователя есть дисконтная карта.
Создадим новый тип данных "номер карты" в модуле "шаблоны данных" и отметим галочки Общедоступный и Можно использовать как справочник.
В справочнике, который соответствует этому типу, будут храниться номера дисконтных карт.
Далее нужно создать новый тип, дочерний к типу "правила скидок". Идентификатор - counts, Тип скидки - на заказ, тип данных - id созданного ранее типа данных с номерами карт.
В типе данных "Пользователь" необходимо добавить поле для номера дисконтной карты (пользователь сможет заполнить его в личном кабинете). В примере - 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 созданного справочника с номерами карт. Если номер карты, введенный пользователем в своем личном кабинете, будет найден в справочнике, то скидка активируется.