

array ( 'ID' => 0, 'USER_ID' => '1', 'USER_GROUPS' => [...], 'SITE_ID' => 's1', 'LID' => 's1', 'ORDER_PRICE' => 8393.0, 'ORDER_WEIGHT' => 0.0, 'CURRENCY' => 'RUB', 'PERSON_TYPE_ID' => 1, 'BASKET_ITEMS' => [...], 'ORDER_PROP' => [...], 'DELIVERY_LOCATION' => '0000073738', 'DELIVERY_LOCATION_ZIP' => '101000', 'BASE_PRICE_DELIVERY' => 0, 'PRICE_DELIVERY' => 0, 'PRICE_DELIVERY_DIFF' => 0, 'DELIVERY_ID' => 0, 'SHIPMENT_ID' => 0, 'PAY_SYSTEM_ID' => 0 ) |
function checkDiscountByOrder($arOrder) {
if (!is_array($arOrder)) {
return false;
}
if (!\Bitrix\Main\Loader::includeModule('sale')) {
return false;
}
$orderPropLocation = 6; // ID свойства заказа местоположения
$locationCode = $arOrder['ORDER_PROP'][$orderPropLocation]; // Текущее значение местоположения
$moscowAreaCode = ['0000073738', '0000028025']; // Код города Москва и московская область
$iterator = \Bitrix\Sale\Location\LocationTable::getList([
'filter' => ['=CODE' => $moscowAreaCode],
'select' => ['CODE', 'LEFT_MARGIN', 'RIGHT_MARGIN']
]);
while ($area = $iterator->fetch()) {
$res = \Bitrix\Sale\Location\LocationTable::getList([
'filter' => [
'=CODE' => $locationCode,
'>=LEFT_MARGIN' => $area['LEFT_MARGIN'],
'<=RIGHT_MARGIN' => $area['RIGHT_MARGIN']
],
'select' => ['CODE', 'LEFT_MARGIN', 'RIGHT_MARGIN'],
'limit' => 1
]);
if ($res->fetch()) {
return true;
}
}
return false;
}
|







Модуль не проверяет, авторизован ли пользователь или это анонимный пользователь. Это следует ограничивать на другой вкладке через группы пользователей при создании правила работы с корзиной.
Удачного пользования! Станьте ближе для покупателя используя функционал модуля.
Внимание! Повторная установка в демо-режиме приведет к окончанию демо‑режима и невозможности использовать модуль.