$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();
         }
     }
 }
 // add translations and group tasks, redirect
 if (!$errors) {
     foreach ($translations as $data) {
         StatusLangTable::add($data);
     }
     foreach ($groupTasks as $data) {
         StatusGroupTaskTable::add($data);
     }
Exemple #2
0
 /**
  * <p>Метод добавляет новый статус заказа с параметрами из массива arFields. Метод динамичный.</p>
  *
  *
  * @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__add.c7ce74b1.php
  * @author Bitrix
  */
 public static function Add($arFields)
 {
     if (!self::CheckFields('ADD', $arFields)) {
         return false;
     }
     $statusId = $arFields['ID'];
     foreach (GetModuleEvents("sale", "OnBeforeStatusAdd", true) as $arEvent) {
         if (ExecuteModuleEventEx($arEvent, array($statusId, &$arFields)) === false) {
             return false;
         }
     }
     StatusTable::add(array_intersect_key($arFields, self::$statusFields));
     if (isset($arFields['LANG']) && is_array($arFields['LANG']) && !empty($arFields['LANG'])) {
         self::addLanguagesBy($statusId, $arFields['LANG']);
     }
     if (isset($arFields['PERMS']) && is_array($arFields['PERMS']) && !empty($arFields['PERMS'])) {
         self::addTasksBy($statusId, $arFields['PERMS']);
     }
     foreach (GetModuleEvents("sale", "OnStatusAdd", true) as $arEvent) {
         ExecuteModuleEventEx($arEvent, array($statusId, $arFields));
     }
     return $statusId;
 }
Exemple #3
0
 static function install(array $data)
 {
     if (!($statusId = $data['ID']) || !is_string($statusId)) {
         throw new SystemException('invalid status ID', 0, __FILE__, __LINE__);
     }
     if ($languages = $data['LANG']) {
         unset($data['LANG']);
         if (!is_array($languages)) {
             throw new SystemException('invalid status LANG', 0, __FILE__, __LINE__);
         }
     }
     $data['TYPE'] = static::TYPE;
     // install status if it is not installed
     if (!StatusTable::getById($statusId)->fetch()) {
         StatusTable::add($data);
     }
     // install status languages if they are not installed
     if ($languages) {
         $installedLanguages = array();
         $result = StatusLangTable::getList(array('select' => array('LID'), 'filter' => array('=STATUS_ID' => $statusId)));
         while ($row = $result->fetch()) {
             $installedLanguages[$row['LID']] = true;
         }
         foreach ($languages as $language) {
             if (!is_array($language)) {
                 throw new SystemException('invalid status language', 0, __FILE__, __LINE__);
             }
             if (!$installedLanguages[$language['LID']]) {
                 $language['STATUS_ID'] = $statusId;
                 StatusLangTable::add($language);
             }
         }
     }
 }