$arResult['FIELDS']['tab_params'][] = array('id' => 'SORT', 'name' => GetMessage('CRM_LOC_FIELD_SORT'), 'value' => $arLoc['SORT'], 'required' => true, 'type' => 'text'); $arResult['FIELDS']['tab_params'][] = array('id' => 'LOC_DEFAULT', 'name' => GetMessage('CRM_LOC_FIELD_LOC_DEFAULT'), 'value' => $arLoc['LOC_DEFAULT'] == 'Y', 'type' => 'checkbox'); /* COUNTRY SECTION*/ $arResult['FIELDS']['tab_params'][] = array('id' => 'loc_country', 'name' => GetMessage('CRM_LOC_SECTION_COUNTRY'), 'type' => 'section'); $arCountries[CRM_LOC_NEW_COUNTRY] = '< ' . GetMessage('CRM_LOC_NEW_COUNTRY') . ' >'; $arCountries[CRM_LOC_WITHOUT_COUNTRY] = '< ' . GetMessage('CRM_LOC_WITHOUT_COUNTRY') . ' >'; $arCountriesArr = CCrmLocations::getCountriesNames(); foreach ($arCountriesArr as $countyID => $country) { $arCountries[$countyID] = $country; } $arResult['FIELDS']['tab_params'][] = array('id' => 'COUNTRY_ID', 'name' => GetMessage('CRM_LOC_FIELD_COUNTRY_ID'), 'value' => intval($arLoc['COUNTRY_ID']) > 0 ? $arLoc['COUNTRY_ID'] : '', 'type' => 'list', 'required' => true, 'items' => $arCountries); $arResult['FIELDS']['tab_params'][] = array('id' => 'CHANGE_COUNTRY', 'name' => GetMessage('CRM_LOC_FIELD_CHANGE_COUNTRY'), 'value' => 'N', 'type' => 'checkbox'); $arResult['FIELDS']['tab_params'][] = array('id' => 'COUNTRY_NAME', 'name' => GetMessage('CRM_LOC_FIELD_NAME'), 'value' => htmlspecialcharsEx($arLoc['COUNTRY_NAME_ORIG']), 'required' => true, 'type' => 'text'); $arResult['FIELDS']['tab_params'][] = array('id' => 'COUNTRY_SHORT_NAME', 'name' => GetMessage('CRM_LOC_FIELD_SHORT_NAME'), 'value' => htmlspecialcharsEx($arLoc['COUNTRY_SHORT_NAME']), 'type' => 'text'); for ($i = 0; $i < $countLang; $i++) { $arCountry = CSaleLocation::GetCountryLangByID($arLoc['COUNTRY_ID'], $arSysLangs[$i]); /* $arResult['FIELDS']['tab_params'][] = array( 'id' => 'C_LANG_'.$arSysLangs[$i], 'value' => '<b>['.$arSysLangs[$i].'] '.$arSysLangNames[$i].'</b>', 'colspan' => true, 'type' => 'label' ); */ $arResult['FIELDS']['tab_params'][] = array('id' => 'COUNTRY_NAME_' . $arSysLangs[$i], 'name' => GetMessage('CRM_LOC_FIELD_NAME'), 'value' => htmlspecialcharsEx($arCountry["NAME"]), 'required' => true, 'type' => 'text'); $arResult['FIELDS']['tab_params'][] = array('id' => 'COUNTRY_SHORT_NAME_' . $arSysLangs[$i], 'name' => GetMessage('CRM_LOC_FIELD_SHORT_NAME'), 'value' => htmlspecialcharsEx($arCountry["SHORT_NAME"]), 'type' => 'text'); } /* REGION SECTION */ $arResult['FIELDS']['tab_params'][] = array('id' => 'loc_region', 'name' => GetMessage('CRM_LOC_SECTION_REGION'), 'type' => 'section'); $arRegionList[CRM_LOC_NEW_REGION] = '< ' . GetMessage('CRM_LOC_NEW_REGION') . ' >'; $arRegionList[CRM_LOC_WITHOUT_REGION] = '< ' . GetMessage('CRM_LOC_WITHOUT_REGION') . ' >';
public static function Compability($arOrder, $arConfig) { if (intval($arOrder["LOCATION_FROM"]) <= 0) { return array(); } $arLocationFrom = CSaleLocation::GetByID($arOrder["LOCATION_FROM"]); $arLocationTo = CSaleLocation::GetByID($arOrder["LOCATION_TO"]); if ($arLocationFrom["COUNTRY_ID"] == $arLocationTo["COUNTRY_ID"]) { return array(); } if (LANGUAGE_ID !== 'en') { $arCountry = CSaleLocation::GetCountryLangByID($arLocationTo['COUNTRY_ID'], 'en'); if (false !== $arCountry) { $arLocationTo['COUNTRY_NAME_LANG'] = $arCountry['NAME']; } } CDeliveryUPS::__GetLocation($arLocationTo, $arConfig); if (strlen($arLocationTo["COUNTRY_SID"]) <= 0) { return array(); } $zones_file = $arConfig["zones_csv"]["VALUE"]; $arZones = CDeliveryUPS::__GetZones($zones_file); $arZoneTo = $arZones[$arLocationTo["COUNTRY_SID"]]; if (intval($arZoneTo[1]) > 0) { return array("express", "express_saver"); } else { return array("express"); } }
/** * <p>Функция изменяет параметры страны с кодом ID на новые параметры из массива arFields </p> * * * * * @param int $ID Код страны. * * * * @param array $arFields Массив с параметрами страны должен содержать ключи: <ul> <li> <b>NAME</b> - * название страны (не зависящее от языка);</li> <li> <b>SHORT_NAME</b> - * сокращенное название страны - абревиатура (не зависящее от * языка);</li> <li> <b><код языка></b> - ключем является код языка, а * значением ассоциативный массив вида <pre class="syntax">array("LID" => "код * языка", "NAME" => "название страны на этом языке", "SHORT_NAME" => * "сокращенное название страны (аббревиатура) на этом языке")</pre> Эта * пара ключ-значение должна присутствовать для каждого языка * системы.</li> </ul> * * * * @return int <p>Возвращается код измененной страны или <i>false</i> у случае * ошибки.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__updatecountry.d8fa5b90.php * @author Bitrix */ public static function UpdateCountry($ID, $arFields) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleLocation::CountryCheckFields("UPDATE", $arFields)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeCountryUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $strUpdate = $DB->PrepareUpdate("b_sale_location_country", $arFields); $strSql = "UPDATE b_sale_location_country SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $db_lang = CLangAdmin::GetList($b = "sort", $o = "asc", array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { if ($arCntLang = CSaleLocation::GetCountryLangByID($ID, $arLang["LID"])) { $strUpdate = $DB->PrepareUpdate("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "UPDATE b_sale_location_country_lang SET " . $strUpdate . " WHERE ID = " . $arCntLang["ID"] . ""; } else { $arInsert = $DB->PrepareInsert("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; } $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } foreach (GetModuleEvents("sale", "OnCountryUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
<td> <?php echo GetMessage("SALE_SHORT_NAME"); ?> : </td> <td> <input type="text" name="COUNTRY_SHORT_NAME" value="<?php echo $str_COUNTRY_SHORT_NAME; ?> " size="30"> </td> </tr> <?php for ($i = 0; $i < count($arSysLangs); $i++) { $arCountry = CSaleLocation::GetCountryLangByID($str_COUNTRY_ID, $arSysLangs[$i]); $str_COUNTRY_NAME = htmlspecialcharsEx($arCountry["NAME"]); $str_COUNTRY_SHORT_NAME = htmlspecialcharsEx($arCountry["SHORT_NAME"]); if ($bInitVars && $CHANGE_COUNTRY == 'Y') { $str_COUNTRY_NAME = htmlspecialcharsEx(${"COUNTRY_NAME_" . $arSysLangs[$i]}); $str_COUNTRY_SHORT_NAME = htmlspecialcharsEx(${"COUNTRY_SHORT_NAME_" . $arSysLangs[$i]}); } ?> <tr> <td valign="top" align="center" colspan="2"> <b>[<?php echo $arSysLangs[$i]; ?> ] <?php echo $arSysLangNames[$i]; ?>
/** * <p>Метод изменяет параметры страны с кодом ID на новые параметры из массива arFields. Метод динамичный.</p> * * * @param int $ID Код страны. * * @param array $arFields Массив с параметрами страны должен содержать ключи: <ul> <li> <b>NAME</b> - * название страны (не зависящее от языка);</li> <li> <b>SHORT_NAME</b> - * сокращенное название страны - абревиатура (не зависящее от * языка);</li> <li> <b><код языка></b> - ключем является код языка, а * значением ассоциативный массив вида <pre class="syntax">array("LID" => "код * языка", "NAME" => "название страны на этом языке", "SHORT_NAME" => * "сокращенное название страны (аббревиатура) на этом языке")</pre> Эта * пара ключ-значение должна присутствовать для каждого языка * системы.</li> </ul> * * @return int <p>Возвращается код измененной страны или <i>false</i> у случае * ошибки.</p> <br><br> * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocation/csalelocation__updatecountry.d8fa5b90.php * @author Bitrix */ public static function UpdateCountry($ID, $arFields) { global $DB; $ID = intval($ID); if ($ID <= 0 || !CSaleLocation::CountryCheckFields("UPDATE", $arFields)) { return false; } foreach (GetModuleEvents("sale", "OnBeforeCountryUpdate", true) as $arEvent) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } ////////////////////////////////////// if (self::isLocationProMigrated()) { try { // get location id by country id $locId = self::getLocationIdByCountryId($ID); if (!$locId) { return false; } $res = Location\LocationTable::update($locId, self::refineFieldsForSaveCRC($item['ID'], $arFields), array('REBALANCE' => false)); if ($res->isSuccess()) { return $ID; } return false; } catch (Exception $e) { return false; } } else { $strUpdate = $DB->PrepareUpdate("b_sale_location_country", $arFields); $strSql = "UPDATE b_sale_location_country SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $db_lang = CLangAdmin::GetList($b = "sort", $o = "asc", array("ACTIVE" => "Y")); while ($arLang = $db_lang->Fetch()) { if ($arCntLang = CSaleLocation::GetCountryLangByID($ID, $arLang["LID"])) { $strUpdate = $DB->PrepareUpdate("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "UPDATE b_sale_location_country_lang SET " . $strUpdate . " WHERE ID = " . $arCntLang["ID"] . ""; } else { $arInsert = $DB->PrepareInsert("b_sale_location_country_lang", $arFields[$arLang["LID"]]); $strSql = "INSERT INTO b_sale_location_country_lang(COUNTRY_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; } $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } ////////////////////////////////////// foreach (GetModuleEvents("sale", "OnCountryUpdate", true) as $arEvent) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
$arSysLangNames[$langCount] = htmlspecialcharsbx($arLang["NAME"]); $langCount++; } switch ($action) { case 'get_country_params': if ($ID <= 0) { break; } $arCountry = CSaleLocation::GetCountryByID($ID); $arCountry['COUNTRY_NAME'] = $arCountry['NAME']; $arCountry['COUNTRY_SHORT_NAME'] = $arCountry['SHORT_NAME']; unset($arCountry['NAME']); unset($arCountry['SHORT_NAME']); $countLang = count($arSysLangs); for ($i = 0; $i < $countLang; $i++) { $arLngCountry = CSaleLocation::GetCountryLangByID($ID, $arSysLangs[$i]); $arCountry['COUNTRY_NAME_' . $arSysLangs[$i]] = $arLngCountry['NAME']; $arCountry['COUNTRY_SHORT_NAME_' . $arSysLangs[$i]] = $arLngCountry['SHORT_NAME_']; } $arReturn['COUNTRY'] = $arCountry; $arRegions = CCrmLocations::getRegionsNames($ID); $arReturn['COUNTRY']['REGIONS'] = array(); foreach ($arRegions as $id => $region) { $arReturn['COUNTRY']['REGIONS'][] = array($id, $region); } break; case 'get_region_params': $arRegion = CSaleLocation::GetRegionByID($ID); $arRegion['REGION_NAME'] = $arRegion['NAME']; $arRegion['REGION_SHORT_NAME'] = $arRegion['SHORT_NAME']; unset($arRegion['NAME']);