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; }
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; }
/** * <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> * <? * $arFields = array( * "PERSON_TYPE_ID" => 2, * "NAME" => "Комплектация", * "TYPE" => "RADIO", * "REQUIED" => "Y", * "DEFAULT_VALUE" => "F", * "SORT" => 100, * "CODE" => "COMPLECT", * "USER_PROPS" => "N", * "IS_LOCATION" => "N", * "IS_LOCATION4TAX" => "N", * "PROPS_GROUP_ID" => 1, * "SIZE1" => 0, * "SIZE2" => 0, * "DESCRIPTION" => "", * "IS_EMAIL" => "N", * "IS_PROFILE_NAME" => "N", * "IS_PAYER" => "N" * ); * * // Если установлен код свойства, то изменяем свойство с этим кодом, * // иначе добавляем новой свойство * if ($ID>0) * { * if (!CSaleOrderProps::Update($ID, $arFields)) * { * echo "Ошибка изменения параметров свойства"; * } * else * { * // Обновим символьный код у значений свойства * // (хранение избыточных данных для оптимизации работы) * $db_order_props_tmp = * CSaleOrderPropsValue::GetList(($b="NAME"), * ($o="ASC"), * Array("ORDER_PROPS_ID"=>$ID)); * while ($ar_order_props_tmp = $db_order_props_tmp->Fetch()) * { * CSaleOrderPropsValue::Update($ar_order_props_tmp["ID"], * array("CODE" => "COMPLECT")); * } * } * } * else * { * $ID = CSaleOrderProps::Add($arFields); * if ($ID<=0) * echo "Ошибка добавления свойства"; * } * ?> * </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; }
/** * <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> * <? * $arFields = array( * "PERSON_TYPE_ID" => 2, * "NAME" => "Комплектация", * "TYPE" => "RADIO", * "REQUIED" => "Y", * "DEFAULT_VALUE" => "F", * "SORT" => 100, * "CODE" => "COMPLECT", * "USER_PROPS" => "N", * "IS_LOCATION" => "N", * "IS_LOCATION4TAX" => "N", * "PROPS_GROUP_ID" => 1, * "SIZE1" => 0, * "SIZE2" => 0, * "DESCRIPTION" => "", * "IS_EMAIL" => "N", * "IS_PROFILE_NAME" => "N", * "IS_PAYER" => "N" * ); * * // Если установлен код свойства, то изменяем свойство с этим кодом, * // иначе добавляем новой свойство * if ($ID>0) * { * if (!CSaleOrderProps::Update($ID, $arFields)) * { * echo "Ошибка изменения параметров свойства"; * } * else * { * // Обновим символьный код у значений свойства * // (хранение избыточных данных для оптимизации работы) * $db_order_props_tmp = * CSaleOrderPropsValue::GetList(($b="NAME"), * ($o="ASC"), * Array("ORDER_PROPS_ID"=>$ID)); * while ($ar_order_props_tmp = $db_order_props_tmp->Fetch()) * { * CSaleOrderPropsValue::Update($ar_order_props_tmp["ID"], * array("CODE" => "COMPLECT")); * } * } * } * else * { * $ID = CSaleOrderProps::Add($arFields); * if ($ID<=0) * echo "Ошибка добавления свойства"; * } * ?> * </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; }
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; }