Пытаюсь добавить свое собственное ограничение в службы доставки по группе пользователей.
Нашла урок, в котором расписаны методы и события, с помощью которых это все можно сделать:
https://dev.1c-bitrix.ru/learning/course/index.php?COURSE_ID=43&LESSON_ID=7352&LESSO...
Создала в файле init.php событие и подключила функцию:
В файле /bitrix/php_interface/include/MyDeliveryRestriction.php прописала класс для нового ограничения:
Но в службах доставки ограничение По группе пользователей не появляется,
подскажите, пожалуйста, что я делаю не так?
Нашла урок, в котором расписаны методы и события, с помощью которых это все можно сделать:
Создала в файле init.php событие и подключила функцию:
Код |
---|
$eventManager->addEventHandler('sale', 'onSaleDeliveryRestrictionsClassNamesBuildList', 'myDeliveryFunction');// службы доставки // службы доставки function myDeliveryFunction() { return new \Bitrix\Main\EventResult( \Bitrix\Main\EventResult::SUCCESS, array( '\MyDeliveryRestriction' => '/bitrix/php_interface/include/MyDeliveryRestriction.php', ) ); } |
Код |
---|
<?php use Bitrix\Sale\Delivery\Restrictions; use Bitrix\Sale\Internals\Entity; class MyDeliveryRestriction extends Restrictions\Base { public static $easeSort = 200; /** * @return mixed */ public static function getClassTitle() { return 'По группе пользователей'; } /** * @return mixed */ public static function getClassDescription() { return 'Ограничение по группе пользователей'; } /** * @param CollectableEntity $entity * @return int */ protected static function extractParams(CollectableEntity $entity) { /** @var ShipmentCollection $collection */ $collection = $entity->getCollection(); /** @var Order $order */ $order = $collection->getOrder(); if($GLOBALS['USER']->isAuthorized()){ $usergroupId=$GLOBALS['USER']->GetUserGroupArray(); }else $usergroupId=array(2); return $usergroupId; } /** * @param $deliveryId * @return array * @throws \Bitrix\Main\ArgumentException */ public static function getParamsStructure($deliveryId = 0) { $personTypeList = array(); $dbRes = \Bitrix\Main\GroupTable::getList(); while ($personType = $dbRes->fetch()) $personTypeList[$personType["ID"]] = $personType["NAME"]." (".$personType["ID"].")"; return array( "USER_GROUP_ID" => array( "TYPE" => "ENUM", 'MULTIPLE' => 'Y', "LABEL" => Loc::getMessage("SALE_DLVR_RSTR_BY_PERSON_TYPE_NAME"), "OPTIONS" => $personTypeList ) ); } /** * @param $personTypeId * @param array $params * @param int $deliveryId * @return bool */ public static function check($usergroupId, array $params, $deliveryId = 0) { if (is_array($params) && isset($params['USER_GROUP_ID'])) { return sizeof(array_intersect($usergroupId, $params['USER_GROUP_ID']))>0; } return true; } /** * @param $mode * @return int */ public static function getSeverity($mode) { return \Bitrix\Sale\Delivery\Restrictions\Manager::SEVERITY_STRICT; } } |
Но в службах доставки ограничение По группе пользователей не появляется,
подскажите, пожалуйста, что я делаю не так?