/** * Loads data from base */ private function loadDataToCache() { $cityNames = array(); $dbLocations = CSaleLocation::GetList(array(), array(), false, false, array("ID", "CITY_NAME_LANG")); while ($arLocation = $dbLocations->Fetch()) { if (isset($arLocation["CITY_NAME_LANG"]) && strlen($arLocation["CITY_NAME_LANG"]) > 0) { $cityNames[$arLocation["ID"]] = ToLower($arLocation["CITY_NAME_LANG"]); } } return $cityNames; }
public static function isLocationsCreated() { if (CSaleLocation::isLocationProMigrated()) { $res = Location\LocationTable::getList(array('select' => array('CNT')))->fetch(); return $res['CNT'] > 0; } $dbResultList = CSaleLocation::GetList(); if ($dbResultList->Fetch()) { return true; } return false; }
public function getLocation() { if (!$this->getLocationId()) { throw new \Exception('Не указано место доставки ' . __METHOD__); } $retval = false; $res = \CSaleLocation::GetList(array(), array('LID' => LANGUAGE_ID, 'ID' => $this->getLocationId())); while ($city = $res->GetNext()) { if (!\Bitrix\Sale\SalesZone::checkCityId($city['CITY_ID'], SITE_ID)) { continue; } if (empty($city['CITY_NAME'])) { continue; } $retval = $city; } return $retval; }
function GetConfig() { // $locations = array(); // $locationRes = CSaleLocation::GetList(); // while ($locationAr = $locationRes->Fetch()) { // if ($locationAr["CITY_NAME"]) { // $locations[$locationAr["ID"]] = $locationAr["CITY_NAME"]; // } // } $moduleID = 'getparcel.gpwidget'; if (CModule::IncludeModule($moduleID)) { $default = COption::GetOptionString($moduleID, 'default_location'); } $location_list = array(); $location_res = CSaleLocation::GetList( array("SORT" => "ASC", "CITY_NAME" => "ASC"), array("LID" => LANGUAGE_ID, ">CITY_ID" => ""), false, false, array("ID", "CITY_NAME") ); while ($location_ar = $location_res->Fetch()) { $location_list[$location_ar['ID']] = $location_ar['CITY_NAME']; } $arConfig = array( "CONFIG_GROUPS" => array( "all" => GetMessage("CONFIG_GROUPS_ALL"), ), "CONFIG" => array( "LOCATION_ID" => array( "TYPE" => "DROPDOWN", "DEFAULT" => intVal($default) > 0 ? $default : "", "TITLE" => GetMessage("CONFIG_LOCATION_ID_TITLE"), "GROUP" => "all", "VALUES" => $location_list, ), "URLES" => array( "SYSTEM_STATUS_URL" => "api/shop-company/v1/system_status", "TOKEN_URL" => "api/widget/v1/auth_token.json", "POST_URL" => "api/shop-company/v1/orders.json", "PATCH_URL" => "api/shop-company/v1/orders/#ID#.json", "DELIVERY_URL" => "api/shop-company/v1/orders/delivery_price", ) ), ); return $arConfig; }
$arZipList = $_REQUEST["ZIP"]; CSaleLocation::SetLocationZIP($ID, $arZipList); } } if (strlen($strError) > 0) { $bInitVars = True; } else { if (strlen($save) > 0) { LocalRedirect("sale_location_admin.php?lang=" . LANG . GetFilterParams("filter_", false)); } else { LocalRedirect("sale_location_edit.php?lang=" . LANG . "&ID=" . $ID . GetFilterParams("filter_", false)); } } } if ($ID > 0) { $db_location = CSaleLocation::GetList(array("SORT" => "ASC"), array("ID" => $ID), LANG); if (!$db_location->ExtractFields("str_")) { $ID = 0; } $arZipList = array(); $rsZipList = CSaleLocation::GetLocationZIP($ID); while ($arZip = $rsZipList->Fetch()) { $arZipList[] = $arZip; } } if ($bInitVars) { $DB->InitTableVarsForEdit("b_sale_location", "", "str_"); if (is_array($_REQUEST['ZIP'])) { $arZipList = array(); foreach ($_REQUEST['ZIP'] as $zip) { $arZipList[] = array('ZIP' => $zip);
function getOrderPropFormated($arProperties, $arResult, &$arUserResult, &$arDeleteFieldLocation = array()) { global $USER; $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; $curLocation = false; static $propertyGroupID = 0; static $propertyUSER_PROPS = ""; // take data from user profile if ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) > 0 && !($arResult["HAVE_PREPAYMENT"] && $arUserResult["PROFILE_DEFAULT"] == "Y" && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]))) { $dbUserPropsValues = CSaleOrderUserPropsValue::GetList(array("SORT" => "ASC"), array("USER_PROPS_ID" => $arUserResult["PROFILE_ID"], "ORDER_PROPS_ID" => $arProperties["ID"], "USER_ID" => intval($USER->GetID())), false, false, array("VALUE", "PROP_TYPE", "VARIANT_NAME", "SORT", "ORDER_PROPS_ID")); if ($arUserPropsValues = $dbUserPropsValues->Fetch()) { $valueTmp = ""; if ($arUserPropsValues["PROP_TYPE"] == "MULTISELECT") { $arUserPropsValues["VALUE"] = explode(",", $arUserPropsValues["VALUE"]); } $curVal = $arUserPropsValues["VALUE"]; } } elseif ($arUserResult["PROFILE_CHANGE"] == "Y" && intval($arUserResult["PROFILE_ID"]) <= 0) { if (isset($curVal)) { unset($curVal); } } elseif (isset($arUserResult["ORDER_PROP"][$arProperties["ID"]])) { $curVal = $arUserResult["ORDER_PROP"][$arProperties["ID"]]; } elseif ($arResult["HAVE_PREPAYMENT"] && !empty($arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]])) { $curVal = $arResult["PREPAY_ORDER_PROPS"][$arProperties["CODE"]]; if ($arProperties["TYPE"] == "LOCATION") { $curLocation = $curVal; } } if (intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]) > 0) { $curVal = intval($_REQUEST["NEW_LOCATION_" . $arProperties["ID"]]); } $arProperties["FIELD_NAME"] = "ORDER_PROP_" . $arProperties["ID"]; if (strlen($arProperties["CODE"]) > 0) { $arProperties["FIELD_ID"] = "ORDER_PROP_" . $arProperties["CODE"]; } else { $arProperties["FIELD_ID"] = "ORDER_PROP_" . $arProperties["ID"]; } if (intval($arProperties["PROPS_GROUP_ID"]) != $propertyGroupID || $propertyUSER_PROPS != $arProperties["USER_PROPS"]) { $arProperties["SHOW_GROUP_NAME"] = "Y"; } $propertyGroupID = $arProperties["PROPS_GROUP_ID"]; $propertyUSER_PROPS = $arProperties["USER_PROPS"]; if ($arProperties["REQUIED"] == "Y" || $arProperties["IS_EMAIL"] == "Y" || $arProperties["IS_PROFILE_NAME"] == "Y" || $arProperties["IS_LOCATION"] == "Y" || $arProperties["IS_LOCATION4TAX"] == "Y" || $arProperties["IS_PAYER"] == "Y" || $arProperties["IS_ZIP"] == "Y") { $arProperties["REQUIED_FORMATED"] = "Y"; } if ($arProperties["TYPE"] == "CHECKBOX") { if ($curVal == "Y" || !isset($curVal) && $arProperties["DEFAULT_VALUE"] == "Y") { $arProperties["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = GetMessage("SOA_Y"); } else { $arProperties["VALUE_FORMATED"] = GetMessage("SOA_N"); } $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 30; } elseif ($arProperties["TYPE"] == "TEXT") { if (strlen($curVal) <= 0) { if (strlen($arProperties["DEFAULT_VALUE"]) > 0 && !isset($curVal)) { $arProperties["VALUE"] = $arProperties["DEFAULT_VALUE"]; } elseif ($arProperties["IS_EMAIL"] == "Y") { $arProperties["VALUE"] = $USER->GetEmail(); } elseif ($arProperties["IS_PAYER"] == "Y") { //$arProperties["VALUE"] = $USER->GetFullName(); $rsUser = CUser::GetByID($USER->GetID()); $fio = ""; if ($arUser = $rsUser->Fetch()) { $fio = CUser::FormatName(CSite::GetNameFormat(false), array("NAME" => $arUser["NAME"], "LAST_NAME" => $arUser["LAST_NAME"], "SECOND_NAME" => $arUser["SECOND_NAME"]), false, false); } $arProperties["VALUE"] = $fio; } } else { $arProperties["VALUE"] = $curVal; } //select ZIP for LOCATION if ($arProperties["IS_ZIP"] == "Y" && $arUserResult["PROFILE_CHANGE"] == "N") { $dbPropertiesLoc = CSaleOrderProps::GetList(array("ID" => "DESC"), array("PERSON_TYPE_ID" => $arUserResult["PERSON_TYPE_ID"], "ACTIVE" => "Y", "UTIL" => "N", "IS_LOCATION" => "Y"), false, false, array("ID")); $arPropertiesLoc = $dbPropertiesLoc->Fetch(); if ($arPropertiesLoc["ID"] > 0) { $arZipLocation = array(); if (strlen($curVal) > 0) { $arZipLocation = CSaleLocation::GetByZIP($curVal); } $rsZipList = CSaleLocation::GetLocationZIP($arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]]); if ($arZip = $rsZipList->Fetch()) { if (strlen($arZip["ZIP"]) > 0 && (empty($arZipLocation) || $arZipLocation["ID"] != $arUserResult["ORDER_PROP"][$arPropertiesLoc["ID"]])) { $arProperties["VALUE"] = $arZip["ZIP"]; } } } } if ($arProperties["IS_ZIP"] == "Y") { $arUserResult["DELIVERY_LOCATION_ZIP"] = $arProperties["VALUE"]; } $arProperties["VALUE"] = htmlspecialcharsEx($arProperties["VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; } elseif ($arProperties["TYPE"] == "SELECT") { $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1; $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); $flagDefault = "N"; $nameProperty = ""; while ($arVariants = $dbVariants->GetNext()) { if ($flagDefault == "N" && $nameProperty == "") { $nameProperty = $arVariants["NAME"]; } if ($arVariants["VALUE"] == $curVal || (!isset($curVal) || $curVal == "") && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; $flagDefault = "Y"; } $arProperties["VARIANTS"][] = $arVariants; } if ($flagDefault == "N") { $arProperties["VARIANTS"][0]["SELECTED"] = "Y"; $arProperties["VARIANTS"][0]["VALUE_FORMATED"] = $nameProperty; } } elseif ($arProperties["TYPE"] == "MULTISELECT") { $arProperties["FIELD_NAME"] = "ORDER_PROP_" . $arProperties["ID"] . '[]'; $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 5; $arDefVal = explode(",", $arProperties["DEFAULT_VALUE"]); $countDefVal = count($arDefVal); for ($i = 0; $i < $countDefVal; $i++) { $arDefVal[$i] = Trim($arDefVal[$i]); } $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); $i = 0; while ($arVariants = $dbVariants->GetNext()) { if (is_array($curVal) && in_array($arVariants["VALUE"], $curVal) || !isset($curVal) && in_array($arVariants["VALUE"], $arDefVal)) { $arVariants["SELECTED"] = "Y"; if ($i > 0) { $arProperties["VALUE_FORMATED"] .= ", "; } $arProperties["VALUE_FORMATED"] .= $arVariants["NAME"]; $i++; } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "TEXTAREA") { $arProperties["SIZE2"] = intval($arProperties["SIZE2"]) > 0 ? $arProperties["SIZE2"] : 4; $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 40; $arProperties["VALUE"] = htmlspecialcharsEx(isset($curVal) ? $curVal : $arProperties["DEFAULT_VALUE"]); $arProperties["VALUE_FORMATED"] = $arProperties["VALUE"]; } elseif ($arProperties["TYPE"] == "LOCATION") { //enable location town text if ($_REQUEST["is_ajax_post"] == "Y" && $arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0 && isset($_REQUEST["ORDER_PROP_" . $arProperties["ID"]])) { $rsLocationsList = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID", "CITY_ID")); $arCity = $rsLocationsList->GetNext(); if (intval($arCity["CITY_ID"]) <= 0) { unset($arDeleteFieldLocation[$arProperties["ID"]]); } else { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) { $arDeleteFieldLocation[$arProperties["ID"]] = $arProperties["INPUT_FIELD_LOCATION"]; } $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1; $dbVariants = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || !isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"]) || strlen($curLocation) > 0 && ToUpper($curLocation) == ToUpper($arVariants["CITY_NAME"])) { $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VALUE"] = $arVariants["ID"]; if ($arProperties["IS_LOCATION"] == "Y") { $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; } if ($arProperties["IS_LOCATION4TAX"] == "Y") { $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } if (count($arProperties["VARIANTS"]) == 1) { $arProperties["VALUE"] = $arProperties["VARIANTS"][0]["ID"]; if ($arProperties["IS_LOCATION"] == "Y") { $arUserResult["DELIVERY_LOCATION"] = $arProperties["VALUE"]; } if ($arProperties["IS_LOCATION4TAX"] == "Y") { $arUserResult["TAX_LOCATION"] = $arProperties["VALUE"]; } } } elseif ($arProperties["TYPE"] == "RADIO") { $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC"), array("ORDER_PROPS_ID" => $arProperties["ID"]), false, false, array("*")); while ($arVariants = $dbVariants->GetNext()) { if ($arVariants["VALUE"] == $curVal || !isset($curVal) && $arVariants["VALUE"] == $arProperties["DEFAULT_VALUE"]) { $arVariants["CHECKED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["NAME"]; } $arProperties["VARIANTS"][] = $arVariants; } } elseif ($arProperties["TYPE"] == "FILE") { $arProperties["SIZE1"] = intval($arProperties["SIZE1"]); $arProperties["VALUE"] = isset($curVal) ? CSaleHelper::getFileInfo($curVal) : $arProperties["DEFAULT_VALUE"]; } return $arProperties; }
$siteID = $arParams["site_id"]; if (strlen($arParams["site_id"]) <= 0) { $siteID = "s1"; } $dbSite = CSite::GetByID($siteID); if ($arSite = $dbSite->Fetch()) { $lang = $arSite["LANGUAGE_ID"]; } if (strlen($lang) <= 0) { $lang = "ru"; } $bRus = false; if ($lang == "ru") { $bRus = true; } $dbLocation = CSaleLocation::GetList(array()); if (!$dbLocation->Fetch()) { //Locations include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php"; $csvFile = new CCSVData(); $csvFile->LoadFile(dirname(__FILE__) . "/data/" . $lang . "/loc.csv"); if (IntVal($_SESSION["LOC_POST"]) > 0) { $csvFile->SetPos($_SESSION["LOC_POST"]); } $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); $csvFile->SetDelimiter(","); $arRes = $csvFile->Fetch(); $arLocation = array(); $arLocationMap = array(); if (is_array($arRes) && count($arRes) > 0 && strlen($arRes[0]) == 2) {
$arOrderProps["VALUES"][] = $vars; } elseif($arOrderProps["TYPE"]=="LOCATION") { $propsOfTypeLocation[$arOrderProps['ID']] = true; // required for mapping ID<=>CODE below if(CSaleLocation::isLocationProMigrated()) { $arOrderProps["VALUES"] = array(); if(strlen($arOrderProps["DEFAULT_VALUE"])) $arOrderProps["DEFAULT_VALUE"] = CSaleLocation::getLocationIDbyCODE($arOrderProps["DEFAULT_VALUE"]); } else { // perfomance hole $dbVars = CSaleLocation::GetList(Array("SORT"=>"ASC", "COUNTRY_NAME_LANG"=>"ASC", "CITY_NAME_LANG"=>"ASC"), array(), LANGUAGE_ID); while($vars = $dbVars->GetNext()) $arOrderProps["VALUES"][] = $vars; } } $arrayTmp[$arOrderPropsGroup["ID"]]["PROPS"][] = $arOrderProps; } } $arResult["ORDER_PROPS"] = $arrayTmp; // get prop values $arPropValsTmp = Array(); if (!$bInitVars) { $dbPropVals = CSaleOrderUserPropsValue::GetList( array("SORT" => "ASC"),
if (intval($rsUser->SelectedRowsCount())>0) $arRes["RESULT"] = "Y"; else $arRes["RESULT"] = "N"; } } elseif(isset($_POST['ADDRESS_ID']) && CModule::IncludeModule("useraddress") && CModule::IncludeModule("sale")) { $addressID = intval($_POST['ADDRESS_ID']); $addressInfo = CUserAddress::getAddressId($addressID); //поиск LOCATION по названию города $db_vars = CSaleLocation::GetList( array(), array("LID" => LANGUAGE_ID, "CITY_NAME" => trim($addressInfo[0]["CITY"])), false, false, array("ID") ); while ($vars = $db_vars->Fetch()): $arRes["LOCATION_ID"] = $vars["ID"]; endwhile; } elseif(isset($_POST["getAddressData"])){ include($_SERVER["DOCUMENT_ROOT"].'/local/components/zakrepi/sale.order.ajax/functions.php'); $arResult = Array(); getJsUserAddress($arResult, $USER->GetID()); $arRes = $arResult["JS_USER_ADDRESS"]; }
/** * <p>Функция удаляет местоположение с кодом ID. Функция так же удаляет город этого местоположения, страну этого местоположения (если она не входит больше ни в одно другое местоположение), а так же связи этого местоположения с группами местоположений и службами доставки. </p> * * * * * @param int $ID Код местоположения. </h * * * * @return bool <p>Функция возвращает <i>true</i> в случае успешного удаления * местоположения и <i>false</i> - в противном случае.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * if (!CSaleLocation::Delete(12)) * echo "Ошибка удаления местоположения";<br>?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__delete.008e0aa2.php * @author Bitrix */ public static function Delete($ID) { global $DB; $ID = IntVal($ID); if (!($arLocRes = CSaleLocation::GetByID($ID, LANGUAGE_ID))) { return false; } foreach (GetModuleEvents("sale", "OnBeforeLocationDelete", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID)) === false) { return false; } } if (IntVal($arLocRes["CITY_ID"]) > 0) { CSaleLocation::DeleteCity($arLocRes["CITY_ID"]); } $bDelCountry = True; $db_res = CSaleLocation::GetList(array("SORT" => "ASC"), array("COUNTRY_ID" => $arLocRes["COUNTRY_ID"], "!ID" => $ID), LANGUAGE_ID); if ($db_res->Fetch()) { $bDelCountry = false; } if ($bDelCountry && IntVal($arLocRes["COUNTRY_ID"]) > 0) { CSaleLocation::DeleteCountry($arLocRes["COUNTRY_ID"]); } $bDelRegion = True; $db_res = CSaleLocation::GetList(array("SORT" => "ASC"), array("REGION_ID" => $arLocRes["REGION_ID"], "!ID" => $ID), LANGUAGE_ID); if ($db_res->Fetch()) { $bDelRegion = false; } if ($bDelRegion && IntVal($arLocRes["REGION_ID"]) > 0) { CSaleLocation::DeleteRegion($arLocRes["REGION_ID"]); } $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_ID = " . $ID . "", true); $DB->Query("DELETE FROM b_sale_delivery2location WHERE LOCATION_ID = " . $ID . " AND LOCATION_TYPE = 'L'", true); $DB->Query("DELETE FROM b_sale_location_zip WHERE LOCATION_ID = " . $ID . "", true); $bDelete = $DB->Query("DELETE FROM b_sale_location WHERE ID = " . $ID . "", true); foreach (GetModuleEvents("sale", "OnLocationDelete", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID)); } return $bDelete; }
$arResult["REGION_LIST"] = array(); } elseif (count($arResult["REGION_LIST"]) == 1) { $arParams["REGION"] = $arResult["REGION_LIST"][0]["ID"]; } //select city $arResult["CITY_LIST"] = array(); if ($arResult["EMPTY_CITY"] == "N" && (count($arResult["COUNTRY_LIST"]) > 0 && count($arResult["REGION_LIST"]) > 0 && $arParams["COUNTRY"] > 0 && $arParams["REGION"] > 0 || count($arResult["COUNTRY_LIST"]) <= 0 && count($arResult["REGION_LIST"]) > 0 && $arParams["REGION"] > 0 || count($arResult["COUNTRY_LIST"]) > 0 && count($arResult["REGION_LIST"]) <= 0 && $arParams["COUNTRY"] > 0 || count($arResult["COUNTRY_LIST"]) <= 0 && count($arResult["REGION_LIST"]) <= 0)) { $arCityFilter = array("LID" => LANGUAGE_ID); if ($arParams["COUNTRY"] > 0) { $arCityFilter["COUNTRY_ID"] = $arParams["COUNTRY"]; } if ($arParams["REGION"] > 0) { $arCityFilter["REGION_ID"] = $arParams["REGION"]; } if ($arParams['ALLOW_EMPTY_CITY'] == 'Y') { $rsLocationsList = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), $arCityFilter, false, false, array("ID", "CITY_ID", "CITY_NAME")); while ($arCity = $rsLocationsList->GetNext()) { if (!SalesZone::checkCityId($arCity["CITY_ID"], $arParams["SITE_ID"])) { continue; } $arResult["CITY_LIST"][] = array("ID" => $arCity[$arParams["CITY_OUT_LOCATION"] == "Y" ? "ID" : "CITY_ID"], "CITY_ID" => $arCity['CITY_ID'], "CITY_NAME" => $arCity["CITY_NAME"]); if ($arCity["ID"] == $arParams["CITY"]) { $locationString = (strlen($arCity["CITY_NAME"]) > 0 ? $arCity["CITY_NAME"] . ", " : "") . $locationString; if (IntVal($arParams["LOCATION_VALUE"]) <= 0) { $arParams["LOCATION_VALUE"] = $arCity["ID"]; } $arResult["LOCATION_DEFAULT"] = $arCity["ID"]; } } //end while }
private function grabTree() { $this->data['LOC'] = array(); $auxIndex = array('COUNTRY' => array(), 'REGION' => array(), 'CITY' => array()); $this->data['LOC'] = array('COUNTRY' => array(), 'REGION' => array(), 'CITY' => array()); // level 1: country $res = \CSaleLocation::GetList(array(), array('!COUNTRY_ID' => false, 'REGION_ID' => false, 'CITY_ID' => false, 'LID' => 'en')); while ($item = $res->Fetch()) { if (!isset($this->data['LOC']['COUNTRY'][$item['ID']])) { $this->data['LOC']['COUNTRY'][$item['ID']] = array('SUBJ_ID' => $item['COUNTRY_ID'], 'PARENT_ID' => false, 'PARENT_TYPE' => false); $auxIndex['COUNTRY'][$item['COUNTRY_ID']] = $item['ID']; } } // level 2: country - region $res = \CSaleLocation::GetList(array(), array('!REGION_ID' => false, 'CITY_ID' => false, 'LID' => 'en')); while ($item = $res->Fetch()) { if (!isset($this->data['LOC']['REGION'][$item['ID']])) { $this->data['LOC']['REGION'][$item['ID']] = array('SUBJ_ID' => $item['REGION_ID'], 'PARENT_ID' => $auxIndex['COUNTRY'][$item['COUNTRY_ID']], 'PARENT_TYPE' => 'COUNTRY'); $auxIndex['REGION'][$item['REGION_ID']] = $item['ID']; } } // level 2: country - city $res = \CSaleLocation::GetList(array(), array('REGION_ID' => false, '!CITY_ID' => false, 'LID' => 'en')); while ($item = $res->Fetch()) { if (!isset($this->data['LOC']['CITY'][$item['ID']])) { $this->data['LOC']['CITY'][$item['ID']] = array('SUBJ_ID' => $item['CITY_ID'], 'PARENT_ID' => $auxIndex['COUNTRY'][$item['COUNTRY_ID']], 'PARENT_TYPE' => 'COUNTRY'); } } // level 3: country - region - city $res = \CSaleLocation::GetList(array(), array('!REGION_ID' => false, '!CITY_ID' => false, 'LID' => 'en')); while ($item = $res->Fetch()) { if (!isset($this->data['LOC']['CITY'][$item['ID']])) { $this->data['LOC']['CITY'][$item['ID']] = array('SUBJ_ID' => $item['CITY_ID'], 'PARENT_ID' => $auxIndex['REGION'][$item['REGION_ID']], 'PARENT_TYPE' => 'REGION'); } } // language list $a = false; $b = false; $lang = new \CLanguage(); $res = $lang->GetList($a, $b); $this->data['LANG'] = array(); while ($item = $res->Fetch()) { $this->data['LANG'][] = $item['LID']; } // type list $res = Location\TypeTable::getList(); while ($item = $res->Fetch()) { $this->data['TYPE'][$item['CODE']] = $item['ID']; } }
function getLocationFromNameCity($name_city){ $arRes = Array(); if($name_city != '' && CModule::IncludeModule("useraddress") && CModule::IncludeModule("sale")) { //поиск LOCATION по названию города $db_vars = CSaleLocation::GetList( array(), array("LID" => LANGUAGE_ID, "CITY_NAME" => trim($name_city)), false, false, array("ID") ); while ($vars = $db_vars->Fetch()): $arRes["LOCATION_ID"] = $vars["ID"]; endwhile; } return $arRes["LOCATION_ID"]; }
static function DoProcessOrder(&$arOrder, $arOrderPropsValues, &$arErrors, &$arWarnings, $paysystemId = 0, $deliveryId = "", $arOptions = array()) { if (!is_array($arOrderPropsValues)) { $arOrderPropsValues = array(); } $arUser = null; $arFilter = array("PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "ACTIVE" => "Y"); if ($paysystemId != 0) { $arFilter["RELATED"]["PAYSYSTEM_ID"] = $paysystemId; $arFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED"; } if (strlen($deliveryId) > 0) { $arFilter["RELATED"]["DELIVERY_ID"] = $deliveryId; $arFilter["RELATED"]["TYPE"] = "WITH_NOT_RELATED"; } $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC"), $arFilter, false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "DEFAULT_VALUE")); while ($arOrderProp = $dbOrderProps->Fetch()) { if (!array_key_exists($arOrderProp["ID"], $arOrderPropsValues)) { $curVal = $arOrderProp["DEFAULT_VALUE"]; if (strlen($curVal) <= 0) { if ($arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_PAYER"] == "Y") { if ($arUser == null) { $dbUser = CUser::GetList($by = "ID", $order = "desc", array("ID_EQUAL_EXACT" => $arOrder["USER_ID"])); $arUser = $dbUser->Fetch(); } if ($arOrderProp["IS_EMAIL"] == "Y") { $curVal = is_array($arUser) ? $arUser["EMAIL"] : ""; } elseif ($arOrderProp["IS_PAYER"] == "Y") { $curVal = is_array($arUser) ? $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] : ""; } } } } else { $curVal = $arOrderPropsValues[$arOrderProp["ID"]]; } if (!is_array($curVal) && strlen($curVal) > 0 || is_array($curVal) && count($curVal) > 0) { //if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "MULTISELECT" || $arOrderProp["TYPE"] == "RADIO") if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $arVariants = array(); $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arOrderProp["ID"]), false, false, array("*")); while ($arVariant = $dbVariants->Fetch()) { $arVariants[] = $arVariant["VALUE"]; } if (!is_array($curVal)) { $curVal = array($curVal); } $arKeys = array_keys($curVal); foreach ($arKeys as $k) { if (!in_array($curVal[$k], $arVariants)) { unset($curVal[$k]); } } if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $curVal = array_shift($curVal); } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (is_array($curVal)) { $curVal = array_shift($curVal); } if (CSaleLocation::isLocationProMigrated()) { // if we came from places like CRM, we got location in CODEs, because CRM knows nothing about location IDs. // so, CRM sends LOCATION_IN_CODES in options array. In the other case, we assume we got locations as IDs $res = CSaleLocation::GetById($curVal); if (intval($res['ID'])) { $curVal = $res['ID']; $locId = $res['ID']; } else { $curVal = null; $locId = false; } } else { $dbVariants = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID")); if ($arVariant = $dbVariants->Fetch()) { $curVal = intval($arVariant["ID"]); } else { $curVal = null; } } } } if ($arOrderProp["TYPE"] == "LOCATION" && ($arOrderProp["IS_LOCATION"] == "Y" || $arOrderProp["IS_LOCATION4TAX"] == "Y")) { if ($arOrderProp["IS_LOCATION"] == "Y") { $arOrder["DELIVERY_LOCATION"] = $locId; } if ($arOrderProp["IS_LOCATION4TAX"] == "Y") { $arOrder["TAX_LOCATION"] = $locId; } if (!$locId) { $bErrorField = true; } } elseif ($arOrderProp["IS_PROFILE_NAME"] == "Y" || $arOrderProp["IS_PAYER"] == "Y" || $arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_ZIP"] == "Y") { $curVal = trim($curVal); if ($arOrderProp["IS_PROFILE_NAME"] == "Y") { $arOrder["PROFILE_NAME"] = $curVal; } if ($arOrderProp["IS_PAYER"] == "Y") { $arOrder["PAYER_NAME"] = $curVal; } if ($arOrderProp["IS_ZIP"] == "Y") { $arOrder["DELIVERY_LOCATION_ZIP"] = $curVal; } if ($arOrderProp["IS_EMAIL"] == "Y") { $arOrder["USER_EMAIL"] = $curVal; if (!check_email($curVal)) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace(array("#EMAIL#", "#NAME#"), array(htmlspecialcharsbx($curVal), htmlspecialcharsbx($arOrderProp["NAME"])), GetMessage("SALE_GOPE_WRONG_EMAIL"))); } } if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["REQUIED"] == "Y") { if ($arOrderProp["TYPE"] == "TEXT" || $arOrderProp["TYPE"] == "TEXTAREA" || $arOrderProp["TYPE"] == "RADIO" || $arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "CHECKBOX") { if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (intval($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "MULTISELECT") { //if (!is_array($curVal) || count($curVal) <= 0) if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "FILE") { if (is_array($curVal)) { foreach ($curVal as $index => $arFileData) { if (!array_key_exists("name", $arFileData) && !array_key_exists("file_id", $arFileData)) { $bErrorField = true; } } } else { $bErrorField = true; } } } if ($bErrorField) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace("#NAME#", htmlspecialcharsbx($arOrderProp["NAME"]), GetMessage("SALE_GOPE_FIELD_EMPTY"))); $bErrorField = false; } $arOrder["ORDER_PROP"][$arOrderProp["ID"]] = $curVal; } }
} } } if ($bFinish) { unset($_SESSION["LOC_POS"]); } else { return true; } $time_limit = ini_get('max_execution_time'); if ($time_limit < LOC_STEP_LENGTH) { set_time_limit(LOC_STEP_LENGTH + 5); } $start_time = time(); $finish_time = $start_time + LOC_STEP_LENGTH; if ($loc_file == "loc_ussr.csv" && file_exists($_SERVER['DOCUMENT_ROOT'] . WIZARD_SERVICE_RELATIVE_PATH . "/locations/ru/zip_ussr.csv")) { $rsLocations = CSaleLocation::GetList(array(), array("LID" => 'ru'), false, false, array("ID", "CITY_NAME_LANG", "REGION_NAME_LANG")); $arLocationMap = array(); while ($arLocation = $rsLocations->Fetch()) { if (strlen($arLocation["CITY_NAME_LANG"]) > 0) { if (strlen($arLocation["REGION_NAME_LANG"]) > 0) { $arLocationMap[$arLocation["CITY_NAME_LANG"]][$arLocation["REGION_NAME_LANG"]] = $arLocation["ID"]; } else { $arLocationMap[$arLocation["CITY_NAME_LANG"]] = $arLocation["ID"]; } } } $DB->StartTransaction(); include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php"; $csvFile = new CCSVData(); $csvFile->LoadFile($_SERVER['DOCUMENT_ROOT'] . WIZARD_SERVICE_RELATIVE_PATH . "/locations/ru/zip_ussr.csv"); $csvFile->SetFieldsType("R");
function Delete($ID) { global $DB; $ID = IntVal($ID); if (!($arLocRes = CSaleLocation::GetByID($ID, LANGUAGE_ID))) return false; foreach (GetModuleEvents("sale", "OnBeforeLocationDelete", true) as $arEvent) if (ExecuteModuleEventEx($arEvent, array($ID))===false) return false; if (IntVal($arLocRes["CITY_ID"]) > 0) CSaleLocation::DeleteCity($arLocRes["CITY_ID"]); $bDelCountry = True; $db_res = CSaleLocation::GetList( array("SORT" => "ASC"), array("COUNTRY_ID" => $arLocRes["COUNTRY_ID"], "!ID"=>$ID), LANGUAGE_ID ); if ($db_res->Fetch()) $bDelCountry = false; if ($bDelCountry && IntVal($arLocRes["COUNTRY_ID"]) > 0) CSaleLocation::DeleteCountry($arLocRes["COUNTRY_ID"]); $bDelRegion = True; $db_res = CSaleLocation::GetList( array("SORT" => "ASC"), array("REGION_ID" => $arLocRes["REGION_ID"], "!ID"=>$ID), LANGUAGE_ID ); if ($db_res->Fetch()) $bDelRegion = false; if ($bDelRegion && IntVal($arLocRes["REGION_ID"]) > 0) CSaleLocation::DeleteRegion($arLocRes["REGION_ID"]); $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_ID = ".$ID."", true); $DB->Query("DELETE FROM b_sale_delivery2location WHERE LOCATION_ID = ".$ID." AND LOCATION_TYPE = 'L'", true); $DB->Query("DELETE FROM b_sale_location_zip WHERE LOCATION_ID = ".$ID."", true); if(self::isLocationProMigrated()) { try { $res = Location\LocationTable::delete($ID); // the whole subtree will be deleted if(!$res->isSuccess()) return false; $bDelete = true; } catch(Exception $e) { return false; } } else { $bDelete = $DB->Query("DELETE FROM b_sale_location WHERE ID = ".$ID."", true); } foreach (GetModuleEvents("sale", "OnLocationDelete", true) as $arEvent) ExecuteModuleEventEx($arEvent, array($ID)); return $bDelete; }
?> </td> </tr> <tr> <td><?php echo GetMessage("SALE_F_LOCATION"); ?> :</td> <td> <select name="filter_location"> <option value=""><?php echo GetMessage("SALE_ALL"); ?> </option> <?php $db_vars = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array(), LANG); ?> <?php while ($vars = $db_vars->Fetch()) { ?> <option value="<?php echo $vars["ID"]; ?> "<?php if (IntVal($vars["ID"]) == IntVal($filter_location)) { echo " selected"; } ?> ><?php echo htmlspecialcharsbx($vars["COUNTRY_NAME"] . " - " . $vars["CITY_NAME"]); ?>
function saleLocationImport($arParams) { global $DB; $arReturn = array('STEP' => false, 'ERROR' => '', 'AMOUNT' => 0, 'POS' => 0, 'MESSAGE' => ''); $step_length = intval($arParams["STEP_LENGTH"]); if ($step_length <= 0) { $step_length = 10; } define('ZIP_STEP_LENGTH', $step_length); define('LOC_STEP_LENGTH', $step_length); define('DLZIPFILE', $arParams["DLZIPFILE"]); $STEP = intval($arParams['STEP']); $CSVFILE = $arParams["CSVFILE"]; $LOADZIP = $arParams["LOADZIP"]; $bSync = $arParams["SYNC"] == "Y"; if (isset($arParams['TMP_PATH'])) { $sTmpFilePath = $arParams['TMP_PATH']; } else { $sTmpFilePath = CTempFile::GetDirectoryName(12, 'sale'); } if (strlen($CSVFILE) > 0 && !in_array($CSVFILE, array('loc_ussr.csv', 'loc_ua.csv', 'loc_kz.csv', 'loc_usa.csv', 'loc_cntr.csv', 'locations.csv'))) { //echo GetMessage('SL_IMPORT_ERROR_FILES'); $arReturn['ERROR'] = GetMessage('SL_IMPORT_ERROR_FILES'); } else { if ($STEP == 1 && strlen($CSVFILE) <= 0) { if ($LOADZIP == 'Y') { $STEP = 2; } else { $STEP = 3; } } switch ($STEP) { case 0: $arReturn['MESSAGE'] = GetMessage('WSL_IMPORT_FILES_LOADING'); $arReturn['STEP'] = 1; break; case 1: $time_limit = ini_get('max_execution_time'); if ($time_limit < LOC_STEP_LENGTH) { set_time_limit(LOC_STEP_LENGTH + 5); } $start_time = time(); $finish_time = $start_time + LOC_STEP_LENGTH; $file_url = $sTmpFilePath . $CSVFILE; if (!file_exists($file_url)) { $arReturn['ERROR'] = GetMessage('SL_IMPORT_ERROR_NO_LOC_FILE'); break; } $bFinish = true; $arSysLangs = array(); $db_lang = CLangAdmin::GetList($b = "sort", $o = "asc", array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { $arSysLangs[$arLang["LID"]] = $arLang["LID"]; } $arLocations = array(); if (!$bSync) { if (!is_set($_SESSION["LOC_POS"])) { CSaleLocation::DeleteAll(); } } else { $dbLocations = CSaleLocation::GetList(array(), array(), false, false, array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID")); while ($arLoc = $dbLocations->Fetch()) { $arLocations[$arLoc["ID"]] = $arLoc; } } if (count($arLocations) <= 0) { $bSync = false; } include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php"; $csvFile = new CCSVData(); $csvFile->LoadFile($file_url); $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); $csvFile->SetDelimiter(","); $arRes = $csvFile->Fetch(); if (!is_array($arRes) || count($arRes) <= 0 || strlen($arRes[0]) != 2) { $strWarning .= GetMessage('SL_IMPORT_ERROR_WRONG_LOC_FILE') . "<br />"; } if (strlen($strWarning) <= 0) { $DefLang = $arRes[0]; if (!in_array($DefLang, $arSysLangs)) { $strWarning .= GetMessage('SL_IMPORT_ERROR_NO_LANG') . "<br />"; } } if (strlen($strWarning) > 0) { $arReturn['ERROR'] = $strWarning . "<br />"; break; } if (is_set($_SESSION["LOC_POS"])) { $csvFile->SetPos($_SESSION["LOC_POS"]); $CurCountryID = $_SESSION["CUR_COUNTRY_ID"]; $CurRegionID = $_SESSION["CUR_REGION_ID"]; $numCountries = $_SESSION["NUM_COUNTRIES"]; $numRegiones = $_SESSION["NUM_REGIONES"]; $numCities = $_SESSION["NUM_CITIES"]; $numLocations = $_SESSION["NUM_LOCATIONS"]; } else { $CurCountryID = 0; $CurRegionID = 0; $numCountries = 0; $numRegiones = 0; $numCities = 0; $numLocations = 0; } $tt = 0; while ($arRes = $csvFile->Fetch()) { $type = ToUpper($arRes[0]); $tt++; $arArrayTmp = array(); foreach ($arRes as $ind => $value) { if ($ind % 2 && isset($arSysLangs[$value])) { $arArrayTmp[$value] = array("LID" => $value, "NAME" => $arRes[$ind + 1]); if ($value == $DefLang) { $arArrayTmp["NAME"] = $arRes[$ind + 1]; } } } //country if (is_array($arArrayTmp) && strlen($arArrayTmp["NAME"]) > 0) { if ($type == "S") { $CurRegionID = null; $arRegionList = array(); $CurCountryID = null; $arContList = array(); $LLL = 0; if ($bSync) { $db_contList = CSaleLocation::GetList(array(), array("COUNTRY_NAME" => $arArrayTmp["NAME"], "LID" => $DefLang)); if ($arContList = $db_contList->Fetch()) { $LLL = IntVal($arContList["ID"]); $CurCountryID = IntVal($arContList["COUNTRY_ID"]); } } if (IntVal($CurCountryID) <= 0) { $CurCountryID = CSaleLocation::AddCountry($arArrayTmp); $CurCountryID = IntVal($CurCountryID); if ($CurCountryID > 0) { $numCountries++; if (IntVal($LLL) <= 0) { $LLL = CSaleLocation::AddLocation(array("COUNTRY_ID" => $CurCountryID)); if (IntVal($LLL) > 0) { $numLocations++; } } } } } elseif ($type == "R") { $CurRegionID = null; $arRegionList = array(); $LLL = 0; if ($bSync) { $db_rengList = CSaleLocation::GetList(array(), array("COUNTRY_ID" => $CurCountryID, "REGION_NAME" => $arArrayTmp["NAME"], "LID" => $DefLang)); if ($arRegionList = $db_rengList->Fetch()) { $LLL = $arRegionList["ID"]; $CurRegionID = IntVal($arRegionList["REGION_ID"]); } } if (IntVal($CurRegionID) <= 0) { $CurRegionID = CSaleLocation::AddRegion($arArrayTmp); $CurRegionID = IntVal($CurRegionID); if ($CurRegionID > 0) { $numRegiones++; if (IntVal($LLL) <= 0) { $LLL = CSaleLocation::AddLocation(array("COUNTRY_ID" => $CurCountryID, "REGION_ID" => $CurRegionID)); if (IntVal($LLL) > 0) { $numLocations++; } } } } } elseif ($type == "T" && IntVal($CurCountryID) > 0) { $city_id = 0; $LLL = 0; $arCityList = array(); if ($bSync) { $arFilter = array("COUNTRY_ID" => $CurCountryID, "CITY_NAME" => $arArrayTmp["NAME"], "LID" => $DefLang); if (IntVal($CurRegionID) > 0) { $arFilter["REGION_ID"] = $CurRegionID; } $db_cityList = CSaleLocation::GetList(array(), $arFilter); if ($arCityList = $db_cityList->Fetch()) { $LLL = $arCityList["ID"]; $city_id = IntVal($arCityList["CITY_ID"]); } } if ($city_id <= 0) { $city_id = CSaleLocation::AddCity($arArrayTmp); $city_id = IntVal($city_id); if ($city_id > 0) { $numCities++; } } if ($city_id > 0) { if (IntVal($LLL) <= 0) { $LLL = CSaleLocation::AddLocation(array("COUNTRY_ID" => $CurCountryID, "REGION_ID" => $CurRegionID, "CITY_ID" => $city_id)); if (intval($LLL) > 0) { $numLocations++; } } } } } if ($tt == 10) { $tt = 0; $cur_time = time(); if ($cur_time >= $finish_time) { $cur_step = $csvFile->GetPos(); $amount = $csvFile->iFileLength; $_SESSION["LOC_POS"] = $cur_step; $_SESSION["CUR_COUNTRY_ID"] = $CurCountryID; $_SESSION["CUR_REGION_ID"] = $CurRegionID; $_SESSION["NUM_COUNTRIES"] = $numCountries; $_SESSION["NUM_REGIONES"] = $numRegiones; $_SESSION["NUM_CITIES"] = $numCities; $_SESSION["NUM_LOCATIONS"] = $numLocations; $bFinish = false; //echo "<script>Import(1, {AMOUNT:".CUtil::JSEscape($amount).",POS:".CUtil::JSEscape($cur_step)."})</script>"; $arReturn['STEP'] = 1; $arReturn['AMOUNT'] = $amount; $arReturn['POS'] = $cur_step; break; } } } if ($bFinish) { unset($_SESSION["LOC_POS"]); $strOK = GetMessage('SL_IMPORT_LOC_STATS') . '<br />'; $strOK = str_replace('#NUMCOUNTRIES#', intval($numCountries), $strOK); $strOK = str_replace('#NUMREGIONES#', intval($numRegiones), $strOK); $strOK = str_replace('#NUMCITIES#', intval($numCities), $strOK); $strOK = str_replace('#NUMLOCATIONS#', intval($numLocations), $strOK); $arReturn['MESSAGE'] = $strOK; $arReturn['STEP'] = $LOADZIP == "Y" ? 2 : 3; //echo '<script>Import('.($LOADZIP == "Y" ? 2 : 3).')</script>'; } break; case 2: $time_limit = ini_get('max_execution_time'); if ($time_limit < ZIP_STEP_LENGTH) { set_time_limit(ZIP_STEP_LENGTH + 5); } $start_time = time(); $finish_time = $start_time + ZIP_STEP_LENGTH; if ($LOADZIP == "Y" && file_exists($sTmpFilePath . DLZIPFILE)) { $rsLocations = CSaleLocation::GetList(array(), array("LID" => 'ru'), false, false, array("ID", "CITY_NAME_LANG", "REGION_NAME_LANG")); $arLocationMap = array(); while ($arLocation = $rsLocations->Fetch()) { if (strlen($arLocation["REGION_NAME_LANG"]) > 0) { if (strlen($arLocation["CITY_NAME_LANG"]) > 0) { $arLocationMap[$arLocation["CITY_NAME_LANG"]][$arLocation["REGION_NAME_LANG"]] = $arLocation["ID"]; } } else { $arLocationMap[$arLocation["CITY_NAME_LANG"]] = $arLocation["ID"]; } } $DB->StartTransaction(); include_once $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/classes/general/csv_data.php"; $csvFile = new CCSVData(); $csvFile->LoadFile($sTmpFilePath . DLZIPFILE); $csvFile->SetFieldsType("R"); $csvFile->SetFirstHeader(false); $csvFile->SetDelimiter(";"); if (is_set($_SESSION, 'ZIP_POS')) { $numZIP = $_SESSION["NUM_ZIP"]; $csvFile->SetPos($_SESSION["ZIP_POS"]); } else { CSaleLocation::ClearAllLocationZIP(); unset($_SESSION["NUM_ZIP"]); $numZIP = 0; } $bFinish = true; $tt = 0; $REGION = ""; while ($arRes = $csvFile->Fetch()) { $tt++; $CITY = $arRes[1]; if (strlen($arRes[3]) > 0) { $REGION = $arRes[3]; } if (array_key_exists($CITY, $arLocationMap)) { if (strlen($REGION) > 0) { $ID = $arLocationMap[$CITY][$REGION]; } else { $ID = $arLocationMap[$CITY]; } } else { $ID = 0; } if ($ID) { CSaleLocation::AddLocationZIP($ID, $arRes[2]); $numZIP++; } if ($tt == 10) { $tt = 0; $cur_time = time(); if ($cur_time >= $finish_time) { $cur_step = $csvFile->GetPos(); $amount = $csvFile->iFileLength; $_SESSION["ZIP_POS"] = $cur_step; $_SESSION["NUM_ZIP"] = $numZIP; $bFinish = false; $arReturn['STEP'] = 2; $arReturn['AMOUNT'] = $amount; $arReturn['POS'] = $cur_step; break; } } } $DB->Commit(); if ($bFinish) { unset($_SESSION["ZIP_POS"]); $numCity = CSaleLocation::_GetZIPImportStats(); $strOK = GetMessage('SL_IMPORT_ZIP_STATS'); $strOK = str_replace('#NUMZIP#', intval($numZIP), $strOK); $strOK = str_replace('#NUMCITIES#', intval($numCity["CITY_CNT"]), $strOK); $arReturn['MESSAGE'] = $strOK; $arReturn['STEP'] = 3; $arReturn['PB_REMOVE'] = true; break; } } else { $arReturn['ERROR'] = GetMessage('SL_IMPORT_ERROR_NO_ZIP_FILE') . '<br>'; $arReturn['STEP'] = 3; break; } break; case 3: $arReturn['COMPLETE'] = true; break; } } return $arReturn; }
static function DoProcessOrder(&$arOrder, $arOrderPropsValues, &$arErrors, &$arWarnings) { if (!is_array($arOrderPropsValues)) { $arOrderPropsValues = array(); } $arUser = null; $dbOrderProps = CSaleOrderProps::GetList(array("SORT" => "ASC"), array("PERSON_TYPE_ID" => $arOrder["PERSON_TYPE_ID"], "ACTIVE" => "Y"), false, false, array("ID", "NAME", "TYPE", "IS_LOCATION", "IS_LOCATION4TAX", "IS_PROFILE_NAME", "IS_PAYER", "IS_EMAIL", "REQUIED", "SORT", "IS_ZIP", "CODE", "DEFAULT_VALUE")); while ($arOrderProp = $dbOrderProps->Fetch()) { if (!array_key_exists($arOrderProp["ID"], $arOrderPropsValues)) { $curVal = $arOrderProp["DEFAULT_VALUE"]; if (strlen($curVal) <= 0) { if ($arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_PAYER"] == "Y") { if ($arUser == null) { $dbUser = CUser::GetList($by = "ID", $order = "desc", array("ID_EQUAL_EXACT" => $arOrder["USER_ID"])); $arUser = $dbUser->Fetch(); } if ($arOrderProp["IS_EMAIL"] == "Y") { $curVal = is_array($arUser) ? $arUser["EMAIL"] : ""; } elseif ($arOrderProp["IS_PAYER"] == "Y") { $curVal = is_array($arUser) ? $arUser["NAME"] . (strlen($arUser["NAME"]) <= 0 || strlen($arUser["LAST_NAME"]) <= 0 ? "" : " ") . $arUser["LAST_NAME"] : ""; } } } } else { $curVal = $arOrderPropsValues[$arOrderProp["ID"]]; } if (!is_array($curVal) && strlen($curVal) > 0 || is_array($curVal) && count($curVal) > 0) { //if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "MULTISELECT" || $arOrderProp["TYPE"] == "RADIO") if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $arVariants = array(); $dbVariants = CSaleOrderPropsVariant::GetList(array("SORT" => "ASC", "NAME" => "ASC"), array("ORDER_PROPS_ID" => $arOrderProp["ID"]), false, false, array("*")); while ($arVariant = $dbVariants->Fetch()) { $arVariants[] = $arVariant["VALUE"]; } if (!is_array($curVal)) { $curVal = array($curVal); } $arKeys = array_keys($curVal); foreach ($arKeys as $k) { if (!in_array($curVal[$k], $arVariants)) { unset($curVal[$k]); } } if ($arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "RADIO") { $curVal = array_shift($curVal); } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (is_array($curVal)) { $curVal = array_shift($curVal); } $curVal = intval($curVal); $dbVariants = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID")); if ($arVariant = $dbVariants->Fetch()) { $curVal = intval($arVariant["ID"]); } else { $curVal = null; } } } if ($arOrderProp["TYPE"] == "LOCATION" && ($arOrderProp["IS_LOCATION"] == "Y" || $arOrderProp["IS_LOCATION4TAX"] == "Y")) { $curVal = intval($curVal); if ($arOrderProp["IS_LOCATION"] == "Y") { $arOrder["DELIVERY_LOCATION"] = $curVal; } if ($arOrderProp["IS_LOCATION4TAX"] == "Y") { $arOrder["TAX_LOCATION"] = $curVal; } if ($curVal <= 0) { $bErrorField = true; } } elseif ($arOrderProp["IS_PROFILE_NAME"] == "Y" || $arOrderProp["IS_PAYER"] == "Y" || $arOrderProp["IS_EMAIL"] == "Y" || $arOrderProp["IS_ZIP"] == "Y") { $curVal = trim($curVal); if ($arOrderProp["IS_PROFILE_NAME"] == "Y") { $arOrder["PROFILE_NAME"] = $curVal; } if ($arOrderProp["IS_PAYER"] == "Y") { $arOrder["PAYER_NAME"] = $curVal; } if ($arOrderProp["IS_ZIP"] == "Y") { $arOrder["DELIVERY_LOCATION_ZIP"] = $curVal; } if ($arOrderProp["IS_EMAIL"] == "Y") { $arOrder["USER_EMAIL"] = $curVal; if (!check_email($curVal)) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace(array("#EMAIL#", "#NAME#"), array(htmlspecialcharsbx($curVal), htmlspecialcharsbx($arOrderProp["NAME"])), GetMessage("SALE_GOPE_WRONG_EMAIL"))); } } if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["REQUIED"] == "Y") { if ($arOrderProp["TYPE"] == "TEXT" || $arOrderProp["TYPE"] == "TEXTAREA" || $arOrderProp["TYPE"] == "RADIO" || $arOrderProp["TYPE"] == "SELECT" || $arOrderProp["TYPE"] == "CHECKBOX") { if (strlen($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "LOCATION") { if (intval($curVal) <= 0) { $bErrorField = true; } } elseif ($arOrderProp["TYPE"] == "MULTISELECT") { //if (!is_array($curVal) || count($curVal) <= 0) if (strlen($curVal) <= 0) { $bErrorField = true; } } } if ($bErrorField) { $arWarnings[] = array("CODE" => "PARAM", "TEXT" => str_replace("#NAME#", htmlspecialcharsbx($arOrderProp["NAME"]), GetMessage("SALE_GOPE_FIELD_EMPTY"))); $bErrorField = false; } $arOrder["ORDER_PROP"][$arOrderProp["ID"]] = $curVal; } }
$curVal = $arUserResult["ORDER_PROP"][$arOrderProps["ID"]]; if ($arOrderProps["TYPE"] == "LOCATION" && ($arOrderProps["IS_LOCATION"] == "Y" || $arOrderProps["IS_LOCATION4TAX"] == "Y")) { if ($arOrderProps["IS_LOCATION"] == "Y") { $arUserResult["DELIVERY_LOCATION"] = IntVal($curVal); } if ($arOrderProps["IS_LOCATION4TAX"] == "Y") { $arUserResult["TAX_LOCATION"] = IntVal($curVal); } if (IntVal($curVal) <= 0 && IntVal($arUserResult["ORDER_PROP"]["REGION_" . $arOrderProps["ID"]]) > 0) { $dbLoc = CSaleLocation::GetList(array(), array("REGION_ID" => $arUserResult["ORDER_PROP"]["REGION_" . $arOrderProps["ID"]], "CITY_ID" => false), false, false, array("ID", "REGION_ID", "CITY_ID")); if ($arLoc = $dbLoc->Fetch()) { $curVal = $arLoc["ID"]; } } if (IntVal($curVal) <= 0 && IntVal($arUserResult["ORDER_PROP"]["COUNTRY_" . $arOrderProps["ID"]]) > 0) { $dbLoc = CSaleLocation::GetList(array(), array("COUNTRY_ID" => $arUserResult["ORDER_PROP"]["COUNTRY_" . $arOrderProps["ID"]], "REGION_ID" => false, "CITY_ID" => false), false, false, array("ID", "COUNTRY_ID", "REGION_ID", "CITY_ID")); if ($arLoc = $dbLoc->Fetch()) { $curVal = $arLoc["ID"]; } } if (IntVal($curVal) <= 0) { $bErrorField = True; } else { $arUserResult["ORDER_PROP"][$arOrderProps["ID"]] = $curVal; } } elseif ($arOrderProps["IS_PROFILE_NAME"] == "Y" || $arOrderProps["IS_PAYER"] == "Y" || $arOrderProps["IS_EMAIL"] == "Y" || $arOrderProps["IS_ZIP"] == "Y") { if ($arOrderProps["IS_PROFILE_NAME"] == "Y") { $arUserResult["PROFILE_NAME"] = Trim($curVal); if (strlen($arUserResult["PROFILE_NAME"]) <= 0) { $bErrorField = True; }
function ShowStep() { $wizard =& $this->GetWizard(); $siteID = $wizard->GetVar("siteID", true); CModule::IncludeModule("sale"); $arDeliveries = array(); $dbDelivery = CSaleDeliveryHandler::GetList(array("SORT" => "ASC"), array("SITE_ID" => $siteID, "ACTIVE" => "Y")); while ($arDelivery = $dbDelivery->Fetch()) { $arDeliveries[$arDelivery["SID"] . "_new"] = $arDelivery["NAME"] . " " . GetMessage("WW_STEP8_1"); } $dbDelivery = CSaleDelivery::GetList(array("SORT" => "ASC"), array("LID" => $siteID, "ACTIVE" => "Y")); while ($arDelivery = $dbDelivery->Fetch()) { $arDeliveries[$arDelivery["ID"]] = $arDelivery["NAME"]; } $location = array(); $dbLocationList = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array()); while ($arLocation = $dbLocationList->Fetch()) { $location[$arLocation["ID"]] = $arLocation["COUNTRY_NAME"] . (strlen($arLocation["CITY_NAME"]) > 0 ? " - " . $arLocation["CITY_NAME"] : ""); } $this->content .= GetMessage("WW_STEP8_2") . "<br />"; $this->content .= $this->ShowSelectField("location", $location); $this->content .= "<br /><br />" . GetMessage("WW_STEP8_3") . "<br /><br />"; foreach ($arDeliveries as $k => $v) { $this->content .= $this->ShowCheckboxField("delivery[]", $k, array("id" => $k)) . " <label for=\"" . $k . "\">" . htmlspecialcharsEx($v) . "</label><br />"; } }
} } else { $rsLocationsList = CSaleLocation::GetList(array(), array("ID" => $curVal), false, false, array("ID", "CITY_ID")); $arCity = $rsLocationsList->GetNext(); if (intval($arCity["CITY_ID"]) <= 0) { $bDeleteFieldLocation = ""; } else { $bDeleteFieldLocation = intval($arProperties["INPUT_FIELD_LOCATION"]); } } } elseif ($arProperties["IS_LOCATION"] == "Y" && intval($arProperties["INPUT_FIELD_LOCATION"]) > 0) { $bDeleteFieldLocation = intval($arProperties["INPUT_FIELD_LOCATION"]); } $arProperties["SIZE1"] = intval($arProperties["SIZE1"]) > 0 ? $arProperties["SIZE1"] : 1; $locationFound = false; $dbVariants = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), false, false, array("ID", "COUNTRY_NAME", "CITY_NAME", "SORT", "COUNTRY_NAME_LANG", "CITY_NAME_LANG")); while ($arVariants = $dbVariants->GetNext()) { if (intval($arVariants["ID"]) == intval($curVal) || !isset($curVal) && intval($arVariants["ID"]) == intval($arProperties["DEFAULT_VALUE"])) { $locationFound = true; $arVariants["SELECTED"] = "Y"; $arProperties["VALUE_FORMATED"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VALUE"] = $arVariants["ID"]; } $arVariants["NAME"] = $arVariants["COUNTRY_NAME"] . (strlen($arVariants["CITY_NAME"]) > 0 ? " - " : "") . $arVariants["CITY_NAME"]; $arProperties["VARIANTS"][] = $arVariants; } // this is not a COUNTRY, REGION or CITY, but must appear in $arProperties["VARIANTS"] if (CSaleLocation::isLocationProMigrated() && !$locationFound && IntVal($curVal)) { // CSaleLocation::GetById() is enought intelligent to accept modern (not-country-or-region-or-city) ID or CODE $item = CSaleLocation::GetById($curVal); if ($item) {
static function SelectBoxLocations($lid, $name, $locationID, $onChange="") { $html = '<select name="'.$name.'" onChange="'.$onChange.'">'; $res = \CSaleLocation::GetList(array(), array("LID" => $lid), false, false, array()); while ($arRes = $res->Fetch()) { $html .= '<option '.(($arRes['ID']==$locationID)?'selected':'').' value="'.$arRes['ID'].'">'.htmlspecialcharsbx($arRes["COUNTRY_NAME"] . ((!empty($arRes["REGION_NAME"]))?' - '.$arRes["REGION_NAME"]:'') . ((!empty($arRes["CITY_NAME"]))?' - '.$arRes["CITY_NAME"]:'')) . '</option>'; } $html .= '</select>'; return $html; }
/** * Получаем данные с сервера или из cookie * @param boolean $cookie * @return string|array */ function get_data($cookie = true) { // если используем куки и параметр уже получен, то достаем и возвращаем данные из куки if ($cookie && filter_input(INPUT_COOKIE, 'geobase')) { return unserialize(filter_input(INPUT_COOKIE, 'geobase')); } $data = $this->get_geobase_data(); if (!empty($data)) { CModule::IncludeModule('sale'); $db_vars = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("CITY" => array("NAME" => $data['city'])), false, false, array()); $vars = $db_vars->Fetch(); $data["ID"] = $vars['ID']; setcookie('geobase', serialize($data), time() + 3600 * 24 * 7, '/'); //устанавливаем куки на неделю } return $data; }
/** * @param array $countriesIds * @param array $regionsIds * @param string $lang * @return array cities list from sales zone */ public static function getCities($countriesIds = array(), $regionsIds = array(), $lang) { $cities = array(); $citiesList = static::getAllCities($lang); $getRegionNull = in_array("NULL", $regionsIds) ? true : false; $getRegionAll = in_array("", $regionsIds) ? true : false; $getCountryNull = in_array("NULL", $countriesIds) ? true : false; $getCountryAll = in_array("", $countriesIds) ? true : false; $filter = in_array("", $regionsIds) ? array() : array(($getRegionNull ? "+" : "") . "REGION_ID" => $regionsIds); foreach ($countriesIds as $countryId) { if (($getRegionNull || $getRegionAll) && !$getCountryAll) { $filter[($getCountryNull ? "+" : "") . "COUNTRY_ID"] = $countryId; } $dbLocationsList = \CSaleLocation::GetList(array("SORT" => "ASC", "CITY_NAME_LANG" => "ASC"), $filter, array("CITY_ID")); while ($arCity = $dbLocationsList->GetNext()) { if (strlen($arCity["CITY_ID"]) > 0) { $cities[$arCity["CITY_ID"]] = $citiesList[$arCity["CITY_ID"]]; } } } return $cities; }
/** * Получение текущего местоположения по текущему городу */ function GetCurrentLocation() { return 537; // static $LOCATION_ID = 0; if(!$LOCATION_ID) { if(!CModule::IncludeModule("iblock") || !CModule::IncludeModule("sale")) return; $rs = CSaleLocation::GetList( array(), array("CITY_NAME" => GetCurCityName(), "LID" => LANGUAGE_ID), false, false ); if($rs -> SelectedRowsCount()) { $ar = $rs -> Fetch(); $LOCATION_ID = $ar["ID"]; } } return $LOCATION_ID; }
// enable/disable town for location $dbProperties = CSaleOrderProps::GetList( array("SORT" => "ASC"), array("ID" => $locationID, "ACTIVE" => "Y", ">INPUT_FIELD_LOCATION" => 0, "RELATED" => false), false, false, array("INPUT_FIELD_LOCATION") ); if ($arProperties = $dbProperties->Fetch()) $bDeleteFieldLocationID = $arProperties["INPUT_FIELD_LOCATION"]; $rsLocationsList = CSaleLocation::GetList( array(), array("ID" => $location), false, false, array("ID", "CITY_ID") ); $arCity = $rsLocationsList->GetNext(); if (intval($arCity["CITY_ID"]) <= 0) $bDeleteFieldLocation = "Y"; else $bDeleteFieldLocation = "N"; $arOrder = CSaleOrder::DoCalculateOrder( $LID, $user_id, $arShoppingCart, $buyerTypeId, $arOrderPropsValues,
<?php $APPLICATION->IncludeComponent("bitrix:sale.location.selector." . \Bitrix\Sale\Location\Admin\Helper::getWidgetAppearance(), "", array("ID" => "", "CODE" => $location, "INPUT_NAME" => "location[" . $siteList[$i]["ID"] . "]", "PROVIDE_LINK_BY" => "code", "SHOW_ADMIN_CONTROLS" => 'N', "SELECT_WHEN_SINGLE" => 'N', "FILTER_BY_SITE" => 'N', "SHOW_DEFAULT_LOCATIONS" => 'N', "SEARCH_BY_PRIMARY" => 'Y'), false); ?> <?php } else { ?> <select name="location[<?php echo $siteList[$i]["ID"]; ?> ]"> <option value=''></option> <?php $dbLocationList = CSaleLocation::GetList(array("COUNTRY_NAME_LANG" => "ASC", "REGION_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array(), LANGUAGE_ID); ?> <?php while ($arLocation = $dbLocationList->GetNext()) { $locationName = $arLocation["COUNTRY_NAME"]; if (strlen($arLocation["REGION_NAME"]) > 0) { if (strlen($locationName) > 0) { $locationName .= " - "; } $locationName .= $arLocation["REGION_NAME"]; } if (strlen($arLocation["CITY_NAME"]) > 0) { if (strlen($locationName) > 0) { $locationName .= " - "; } $locationName .= $arLocation["CITY_NAME"];
} $siteID = $arParams["site_id"]; if (strlen($arParams["site_id"]) <= 0) { $siteID = "s1"; } $dbSite = CSite::GetByID($siteID); if ($arSite = $dbSite->Fetch()) { $lang = $arSite["LANGUAGE_ID"]; } if (strlen($lang) <= 0) { $lang = "ru"; } $bRus = false; if ($lang == "ru") { $bRus = true; } __IncludeLang(GetLangFileName(dirname(__FILE__) . "/lang/", "/" . basename(__FILE__), $lang)); $dbLocation = CSaleLocation::GetList(array("ID" => "ASC"), array("LID" => $lang)); if ($arLocation = $dbLocation->Fetch()) { $arLocationArr = array(); $arLocation4Delivery = array(); do { $arLocationArr[] = $arLocation["ID"]; } while ($arLocation = $dbLocation->Fetch()); //Location group $groupLang = array(array("LID" => "en", "NAME" => "Group 1")); if ($bRus) { $groupLang[] = array("LID" => "ru", "NAME" => GetMessage("SALE_WIZARD_GROUP")); } $locationGroupID = CSaleLocationGroup::Add(array("SORT" => 150, "LOCATION_ID" => $arLocationArr, "LANG" => $groupLang)); }
?> </td> </tr> <?php } else { ?> <tr class="adm-detail-required-field"> <td width="40%" valign="top"><?php echo GetMessage("F_LOCATION1"); ?> :</td> <td width="60%" valign="top"> <?php $db_vars = CSaleLocation::GetList(array("SORT" => "ASC", "COUNTRY_NAME_LANG" => "ASC", "REGION_NAME_LANG" => "ASC", "CITY_NAME_LANG" => "ASC"), array("LID" => LANGUAGE_ID), LANG); ?> <?php $db_location = CSaleTaxRate::GetLocationList(array("TAX_RATE_ID" => $ID, "LOCATION_TYPE" => "L")); ?> <select name="LOCATION1[]" size="5" multiple> <?php $arLOCATION1 = array(); if ($bInitVars) { $arLOCATION1 = $LOCATION1; } else { while ($arLocation = $db_location->Fetch()) { $arLOCATION1[] = $arLocation["LOCATION_ID"]; } }