Exemplo n.º 1
0
 function Add($arFields)
 {
     global $DB;
     if (!CSaleOrderProps::CheckFields("ADD", $arFields)) {
         return false;
     }
     $arInsert = $DB->PrepareInsert("b_sale_order_props", $arFields);
     $strSql = "INSERT INTO b_sale_order_props(" . $arInsert[0] . ") " . "VALUES(" . $arInsert[1] . ")";
     $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     $ID = IntVal($DB->LastID());
     return $ID;
 }
Exemplo n.º 2
0
 function Update($ID, $arFields)
 {
     global $DB;
     $ID = IntVal($ID);
     if (!CSaleOrderProps::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $strUpdate = $DB->PrepareUpdate("b_sale_order_props", $arFields);
     $strSql = "UPDATE b_sale_order_props SET " . $strUpdate . " WHERE ID = " . $ID . "";
     $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     return $ID;
 }
Exemplo n.º 3
0
 /**
  * <p>Функция добавляет новое свойство заказа с параметрами из массива arFields </p>
  *
  *
  *
  *
  * @param array $arFields  Ассоциативный массив, в котором ключами являются названия
  * параметров свойства, а значениями - значения этих параметров.<br><br>
  * Допустимые ключи: <ul> <li> <b>PERSON_TYPE_ID</b> - тип плательщика;</li> <li> <b>NAME</b>
  * - название свойства (тип плательщика зависит от сайта, а сайт - от
  * языка; название должно быть на соответствующем языке);</li> <li>
  * <b>TYPE</b> - тип свойства. Допустимые значения: <ul> <li> <b>CHECKBOX</b> - флаг;</li>
  * <li> <b>TEXT</b> - строка текста;</li> <li> <b>SELECT</b> - выпадающий список
  * значений;</li> <li> <b>MULTISELECT</b> - список со множественным выбором;</li> <li>
  * <b>TEXTAREA</b> - многострочный текст;</li> <li> <b>LOCATION</b> - местоположение;</li>
  * <li> <b>RADIO</b> - переключатель.</li> </ul> </li> <li> <b>REQUIED</b> - флаг (Y/N)
  * обязательное ли поле;</li> <li> <b>DEFAULT_VALUE</b> - значение по умолчанию;</li>
  * <li> <b>SORT</b> - индекс сортировки;</li> <li> <b>USER_PROPS</b> - флаг (Y/N) входит ли
  * это свойство в профиль покупателя;</li> <li> <b>IS_LOCATION</b> - флаг (Y/N)
  * использовать ли значение свойства как местоположение покупателя
  * для расчёта стоимости доставки (только для свойств типа LOCATION); </li>
  * <li> <b>PROPS_GROUP_ID</b> - код группы свойств;</li> <li> <b>SIZE1</b> - ширина поля
  * (размер по горизонтали);</li> <li> <b>SIZE2</b> - высота поля (размер по
  * вертикали);</li> <li> <b>DESCRIPTION</b> - описание свойства;</li> <li> <b>IS_EMAIL</b> -
  * флаг (Y/N) использовать ли значение свойства как E-Mail покупателя;</li>
  * <li> <b>IS_PROFILE_NAME</b> - флаг (Y/N) использовать ли значение свойства как
  * название профиля покупателя; </li> <li> <b>IS_PAYER</b> - флаг (Y/N)
  * использовать ли значение свойства как имя плательщика;</li> <li>
  * <b>IS_LOCATION4TAX</b> - флаг (Y/N) использовать ли значение свойства как
  * местоположение покупателя для расчёта налогов (только для
  * свойств типа <b>LOCATION</b>);</li> <li> <b>CODE</b> - символьный код свойства.</li>
  * <li> <b>IS_FILTERED</b> - свойство доступно в фильтре по заказам. С версии
  * 10.0.</li> <li> <b>IS_ZIP</b> - использовать как почтовый индекс. С версии
  * 10.0.</li> <li> <b>UTIL</b> - позволяет использовать свойство только в
  * административной части. С версии 11.0.</li> </ul>
  *
  *
  *
  * @return int <p>Возвращается код добавленного свойства заказа.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arFields = array(
  *    "PERSON_TYPE_ID" =&gt; 2,
  *    "NAME" =&gt; "Комплектация",
  *    "TYPE" =&gt; "RADIO",
  *    "REQUIED" =&gt; "Y",
  *    "DEFAULT_VALUE" =&gt; "F",
  *    "SORT" =&gt; 100,
  *    "CODE" =&gt; "COMPLECT",
  *    "USER_PROPS" =&gt; "N",
  *    "IS_LOCATION" =&gt; "N",
  *    "IS_LOCATION4TAX" =&gt; "N",
  *    "PROPS_GROUP_ID" =&gt; 1,
  *    "SIZE1" =&gt; 0,
  *    "SIZE2" =&gt; 0,
  *    "DESCRIPTION" =&gt; "",
  *    "IS_EMAIL" =&gt; "N",
  *    "IS_PROFILE_NAME" =&gt; "N",
  *    "IS_PAYER" =&gt; "N"
  * );
  * 
  * // Если установлен код свойства, то изменяем свойство с этим кодом,
  * // иначе добавляем новой свойство
  * if ($ID&gt;0)
  * {
  *    if (!CSaleOrderProps::Update($ID, $arFields))
  *    {
  *       echo "Ошибка изменения параметров свойства";
  *    }
  *    else
  *    {
  *       // Обновим символьный код у значений свойства
  *       // (хранение избыточных данных для оптимизации работы)
  *       $db_order_props_tmp =
  *           CSaleOrderPropsValue::GetList(($b="NAME"),
  *                                         ($o="ASC"),
  *                                         Array("ORDER_PROPS_ID"=&gt;$ID));
  *       while ($ar_order_props_tmp = $db_order_props_tmp-&gt;Fetch())
  *       {
  *          CSaleOrderPropsValue::Update($ar_order_props_tmp["ID"],
  *                                       array("CODE" =&gt; "COMPLECT"));
  *       }
  *    }
  * }
  * else
  * {
  *    $ID = CSaleOrderProps::Add($arFields);
  *    if ($ID&lt;=0)
  *       echo "Ошибка добавления свойства";
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderprops/csaleorderprops__add.b64a5ac9.php
  * @author Bitrix
  */
 public static function Add($arFields)
 {
     global $DB;
     foreach (GetModuleEvents("sale", "OnBeforeOrderPropsAdd", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array(&$arFields)) === false) {
             return false;
         }
     }
     if (!CSaleOrderProps::CheckFields("ADD", $arFields)) {
         return false;
     }
     $arInsert = $DB->PrepareInsert("b_sale_order_props", $arFields);
     $strSql = "INSERT INTO b_sale_order_props(" . $arInsert[0] . ") VALUES(" . $arInsert[1] . ")";
     $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     $ID = intval($DB->LastID());
     foreach (GetModuleEvents("sale", "OnOrderPropsAdd", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }
Exemplo n.º 4
0
 /**
  * <p>Функция изменяет параметры свойства с кодом ID заказа на значения из массива arFields </p>
  *
  *
  *
  *
  * @param int $ID  Код свойства заказа. </ht
  *
  *
  *
  * @param array $arFields  Ассоциативный массив новых значений параметров свойства заказа,
  * в котором ключами являются названия параметров свойства, а
  * значениями - значения этих параметров.<br> Допустимые ключи: <ul> <li>
  * <b>PERSON_TYPE_ID</b> - тип плательщика;</li> <li> <b>NAME</b> - название свойства (тип
  * плательщика зависит от сайта, а сайт - от языка; название должно
  * быть на соответствующем языке);</li> <li> <b>TYPE</b> - тип свойства.
  * Допустимые значения: <ul> <li> <b>CHECKBOX</b> - флаг;</li> <li> <b>TEXT</b> - строка
  * текста;</li> <li> <b>SELECT</b> - выпадающий список значений;</li> <li> <b>MULTISELECT</b>
  * - список со множественным выбором;</li> <li> <b>TEXTAREA</b> - многострочный
  * текст;</li> <li> <b>LOCATION</b> - местоположение;</li> <li> <b>RADIO</b> -
  * переключатель.</li> </ul> </li> <li> <b>REQUIED</b> - (Y/N) флаг обязательности;</li>
  * <li> <b>DEFAULT_VALUE</b> - значение по умолчанию;</li> <li> <b>SORT</b> - индекс
  * сортировки;</li> <li> <b>USER_PROPS</b> - флаг (Y/N) входит ли это свойство в
  * профиль покупателя;</li> <li> <b>IS_LOCATION</b> - флаг (Y/N) использовать ли
  * значение свойства как местоположение покупателя для расчёта
  * стоимости доставки (только для свойств типа LOCATION); </li> <li>
  * <b>PROPS_GROUP_ID</b> - код группы свойств;</li> <li> <b>SIZE1</b> - ширина поля (размер
  * по горизонтали);</li> <li> <b>SIZE2</b> - высота поля (размер по
  * вертикали);</li> <li> <b>DESCRIPTION</b> - описание свойства;</li> <li> <b>IS_EMAIL</b> -
  * флаг (Y/N) использовать ли значение свойства как E-Mail покупателя;</li>
  * <li> <b>IS_PROFILE_NAME</b> - флаг (Y/N) использовать ли значение свойства как
  * название профиля покупателя; </li> <li> <b>IS_PAYER</b> - флаг (Y/N)
  * использовать ли значение свойства как имя плательщика;</li> <li>
  * <b>IS_LOCATION4TAX</b> - флаг (Y/N) использовать ли значение свойства как
  * местоположение покупателя для расчёта налогов (только для
  * свойств типа <b>LOCATION</b>);</li> <li> <b>CODE</b> - символьный код свойства.</li>
  * </ul>
  *
  *
  *
  * @return int <p>Возвращается код измененного свойства заказа.</p> <a name="examples"></a>
  *
  *
  * <h4>Example</h4> 
  * <pre>
  * &lt;?
  * $arFields = array(
  *    "PERSON_TYPE_ID" =&gt; 2,
  *    "NAME" =&gt; "Комплектация",
  *    "TYPE" =&gt; "RADIO",
  *    "REQUIED" =&gt; "Y",
  *    "DEFAULT_VALUE" =&gt; "F",
  *    "SORT" =&gt; 100,
  *    "CODE" =&gt; "COMPLECT",
  *    "USER_PROPS" =&gt; "N",
  *    "IS_LOCATION" =&gt; "N",
  *    "IS_LOCATION4TAX" =&gt; "N",
  *    "PROPS_GROUP_ID" =&gt; 1,
  *    "SIZE1" =&gt; 0,
  *    "SIZE2" =&gt; 0,
  *    "DESCRIPTION" =&gt; "",
  *    "IS_EMAIL" =&gt; "N",
  *    "IS_PROFILE_NAME" =&gt; "N",
  *    "IS_PAYER" =&gt; "N"
  * );
  *  
  * // Если установлен код свойства, то изменяем свойство с этим кодом,
  * // иначе добавляем новой свойство
  * if ($ID&gt;0)
  * {
  *    if (!CSaleOrderProps::Update($ID, $arFields))
  *    {
  *       echo "Ошибка изменения параметров свойства";
  *    }
  *    else
  *    {
  *       // Обновим символьный код у значений свойства
  *       // (хранение избыточных данных для оптимизации работы)
  *       $db_order_props_tmp = 
  *           CSaleOrderPropsValue::GetList(($b="NAME"), 
  *                                         ($o="ASC"),
  *                                         Array("ORDER_PROPS_ID"=&gt;$ID));
  *       while ($ar_order_props_tmp = $db_order_props_tmp-&gt;Fetch())
  *       {
  *          CSaleOrderPropsValue::Update($ar_order_props_tmp["ID"],
  *                                       array("CODE" =&gt; "COMPLECT"));
  *       }
  *    }
  * }
  * else
  * {
  *    $ID = CSaleOrderProps::Add($arFields);
  *    if ($ID&lt;=0)
  *       echo "Ошибка добавления свойства";
  * }
  * ?&gt;
  * </pre>
  *
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csaleorderprops/csaleorderprops__update.6e284623.php
  * @author Bitrix
  */
 public static function Update($ID, $arFields)
 {
     global $DB;
     $ID = intval($ID);
     if ($ID <= 0) {
         return false;
     }
     foreach (GetModuleEvents("sale", "OnBeforeOrderPropsUpdate", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
             return false;
         }
     }
     if (!CSaleOrderProps::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $strUpdate = $DB->PrepareUpdate("b_sale_order_props", $arFields);
     if (!empty($strUpdate)) {
         $strSql = "UPDATE b_sale_order_props SET " . $strUpdate . " WHERE ID = " . $ID;
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     foreach (GetModuleEvents("sale", "OnOrderPropsUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }
Exemplo n.º 5
0
 function Update($ID, $arFields)
 {
     global $DB;
     $ID = intval($ID);
     if ($ID <= 0) {
         return false;
     }
     foreach (GetModuleEvents("sale", "OnBeforeOrderPropsUpdate", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($ID, &$arFields)) === false) {
             return false;
         }
     }
     $prevDefault = $arFields['DEFAULT_VALUE'];
     // need to check here if we got CODE or ID came
     if (isset($arFields['DEFAULT_VALUE']) && (string) $arFields['DEFAULT_VALUE'] != '' && CSaleLocation::isLocationProMigrated()) {
         $type = '';
         if (!isset($arFields['TYPE'])) {
             $prop = self::GetByID($ID);
             $type = $prop['TYPE'];
         } else {
             $type = $arFields['TYPE'];
         }
         if ($type == 'LOCATION') {
             $arFields['DEFAULT_VALUE'] = CSaleLocation::tryTranslateIDToCode($arFields['DEFAULT_VALUE']);
         }
     }
     if (!CSaleOrderProps::CheckFields("UPDATE", $arFields, $ID)) {
         return false;
     }
     $strUpdate = $DB->PrepareUpdate("b_sale_order_props", $arFields);
     if (!empty($strUpdate)) {
         $strSql = "UPDATE b_sale_order_props SET " . $strUpdate . " WHERE ID = " . $ID;
         $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
     }
     $arFields['DEFAULT_VALUE'] = $prevDefault;
     foreach (GetModuleEvents("sale", "OnOrderPropsUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($ID, $arFields));
     }
     return $ID;
 }