2 первых пункта получились.
В хайлоад блоке имеем следующее prntscr.com/bw079u
Есть проблема с проверкой города и региона.
Допустим, пользователь указал свой местоположение как Федоровка Самарская область.
Смотрю в хайлоад:
<?php
// подключаем пространство имен класса HighloadBlockTable и даём ему псевдоним HLBT для удобной работы
use Bitrix\Highloadblock\HighloadBlockTable as HLBT;
// id highload-инфоблока
const MY_HL_BLOCK_ID = 3;
//подключаем модуль highloadblock
CModule::IncludeModule('highloadblock');
//Напишем функцию получения экземпляра класса:
function GetEntityDataClass($HlBlockId) {
if (empty($HlBlockId) || $HlBlockId < 1)
{
return false;
}
$hlblock = HLBT::getById($HlBlockId)->fetch();
$entity = HLBT::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
return $entity_data_class;
}
$entity_data_class = GetEntityDataClass(MY_HL_BLOCK_ID);
$arFilter = Array(
Array(
"LOGIC"=>"AND",
Array(
"UF_REG_NAME"=>'Самарская область'
),
Array(
"UF_CITY_NAME"=>'Федоровка'
)
)
);
$rsData = $entity_data_class::getList(array(
'select' => array('*'),
'filter' => $arFilter
));
while($el = $rsData->fetch()){
var_dump($el);
}
?>
в результате получаю массив:
array(6) { ["ID"]=> string(3) "227" ["UF_REG"]=> string(2) "38" ["UF_REG_NAME"]=> string(33) "Самарская область" ["UF_ZIP"]=> string(0) "" ["UF_CITY"]=> string(3) "143" ["UF_CITY_NAME"]=> string(18) "Федоровка" }
Т.е. эта запись присутствует.
В автоматизированном обработчике простой доставки есть условие, что заданное пользователем местоположение должно соответствовать группе местоположений:
// введем служебный метод, определяющий группу местоположения и возвращающий стоимость для этой группы.
function __GetLocationPrice($LOCATION_ID, $arConfig)
{
// получим список групп для переданного местоположения
$dbLocationGroups = CSaleLocationGroup::GetLocationList(array("LOCATION_ID" => $LOCATION_ID));
print_r($dbLocationGroups);
while ($arLocationGroup = $dbLocationGroups->Fetch())
{
if (
array_key_exists('price_'.$arLocationGroup["LOCATION_GROUP_ID"], $arConfig)
&&
strlen($arConfig['price_'.$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"] > 0)
)
{
// если есть непустая запись в массиве настроек для данной группы, вернем ее значение
return $arConfig['price_'.$arLocationGroup["LOCATION_GROUP_ID"]]["VALUE"];
}
}
// если не найдено подходящих записей, вернем false
return false;
}
// метод проверки совместимости в данном случае практически аналогичен рассчету стоимости
function Compability($arOrder, $arConfig)
{
// проверим наличие стоимости доставки
$price = CDeliverySimple::__GetLocationPrice($arOrder["LOCATION_TO"], $arConfig);
print_r($arOrder["LOCATION_TO"]);
print_r($price);
if ($price === false)
return array(); // если стоимость не найдено, вернем пустой массив - не подходит ни один профиль
else
return array('simple'); // в противном случае вернем массив, содержащий идентфиикатор единственного профиля доставки
}
Пожалуйста, подскажите, как можно в данном случае проверить не группы местоположений, а наличие местоположения в хайлоад блоке, чтобы была доступна доставка курьером?
В хайлоад блоке имеем следующее prntscr.com/bw079u
Есть проблема с проверкой города и региона.
Допустим, пользователь указал свой местоположение как Федоровка Самарская область.
Смотрю в хайлоад:
в результате получаю массив:
array(6) { ["ID"]=> string(3) "227" ["UF_REG"]=> string(2) "38" ["UF_REG_NAME"]=> string(33) "Самарская область" ["UF_ZIP"]=> string(0) "" ["UF_CITY"]=> string(3) "143" ["UF_CITY_NAME"]=> string(18) "Федоровка" }
Т.е. эта запись присутствует.
В автоматизированном обработчике простой доставки есть условие, что заданное пользователем местоположение должно соответствовать группе местоположений:
Пожалуйста, подскажите, как можно в данном случае проверить не группы местоположений, а наличие местоположения в хайлоад блоке, чтобы была доступна доставка курьером?