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;
 }
Beispiel #2
0
}
$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));
}
Beispiel #3
0
}
$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));
}
Beispiel #4
0
</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>
Beispiel #6
0
 /**
  * <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"=&gt;"язык параметров", "NAME"=&gt;"Название
  * группы")</pre> </li> </ul>
  *
  *
  *
  * @return int <p>Возвращается код добавленной группы или <i>false</i> в случае
  * ошибки.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arFields = array(
  *    "SORT" =&gt; 150,
  *    "LOCATION_ID" =&gt; array(12, 34, 35, 36, 37),
  *    "LANG" =&gt; array(
  *       array("LID" =&gt; "ru", "NAME" =&gt; "Группа 1"),
  *       array("LID" =&gt; "en", "NAME" =&gt; "Group 1")
  *    )
  * );<br>
  * $ID = CSaleLocationGroup::Add($arFields);
  * if (IntVal($ID)&lt;=0)
  *    echo "Ошибка добавления группы";<br>?&gt;
  * </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>&lt;код языка&gt;</b> - ключем является
  * код языка, а значением ассоциативный массив вида <pre class="syntax">
  * array("LID" =&gt; "код языка", "NAME" =&gt; "название страны на этом языке",
  * "SHORT_NAME" =&gt; "сокращенное название страны (аббревиатура) на этом
  * языке")</pre> Эта пара ключ-значение должна присутствовать для
  * каждого языка системы. </li> </ul> Массив с параметрами города должен
  * содержать ключи: <ul> <li> <b>NAME</b> - название города (не зависящее от
  * языка);</li> <li> <b>SHORT_NAME</b> - сокращенное название города -
  * аббревиатура (не зависящее от языка);</li> <li> <b>&lt;код языка&gt;</b> -
  * ключем является код языка, а значением ассоциативный массив вида
  * <pre class="syntax"> array("LID" =&gt; "код языка", "NAME" =&gt; "название города на этом
  * языке", "SHORT_NAME" =&gt; "сокращенное название города (аббревиатура) на
  * этом языке")</pre> Эта пара ключ-значение должна присутствовать для
  * каждого языка системы.</li> </ul>
  *
  * @return int <p>Возвращается код измененного местоположения или <i>false</i> у
  * случае ошибки.</p> <a name="examples"></a>
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arFields = array(
  *    "SORT" =&gt; 100,
  *    "COUNTRY_ID" =&gt; 8,
  *    "WITHOUT_CITY" =&gt; "N"
  * );
  *  
  * $arCity = array(
  *    "NAME" =&gt; "Kaliningrad",
  *    "SHORT_NAME" =&gt; "Kaliningrad",
  *    "ru" =&gt; array(
  *       "LID" =&gt; "ru",
  *       "NAME" =&gt; "Калининград",
  *       "SHORT_NAME" =&gt; "Калининград"
  *       ),
  *    "en" =&gt; array(
  *       "LID" =&gt; "en",
  *       "NAME" =&gt; "Kaliningrad",
  *       "SHORT_NAME" =&gt; "Kaliningrad"
  *       )
  * );
  *  
  * $arFields["CITY"] = $arCity;
  *  
  * if (!CSaleLocation::Update(6, $arFields))
  *    echo "Ошибка изменения местоположения";
  * ?&gt;
  * 
  * 
  * 
  *  function CreateCityRussia($arFields, $regionName, &amp;$strError) {
  *    // Ищем группу местоположений, к которой необходимо привязать местоположение
  *    $locGroupID = 0;
  *    $resLocationGroup = CSaleLocationGroup::GetList(array("ID"=&gt;"ASC"), array());
  *    while($arLocationGroup = $resLocationGroup-&gt;Fetch()) {
  *      if(mb_strtolower($arLocationGroup["NAME"], "Windows-1251") == mb_strtolower($regionName, "Windows-1251")) $locGroupID = $arLocationGroup["ID"];
  *    }
  *    
  *    // Если группа найдена, определяем список привязанных к ней местоположений и добавляем к списку новое
  *    if($locGroupID) {
  *      // Создаем новый город в стране Россия и новое местоположение
  *      $arCoutry = CSaleLocation::GetList(array(), array("LID" =&gt; LANGUAGE_ID, "CITY_NAME" =&gt; false, "COUNTRY_NAME" =&gt; "Россия"))-&gt;Fetch();
  *      $cityId = CSaleLocation::AddCity($arFields);
  *      $ID = CSaleLocation::AddLocation(array("COUNTRY_ID" =&gt; $arCoutry['COUNTRY_ID'], "CITY_ID" =&gt; $cityId));
  *      
  *      // Формируем новый список местоположений группы
  *      $resLocGroup = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID" =&gt; $locGroupID));
  *      $locList = array();
  *      while($arLocGroup = $resLocGroup-&gt;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;
 }
Beispiel #9
0
 /**
  * <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>&lt;код языка&gt;</b> - ключем является
  * код языка, а значением ассоциативный массив вида <pre class="syntax">
  * array("LID" =&gt; "код языка", "NAME" =&gt; "название страны на этом языке",
  * "SHORT_NAME" =&gt; "сокращенное название страны (аббревиатура) на этом
  * языке")</pre> Эта пара ключ-значение должна присутствовать для
  * каждого языка системы. </li> </ul> Массив с параметрами города должен
  * содержать ключи: <ul> <li> <b>NAME</b> - название города (не зависящее от
  * языка);</li> <li> <b>SHORT_NAME</b> - сокращенное название города - абревиатура
  * (не зависящее от языка);</li> <li> <b>&lt;код языка&gt;</b> - ключем является
  * код языка, а значением ассоциативный массив вида <pre class="syntax">
  * array("LID" =&gt; "код языка", "NAME" =&gt; "название города на этом языке",
  * "SHORT_NAME" =&gt; "сокращенное название города (аббревиатура) на этом
  * языке")</pre> Эта пара ключ-значение должна присутствовать для
  * каждого языка системы.</li> </ul>
  *
  *
  *
  * @return int <p>Возвращается код измененного местоположения или <i>false</i> у
  * случае ошибки.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arFields = array(
  *    "SORT" =&gt; 100,
  *    "COUNTRY_ID" =&gt; 8,
  *    "WITHOUT_CITY" =&gt; "N"
  * );
  *  
  * $arCity = array(
  *    "NAME" =&gt; "Kaliningrad",
  *    "SHORT_NAME" =&gt; "Kaliningrad",
  *    "ru" =&gt; array(
  *       "LID" =&gt; "ru",
  *       "NAME" =&gt; "Калининград",
  *       "SHORT_NAME" =&gt; "Калининград"
  *       ),
  *    "en" =&gt; array(
  *       "LID" =&gt; "en",
  *       "NAME" =&gt; "Kaliningrad",
  *       "SHORT_NAME" =&gt; "Kaliningrad"
  *       )
  * );
  *  
  * $arFields["CITY"] = $arCity;
  *  
  * if (!CSaleLocation::Update(6, $arFields))
  *    echo "Ошибка изменения местоположения";
  * ?&gt;
  * 
  * 
  * 
  *  function CreateCityRussia($arFields, $regionName, &amp;$strError) {
  *    // Ищем группу местоположений, к которой необходимо привязать местоположение
  *    $locGroupID = 0;
  *    $resLocationGroup = CSaleLocationGroup::GetList(array("ID"=&gt;"ASC"), array());
  *    while($arLocationGroup = $resLocationGroup-&gt;Fetch()) {
  *      if(mb_strtolower($arLocationGroup["NAME"], "Windows-1251") == mb_strtolower($regionName, "Windows-1251")) $locGroupID = $arLocationGroup["ID"];
  *    }
  *    
  *    // Если группа найдена, определяем список привязанных к ней местоположений и добавляем к списку новое
  *    if($locGroupID) {
  *      // Создаем новый город в стране Россия и новое местоположение
  *      $arCoutry = CSaleLocation::GetList(array(), array("LID" =&gt; LANGUAGE_ID, "CITY_NAME" =&gt; false, "COUNTRY_NAME" =&gt; "Россия"))-&gt;Fetch();
  *      $cityId = CSaleLocation::AddCity($arFields);
  *      $ID = CSaleLocation::AddLocation(array("COUNTRY_ID" =&gt; $arCoutry['COUNTRY_ID'], "CITY_ID" =&gt; $cityId));
  *      
  *      // Формируем новый список местоположений группы
  *      $resLocGroup = CSaleLocationGroup::GetLocationList(array("LOCATION_GROUP_ID" =&gt; $locGroupID));
  *      $locList = array();
  *      while($arLocGroup = $resLocGroup-&gt;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 '&nbsp;|&nbsp;';
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"));
Beispiel #12
0
 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;
 }