setupDefaultRestrictions
public static function \Bitrix\Sale\Services\Base\RestrictionManager::setupDefaultRestrictions( RestrictableService $service );
Метод применяет для сервиса все дефолтные ограничения, которые должны быть применены при его добавлении. Т.е. если мы добавляем платёжную систему, которая работает только в рублях, то при вызове метода setupDefaultRestrictions к этой платежной системе добавится ограничение по валюте "Рубль". Метод статический.
Примечание: На текущий момент данный метод работает только с одним видом сервисов – с платёжными системами.
Параметры
| Параметр | Описание | Версия |
|---|---|---|
| $service | Сервис, который нужно ограничить (например, платёжная система). Должен реализовывать интерфейс \Bitrix\Sale\Services\Base\RestrictableService. |
Менеджер ограничений RestrictionManager и сервис $service, который передаётся в метод этого менеджера, должны бать одного типа (в нашем случае в менеджер ограничений платёжных систем передаётся сервис платёжной системы).
Метод setupDefaultRestrictions вызывается для платёжной системы после добавления её в базу данных. Метод вызывается во всех местах, где происходит добавление платёжной системы (в публичной и административной частях сайта).
Примеры
public static function setupDefaultRestrictions(RestrictableService $service): Result
{
$result = new Result();
// Далее идёт получение коллекций ограничений, которые изначально прописаны для сервиса. Коллекция ограничений – это класс Bitrix\Sale\Services\Base\RestrictionInfoCollection
$startupRestrictions = $service->getStartupRestrictions();
// Далее сторонние разработчики могут подписаться на событие применения стандартных ограничений, отследить по SERVICE_ID что это за сервис, а также убрать/добавить в коллекцию ограничений STARTUP_RESTRICTIONS_COLLECTION те ограничения, которые нужно в итоге применить к сервису. На текущий момент это применимо только для платёжных систем
(new Event(
moduleId: 'sale',
type: static::ON_STARTUP_SERVICE_RESTRICTIONS_EVENT_NAME,
[
'STARTUP_RESTRICTIONS_COLLECTION' => $startupRestrictions,
'SERVICE_ID' => $service->getServiceId(),
]
))->send();
self::clearAlreadyUsedByServiceRestrictions($service->getserviceId(), $startupRestrictions);
/** @var RestrictionInfo $restrictionInfo */
// Ниже – итоговый список ограничений. Каждое ограничение из коллекции применяется к платёжной системе
foreach ($startupRestrictions as $restrictionInfo)
{
$applyResult = static::applyRestriction($service->getServiceId(), $restrictionInfo);
$result->addErrors($applyResult->getErrors());
}
// Ограничения от разработчиков должны приходить в виде класса Bitrix\Sale\Services\Base\RestrictionInfo. В этом же виде они хранятся в коллекции.
return $result;
}