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