示例#1
0
 /**
  * <p>Метод изменяет параметры статуса заказа с кодом ID. Метод динамичный.</p>
  *
  *
  * @param string $ID  Код статуса.
  *
  * @param array $arFields  Ассоциативный массив новых параметров статуса. Ключами в массиве
  * являются названия параметров статуса, а значениями -
  * соответствующие значения.<br> Допустимые ключи: <ul> <li> <b>ID</b> - код
  * статуса (обязательный);</li> <li> <b>SORT</b> - индекс сортировки;</li> <li>
  * <b>LANG</b> - массив ассоциативных массивов языкозависимых параметров
  * статуса с ключами: <ul> <li> <b>LID</b> - язык;</li> <li> <b>NAME</b> - название
  * статуса на этом языке;</li> <li> <b>DESCRIPTION</b> - описание статуса;</li> </ul>
  * </li> <li> <b>PERMS</b> - массив ассоциативных массивов прав на доступ к
  * изменению заказа в данном статусе с ключами: <ul> <li> <b>GROUP_ID</b> -
  * группа пользователей;</li> <li> <b>PERM_TYPE</b> - тип доступа (S - разрешен
  * перевод заказа в данный статус, M - разрешено изменение заказа в
  * данном статусе).</li> </ul> </li> </ul>
  *
  * @return string <p>Возвращается код добавленного статуса или <i>false</i> в случае
  * ошибки.</p> <br><br>
  *
  * @static
  * @link http://dev.1c-bitrix.ru/api_help/sale/classes/csalestatus/csalestatus__update.145077bd.php
  * @author Bitrix
  */
 public static function Update($statusId, $arFields)
 {
     if (!self::CheckFields('UPDATE', $arFields, $statusId)) {
         return false;
     }
     foreach (GetModuleEvents("sale", "OnBeforeStatusUpdate", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($statusId, &$arFields)) === false) {
             return false;
         }
     }
     StatusTable::update($statusId, array_intersect_key($arFields, self::$statusFields));
     if (isset($arFields['LANG']) && is_array($arFields['LANG']) && !empty($arFields['LANG'])) {
         StatusLangTable::deleteByStatus($statusId);
         self::addLanguagesBy($statusId, $arFields['LANG']);
     }
     if (isset($arFields['PERMS']) && is_array($arFields['PERMS']) && !empty($arFields['PERMS'])) {
         StatusGroupTaskTable::deleteByStatus($statusId);
         self::addTasksBy($statusId, $arFields['PERMS']);
     }
     foreach (GetModuleEvents("sale", "OnStatusUpdate", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($statusId, $arFields));
     }
     return $statusId;
 }
示例#2
0
         $errors[] = Loc::getMessage('ERROR_NO_NAME') . " [{$languageId}] " . htmlspecialcharsbx($languageName);
     }
 }
 // prepare & check group tasks
 foreach ($groups as $groupId => $groupName) {
     $taskId = $_REQUEST['TASK' . $groupId];
     $groupTasks[$groupId] = array('STATUS_ID' => $sid, 'GROUP_ID' => $groupId, 'TASK_ID' => $taskId);
     if (!$tasks[$taskId]) {
         $errors[] = Loc::getMessage('SSEN_INVALID_TASK_ID_FOR') . ' ' . $groupName;
     }
 }
 // add or update status
 if (!$errors) {
     // update status, delete translations and group tasks
     if (!$isNew) {
         $result = StatusTable::update($statusId, $status);
         if ($result->isSuccess()) {
             StatusLangTable::deleteByStatus($statusId);
             StatusGroupTaskTable::deleteByStatus($statusId);
         } else {
             $errors = $result->getErrorMessages();
         }
     } else {
         $result = StatusTable::add($status);
         if ($result->isSuccess()) {
             $statusId = $status['ID'];
         } else {
             $errors = $result->getErrorMessages();
         }
     }
 }