function __GetLocationPrice($LOCATION_ID, $arConfig) { $dbLocationGroups = CSaleLocationGroup::GetLocationList(array("LOCATION_" . (CSaleLocation::checkIsCode($LOCATION_ID) ? 'CODE' : 'ID') => $LOCATION_ID)); 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"]; } } return false; }
} $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)); }
} $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/", "/step8.php", $lang)); $dbLocation = CSaleLocation::GetList(array("ID" => "ASC"), array("LID" => $lang)); if ($arLocation = $dbLocation->Fetch()) { $arLocation4Delivery = array(); do { $arLocation4Delivery[] = array("LOCATION_ID" => $arLocation["ID"], "LOCATION_TYPE" => "L"); } while ($arLocation = $dbLocation->Fetch()); //Location group $dblocationGroupID = CSaleLocationGroup::GetList(array("ID" => "DESC")); if ($arLocationGroupID = $dblocationGroupID->Fetch()) { $locationGroupID = $arLocationGroupID["ID"]; } $arLocation4Delivery[] = array("LOCATION_ID" => $locationGroupID, "LOCATION_TYPE" => "G"); CSaleDelivery::Add(array("NAME" => GetMessage("SALE_WIZARD_COUR"), "LID" => $siteID, "PERIOD_FROM" => 7, "PERIOD_TO" => 15, "PERIOD_TYPE" => "D", "WEIGHT_FROM" => 2000, "WEIGHT_TO" => 0, "ORDER_PRICE_FROM" => 0, "ORDER_PRICE_TO" => 0, "ORDER_CURRENCY" => $bRus ? "RUB" : "USD", "ACTIVE" => "N", "PRICE" => "55", "CURRENCY" => $bRus ? "RUB" : "USD", "SORT" => 100, "DESCRIPTION" => "", "LOCATIONS" => $arLocation4Delivery)); }
</option> <?php } ?> </select> </td> </tr> <tr class="adm-detail-required-field"> <td width="40%" valign="top"><?php echo GetMessage("F_LOCATION2"); ?> :</td> <td width="60%" valign="top"> <select name="LOCATION2[]" size="5" multiple> <?php $db_vars = CSaleLocationGroup::GetList(array("NAME" => "ASC"), array(), LANG); ?> <?php $arLOCATION2 = array(); if ($bInitVars) { $arLOCATION2 = $LOCATION2; } else { $db_location = CSaleTaxRate::GetLocationList(array("TAX_RATE_ID" => $ID, "LOCATION_TYPE" => "G")); while ($arLocation = $db_location->Fetch()) { $arLOCATION2[] = $arLocation["LOCATION_ID"]; } } if (!is_array($arLOCATION2)) { $arLOCATION2 = array(); } ?>
} ?> ><?php echo htmlspecialcharsbx($locationName); ?> </option> <?php } ?> </select> </td> </tr> <?php $langCnt = count($arSysLangs); for ($i = 0; $i < $langCnt; $i++) { $arGroupLang = CSaleLocationGroup::GetGroupLangByID($ID, $arSysLangs[$i]); $str_NAME = htmlspecialcharsEx($arGroupLang["NAME"]); if ($bInitVars) { $str_NAME = htmlspecialcharsEx(${"NAME_" . $arSysLangs[$i]}); } ?> <tr class="heading"> <td colspan="2"> [<?php echo $arSysLangs[$i]; ?> ] <?php echo $arSysLangNames[$i]; ?> : </td>
/** * <p>Функция добавляет новую группу местоположений с параметрами из массива arFields. </p> * * * * * @param array $arFields Массив значений параметров группы местоположений, ключами в * котором являются имена параметров.<br><br> Допустимые ключи: <ul> <li> * <b>SORT</b> - индекс сортировки;</li> <li> <b>LOCATION_ID</b> - массив кодов * местоположений, которые входят в эту группу;</li> <li> <b>LANG</b> - массив * языкозависимых параметров группы, каждый элемент которого имеет * вид <pre class="syntax"> array("LID"=>"язык параметров", "NAME"=>"Название * группы")</pre> </li> </ul> * * * * @return int <p>Возвращается код добавленной группы или <i>false</i> в случае * ошибки.</p> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "SORT" => 150, * "LOCATION_ID" => array(12, 34, 35, 36, 37), * "LANG" => array( * array("LID" => "ru", "NAME" => "Группа 1"), * array("LID" => "en", "NAME" => "Group 1") * ) * );<br> * $ID = CSaleLocationGroup::Add($arFields); * if (IntVal($ID)<=0) * echo "Ошибка добавления группы";<br>?> * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocationgroup/csalelocationgroup__add.3520254b.php * @author Bitrix */ public static function Add($arFields) { global $DB; if (!CSaleLocationGroup::CheckFields("ADD", $arFields)) { return false; } $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupAdd"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($arFields)) === false) { return false; } } $arInsert = $DB->PrepareInsert("b_sale_location_group", $arFields); $strSql = "INSERT INTO b_sale_location_group(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); $countFieldLang = count($arFields["LANG"]); for ($i = 0; $i < $countFieldLang; $i++) { $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $strSqlHead = "INSERT INTO b_sale_location2location_group (LOCATION_ID, LOCATION_GROUP_ID) VALUES "; $strSqlHeadLength = strlen($strSqlHead); $res = $DB->Query('SHOW VARIABLES LIKE \'max_allowed_packet\''); $maxPack = $res->Fetch(); if (isset($maxPack["Value"])) { $max_allowed_packet = $maxPack["Value"] - $strSqlHeadLength - 100; } else { $max_allowed_packet = 0; } $tmpSql = ''; $strSql = ''; $countFieldLoc = count($arFields["LOCATION_ID"]); for ($i = 0; $i < $countFieldLoc; $i++) { $tmpSql = "(" . $arFields["LOCATION_ID"][$i] . ", " . $ID . ")"; $strSqlLen = strlen($strSql); if ($strSqlHeadLength + $strSqlLen + strlen($tmpSql) < $max_allowed_packet || $max_allowed_packet <= 0) { if ($strSqlLen > 0) { $strSql .= ","; } $strSql .= $tmpSql; } else { $DB->Query($strSqlHead . $strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $strSql = $tmpSql; } } if (strlen($strSql) > 0) { $DB->Query($strSqlHead . $strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $events = GetModuleEvents("sale", "OnLocationGroupAdd"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
/** * <p>Метод обновляет параметры местоположения с кодом ID в соответствии с параметрами из массива arFields. Обновляются также страна и город этого местоположения. Метод динамичный.</p> * * * @param int $ID Код местоположения. </h * * @param array $arFields Ассоциативный массив параметров местоположения с ключами: <ul> <li> * <b>SORT</b> - индекс сортировки; </li> <li> <b>COUNTRY_ID</b> - код страны (если такая * страна уже есть, иначе код должен быть нулем, и должен быть * заполнен ключ COUNTRY);</li> <li> <b>COUNTRY</b> - массив с параметрами страны * (должен быть заполнен, если не установлен ключ COUNTRY_ID или если ключ * CHANGE_COUNTRY установлен в значение Y); </li> <li> <b>CHANGE_COUNTRY</b> - флаг (Y/N), * изменять ли параметры страны (долны быть установлены ключи COUNTRY_ID * и COUNTRY); </li> <li> <b>WITHOUT_CITY</b> - флаг (Y/N), означающий, что это * местоположение без города (только страна) (если значением с этим * ключем является N, то необходимо заполнить ключ CITY);</li> <li> <b>CITY_ID</b> - * код города (если такой город уже есть, иначе код должен быть нулем, * и должен быть заполнен ключ CITY);</li> <li> <b>CITY</b> - массив с параметрами * города (если установлен флаг WITHOUT_CITY в значение Y, то этот ключ * заполнять не нужно);</li> <li> <b>LOCATION_ID</b> - массив кодов * местоположений, которые привязаны к данной группе * местоположений.</li> </ul> Массив с параметрами страны должен * содержать ключи: <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> Массив с параметрами города должен * содержать ключи: <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> <a name="examples"></a> * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "SORT" => 100, * "COUNTRY_ID" => 8, * "WITHOUT_CITY" => "N" * ); * * $arCity = array( * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad", * "ru" => array( * "LID" => "ru", * "NAME" => "Калининград", * "SHORT_NAME" => "Калининград" * ), * "en" => array( * "LID" => "en", * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad" * ) * ); * * $arFields["CITY"] = $arCity; * * if (!CSaleLocation::Update(6, $arFields)) * echo "Ошибка изменения местоположения"; * ?> * * * * function CreateCityRussia($arFields, $regionName, &$strError) { * // Ищем группу местоположений, к которой необходимо привязать местоположение * $locGroupID = 0; * $resLocationGroup = CSaleLocationGroup::GetList(array("ID"=>"ASC"), array()); * while($arLocationGroup = $resLocationGroup->Fetch()) { * if(mb_strtolower($arLocationGroup["NAME"], "Windows-1251") == mb_strtolower($regionName, "Windows-1251")) $locGroupID = $arLocationGroup["ID"]; * } * * // Если группа найдена, определяем список привязанных к ней местоположений и добавляем к списку новое * if($locGroupID) { * // Создаем новый город в стране Россия и новое местоположение * $arCoutry = CSaleLocation::GetList(array(), array("LID" => LANGUAGE_ID, "CITY_NAME" => false, "COUNTRY_NAME" => "Россия"))->Fetch(); * $cityId = CSaleLocation::AddCity($arFields); * $ID = CSaleLocation::AddLocation(array("COUNTRY_ID" => $arCoutry['COUNTRY_ID'], "CITY_ID" => $cityId)); * * // Формируем новый список местоположений группы * $resLocGroup = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID" => $locGroupID)); * $locList = array(); * while($arLocGroup = $resLocGroup->Fetch()) { * $locList[] = $arLocGroup["LOCATION_ID"]; * } * $locList[] = $ID; * * // Записываем новый список местоположений группы * $arFields = CSaleLocationGroup::GetByID($locGroupID); * $arFields["LOCATION_ID"] = $locList; * if (!CSaleLocationGroup::Update($locGroupID, $arFields)) * $strError = "Ошибка добавления местоположения к группе местоположений"; * return $ID; * } else { * // В противном случае записываем сообщение об ошибке * $strError = "Ошибка создания местоположения: Не найдена группа местоположений $regionName"; * return false; * } * } * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocationgroup/csalelocationgroup__update.c02c467b.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); if (!CSaleLocationGroup::CheckFields("UPDATE", $arFields)) { return false; } $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $events = GetModuleEvents("sale", "OnLocationGroupUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } $strUpdate = $DB->PrepareUpdate("b_sale_location_group", $arFields); $strSql = "UPDATE b_sale_location_group SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (is_set($arFields, "LANG")) { $DB->Query("DELETE FROM b_sale_location_group_lang WHERE LOCATION_GROUP_ID = " . $ID . ""); $countFieldLang = count($arFields["LANG"]); for ($i = 0; $i < $countFieldLang; $i++) { $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } if (is_set($arFields, "LOCATION_ID")) { if (CSaleLocation::isLocationProMigrated()) { try { $entityClass = self::CONN_ENTITY_NAME . 'Table'; $entityClass::resetMultipleForOwner($ID, array(Location\Connector::DB_LOCATION_FLAG => $entityClass::normalizeLocationList($arFields["LOCATION_ID"]))); } catch (Exception $e) { } } else { $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_GROUP_ID = " . $ID . ""); $countArFieldLoc = count($arFields["LOCATION_ID"]); for ($i = 0; $i < $countArFieldLoc; $i++) { $strSql = "INSERT INTO b_sale_location2location_group(LOCATION_ID, LOCATION_GROUP_ID) " . "VALUES(" . $arFields["LOCATION_ID"][$i] . ", " . $ID . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } } return $ID; }
function Add($arFields) { global $DB; if (!CSaleLocationGroup::CheckFields("ADD", $arFields)) { return false; } $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupAdd"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($arFields)) === false) { return false; } } $arInsert = $DB->PrepareInsert("b_sale_location_group", $arFields); $strSql = "INSERT INTO b_sale_location_group(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); $countFieldLang = count($arFields["LANG"]); for ($i = 0; $i < $countFieldLang; $i++) { $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $countFieldLoc = count($arFields["LOCATION_ID"]); for ($i = 0; $i < $countFieldLoc; $i++) { $strSql = "INSERT INTO b_sale_location2location_group(LOCATION_ID, LOCATION_GROUP_ID) " . "VALUES(" . $arFields["LOCATION_ID"][$i] . ", " . $ID . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } $events = GetModuleEvents("sale", "OnLocationGroupAdd"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }
/** * <p>Функция обновляет параметры местоположения с кодом ID в соответствии с параметрами из массива arFields. Обновляются так же страна и город этого местоположения. </p> * * * * * @param int $ID Код местоположения. </h * * * * @param array $arFields Ассоциативный массив параметров местоположения с ключами: <ul> <li> * <b>SORT</b> - индекс сортировки; </li> <li> <b>COUNTRY_ID</b> - код страны (если такая * страна уже есть, иначе код должен быть нулем, и должен быть * заполнен ключ COUNTRY);</li> <li> <b>COUNTRY</b> - массив с параметрами страны * (должен быть заполнен, если не установлен ключ COUNTRY_ID или если ключ * CHANGE_COUNTRY установлен в значение Y); </li> <li> <b>CHANGE_COUNTRY</b> - флаг (Y/N), * изменять ли параметры страны (долны быть установлены ключи COUNTRY_ID * и COUNTRY); </li> <li> <b>WITHOUT_CITY</b> - флаг (Y/N), означающий, что это * местоположение без города (только страна) (если значением с этим * ключем является N, то необходимо заполнить ключ CITY);</li> <li> <b>CITY_ID</b> - * код города (если такой город уже есть, иначе код должен быть нулем, * и должен быть заполнен ключ CITY);</li> <li> <b>CITY</b> - массив с параметрами * города (если установлен флаг WITHOUT_CITY в значение Y, то этот ключ * заполнять не нужно);</li> <li> <b>LOCATION_ID</b> - массив кодов * местоположений, которые привязаны к данной группе * местоположений.</li> </ul> Массив с параметрами страны должен * содержать ключи: <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> Массив с параметрами города должен * содержать ключи: <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> <a name="examples"></a> * * * <h4>Example</h4> * <pre> * <? * $arFields = array( * "SORT" => 100, * "COUNTRY_ID" => 8, * "WITHOUT_CITY" => "N" * ); * * $arCity = array( * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad", * "ru" => array( * "LID" => "ru", * "NAME" => "Калининград", * "SHORT_NAME" => "Калининград" * ), * "en" => array( * "LID" => "en", * "NAME" => "Kaliningrad", * "SHORT_NAME" => "Kaliningrad" * ) * ); * * $arFields["CITY"] = $arCity; * * if (!CSaleLocation::Update(6, $arFields)) * echo "Ошибка изменения местоположения"; * ?> * * * * function CreateCityRussia($arFields, $regionName, &$strError) { * // Ищем группу местоположений, к которой необходимо привязать местоположение * $locGroupID = 0; * $resLocationGroup = CSaleLocationGroup::GetList(array("ID"=>"ASC"), array()); * while($arLocationGroup = $resLocationGroup->Fetch()) { * if(mb_strtolower($arLocationGroup["NAME"], "Windows-1251") == mb_strtolower($regionName, "Windows-1251")) $locGroupID = $arLocationGroup["ID"]; * } * * // Если группа найдена, определяем список привязанных к ней местоположений и добавляем к списку новое * if($locGroupID) { * // Создаем новый город в стране Россия и новое местоположение * $arCoutry = CSaleLocation::GetList(array(), array("LID" => LANGUAGE_ID, "CITY_NAME" => false, "COUNTRY_NAME" => "Россия"))->Fetch(); * $cityId = CSaleLocation::AddCity($arFields); * $ID = CSaleLocation::AddLocation(array("COUNTRY_ID" => $arCoutry['COUNTRY_ID'], "CITY_ID" => $cityId)); * * // Формируем новый список местоположений группы * $resLocGroup = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID" => $locGroupID)); * $locList = array(); * while($arLocGroup = $resLocGroup->Fetch()) { * $locList[] = $arLocGroup["LOCATION_ID"]; * } * $locList[] = $ID; * * // Записываем новый список местоположений группы * $arFields = CSaleLocationGroup::GetByID($locGroupID); * $arFields["LOCATION_ID"] = $locList; * if (!CSaleLocationGroup::Update($locGroupID, $arFields)) * $strError = "Ошибка добавления местоположения к группе местоположений"; * return $ID; * } else { * // В противном случае записываем сообщение об ошибке * $strError = "Ошибка создания местоположения: Не найдена группа местоположений $regionName"; * return false; * } * } * </pre> * * * @static * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalelocationgroup/csalelocationgroup__update.c02c467b.php * @author Bitrix */ public static function Update($ID, $arFields) { global $DB; $ID = IntVal($ID); if (!CSaleLocationGroup::CheckFields("UPDATE", $arFields)) { return false; } $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupUpdate"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) { return false; } } $events = GetModuleEvents("sale", "OnLocationGroupUpdate"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } $strUpdate = $DB->PrepareUpdate("b_sale_location_group", $arFields); $strSql = "UPDATE b_sale_location_group SET " . $strUpdate . " WHERE ID = " . $ID . ""; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); if (is_set($arFields, "LANG")) { $DB->Query("DELETE FROM b_sale_location_group_lang WHERE LOCATION_GROUP_ID = " . $ID . ""); $countFieldLang = count($arFields["LANG"]); for ($i = 0; $i < $countFieldLang; $i++) { $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } if (is_set($arFields, "LOCATION_ID")) { $DB->Query("DELETE FROM b_sale_location2location_group WHERE LOCATION_GROUP_ID = " . $ID . ""); $countArFieldLoc = count($arFields["LOCATION_ID"]); for ($i = 0; $i < $countArFieldLoc; $i++) { $strSql = "INSERT INTO b_sale_location2location_group(LOCATION_ID, LOCATION_GROUP_ID) " . "VALUES(" . $arFields["LOCATION_ID"][$i] . ", " . $ID . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } return $ID; }
echo EndNote(); echo BeginNote(); echo GetMessage("SALE_DH_HINT_ADD") . " " . htmlspecialcharsEx(COption::GetOptionString('sale', 'delivery_handles_custom_path', BX_PERSONAL_ROOT . "/php_interface/include/sale_delivery/")); echo EndNote(); $lAdmin->DisplayList(); echo BeginNote(); echo GetMessage("SALE_DH_LOCATIONS_STATS") . ': <ul style="font-size: 100%">'; $rsLocations = CSaleLocation::GetList(array(), array(), array("COUNTRY_ID", "COUNT" => "CITY_ID")); $numLocations = 0; $numCountries = 0; $numCities = 0; while ($arStat = $rsLocations->Fetch()) { $numCountries++; $numCities += $arStat["CITY_ID"]; $numLocations += $arStat['CNT']; } echo '<li>' . GetMessage('SALE_DH_LOCATIONS_COUNTRY_STATS') . ': ' . $numCountries . '</li>'; echo '<li>' . GetMessage('SALE_DH_LOCATIONS_CITY_STATS') . ': ' . $numCities . '</li>'; echo '<li>' . GetMessage('SALE_DH_LOCATIONS_LOC_STATS') . ': ' . $numLocations . '</li>'; $rsLocationGroups = CSaleLocationGroup::GetList(); $numGroups = 0; while ($arGroup = $rsLocationGroups->Fetch()) { $numGroups++; } echo '<li>' . GetMessage('SALE_DH_LOCATIONS_GROUP_STATS') . ': ' . $numGroups . '</li>'; echo '</ul>'; echo '<a href="/bitrix/admin/sale_location_admin.php?lang=' . LANG . '">' . GetMessage('SALE_DH_LOCATIONS_LINK') . '</a>'; echo ' | '; echo '<a href="/bitrix/admin/sale_location_import.php?lang=' . LANG . '">' . GetMessage('SALE_DH_LOCATIONS_IMPORT_LINK') . '</a>'; echo EndNote(); require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/epilog_admin.php";
@set_time_limit(0); $DB->StartTransaction(); if (!CSaleLocationGroup::Delete($ID)) { $DB->Rollback(); if ($ex = $APPLICATION->GetException()) { $lAdmin->AddGroupError($ex->GetString(), $ID); } else { $lAdmin->AddGroupError(GetMessage("ERROR_DELETE"), $ID); } } $DB->Commit(); break; } } } $dbResultList = CSaleLocationGroup::GetList(array($by => $order), $arFilter, LANG); $dbResultList = new CAdminResult($dbResultList, $sTableID); $dbResultList->NavStart(); $lAdmin->NavText($dbResultList->GetNavPrint(GetMessage("SALE_PRLIST"))); $lAdmin->AddHeaders(array(array("id" => "ID", "content" => "ID", "sort" => "id", "default" => true), array("id" => "NAME", "content" => GetMessage("SALE_NAME"), "sort" => "NAME", "default" => true), array("id" => "SORT", "content" => GetMessage("SALE_SORT"), "sort" => "SORT", "default" => true))); $arVisibleColumns = $lAdmin->GetVisibleHeaderColumns(); while ($arCCard = $dbResultList->NavNext(true, "f_")) { $row =& $lAdmin->AddRow($f_ID, $arCCard); $row->AddField("ID", $f_ID); $row->AddField("NAME", $f_NAME); $row->AddField("SORT", $f_SORT); $arActions = array(); $arActions[] = array("ICON" => "edit", "TEXT" => GetMessage("SALE_EDIT_DESCR"), "ACTION" => $lAdmin->ActionRedirect("sale_location_group_edit.php?ID=" . $f_ID . "&lang=" . LANGUAGE_ID . GetFilterParams("filter_") . ""), "DEFAULT" => true); if ($saleModulePermissions >= "W") { $arActions[] = array("SEPARATOR" => true); $arActions[] = array("ICON" => "delete", "TEXT" => GetMessage("SALE_DELETE_TEXT"), "ACTION" => "if(confirm('" . GetMessage('SALE_CONFIRM_DEL_MESSAGE') . "')) " . $lAdmin->ActionDoGroup($f_ID, "delete"));
function Add($arFields) { global $DB; if (!CSaleLocationGroup::CheckFields("ADD", $arFields)) { return false; } // make IX_B_SALE_LOC_GROUP_CODE feel happy $arFields['CODE'] = 'randstr' . rand(999, 999999); $db_events = GetModuleEvents("sale", "OnBeforeLocationGroupAdd"); while ($arEvent = $db_events->Fetch()) { if (ExecuteModuleEventEx($arEvent, array($arFields)) === false) { return false; } } $arInsert = $DB->PrepareInsert("b_sale_location_group", $arFields); $strSql = "INSERT INTO b_sale_location_group(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $ID = IntVal($DB->LastID()); // make IX_B_SALE_LOC_CODE feel happy Location\GroupTable::update($ID, array('CODE' => $ID)); $countFieldLang = count($arFields["LANG"]); for ($i = 0; $i < $countFieldLang; $i++) { $arInsert = $DB->PrepareInsert("b_sale_location_group_lang", $arFields["LANG"][$i]); $strSql = "INSERT INTO b_sale_location_group_lang(LOCATION_GROUP_ID, " . $arInsert[0] . ") " . "VALUES(" . $ID . ", " . $arInsert[1] . ")"; $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } if (CSaleLocation::isLocationProMigrated()) { try { $entityClass = self::CONN_ENTITY_NAME . 'Table'; $entityClass::resetMultipleForOwner($ID, array(Location\Connector::DB_LOCATION_FLAG => $entityClass::normalizeLocationList($arFields["LOCATION_ID"]))); } catch (Exception $e) { } } else { $strSqlHead = "INSERT INTO b_sale_location2location_group (LOCATION_ID, LOCATION_GROUP_ID) VALUES "; $strSqlHeadLength = strlen($strSqlHead); $res = $DB->Query('SHOW VARIABLES LIKE \'max_allowed_packet\''); $maxPack = $res->Fetch(); if (isset($maxPack["Value"])) { $max_allowed_packet = $maxPack["Value"] - $strSqlHeadLength - 100; } else { $max_allowed_packet = 0; } $tmpSql = ''; $strSql = ''; $countFieldLoc = count($arFields["LOCATION_ID"]); for ($i = 0; $i < $countFieldLoc; $i++) { $tmpSql = "(" . $arFields["LOCATION_ID"][$i] . ", " . $ID . ")"; $strSqlLen = strlen($strSql); if ($strSqlHeadLength + $strSqlLen + strlen($tmpSql) < $max_allowed_packet || $max_allowed_packet <= 0) { if ($strSqlLen > 0) { $strSql .= ","; } $strSql .= $tmpSql; } else { $DB->Query($strSqlHead . $strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); $strSql = $tmpSql; } } if (strlen($strSql) > 0) { $DB->Query($strSqlHead . $strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__); } } $events = GetModuleEvents("sale", "OnLocationGroupAdd"); while ($arEvent = $events->Fetch()) { ExecuteModuleEventEx($arEvent, array($ID, $arFields)); } return $ID; }