[I128-2226] Новый Action RQST/CreateRequestProlongationBS: Обрабатывает логику создания заявки на продление (валидация дат, обновление записи читателя, создание записи в БД заказов)


НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2 >> [I128-2226] Новый Action RQST/CreateRequestProlongationBS: Обрабатывает логику создания заявки на продление (валидация дат, обновление записи читателя, создание записи в БД заказов)📄 Скачать в DOCX


Тип Версия Статус Приоритет Исполнитель
⚙️ Новые возможности 2026.2 🔘 Завершено Средний Ilya Mikhaylenko

Компоненты: ИРБИС 128. Модуль RQST - Подсистема заказа изданий

Завершено: 07.03.2026 21:15

1. Описание

Action предназначен для создания заявки на продление срока пользования экземпляром издания, находящимся на руках у читателя. Выполняет проверки допустимости продления, создает запись заявки в базе данных заказов и обновляет запись читателя, добавляя информацию о запросе продления.

  1. Входные параметры (GET/POST) ||Параметр||Тип||Обязательность||Описание|| |prolongDate|String|Да|Желаемая дата возврата в формате {}YYYY~~MM~~DD{}. Должна быть строго больше текущей даты и больше текущего срока возврата книги.| |rdrDb|String|Да|Имя базы данных читателей (например, {}RDR{}).| |rdrMfn|Integer|Да|MFN записи читателя.| |occ|Integer|Да|Номер повторения поля выдачи (обычно поле 40) в записи читателя, соответствующий экземпляру, который необходимо продлить.| |description|String|Нет|Примечание пользователя к заявке.|
  2. Возвращаемое значение (JSON)

Возвращает JSON-объект с результатами выполнения операции.

При успешном выполнении:

{
  "success": true,
  "massage": "Заявка на продление срока пользования экземпляром издания успешно создана"
}

При ошибке:

{
  "success": false,
  "massage": "Текст ошибки"
}

 

  1. Алгоритм работы и проверки

    1. Валидация параметров:

    Проверяется наличие обязательных параметров ({}prolongDate{}, {}rdrDb{}, {}rdrMfn{}, {}occ{}). Проверяется, что prolongDate больше текущей системной даты.

    2. Инициализация:

    Подключаются модули Bookland и {}RQST{}. Открываются базы данных читателей и заказов.

    3. Проверка записи читателя:

    Загружается запись читателя по MFN. Извлекается текущая дата возврата из поля выдачи (тег определяется настройкой {}rdrtagrequest{}, подполе {}rdrdelimreturndate0{}). ** Проверяется, что prolongDate больше текущей даты возврата. Если меньше или равна — выбрасывается исключение.

    4. Проверка дубликатов:

    ** Выполняется поиск существующих заявок на продление для данной пары "Читатель — Книга". Если заявка уже существует, возвращается ошибка.

    5. Создание заявки:

    Формируется объект данных для заявки типа prolongation (продление), включающий: ** Новую дату возврата. Идентификаторы читателя и книги (шифр, инвентарный номер, штрих-код). ** Создается новая запись в базе данных заказов ({}RQST{}) через метод {}RQST::CreateRequestRecord{}.

    6. Обновление записи читателя:

    В соответствующее повторение поля выдачи записи читателя добавляется подполе запроса продления (настройка {}rdrdelimreturndaterequest{}, по умолчанию {}^Q{}) со значением новой даты возврата. Запись читателя сохраняется.

  2. Возможные ошибки

-

I128~~2223 Функция Bookland::GetDbBookByRdrOcc(ObjectDataRecord $rdrRec, int $rdrOcc): ObjectDataDatabase I128~~2224 Новый раздел настроек АРМ Книговыдача "Настройка подсистемы заявок на продление срока пользования изданием" I128~~2225 Новый Action RQST/GetRqstProlongationForm: Возвращает HTML-форму для модального окна продления I128~~2226 Новый Action RQST/CreateRequestProlongationBS: Обрабатывает логику создания заявки на продление (валидация дат, обновление записи читателя, создание записи в БД заказов) I128~~2227 Возможность для читателей в разделе "Книги на руках" сформировать заявку на продление срока пользования экземпляром издания I128~~2228 Функционал обработки заявок на продление срока пользования экземпляром издания читателем

7. Связанные задачи

7.1. 🔗 Соответствует задача: I128-2233

[I128-2233] Новый Action RQST/CreateRequestProlongationBS: Обрабатывает логику создания заявки на продление (валидация дат, обновление записи читателя, создание записи в БД заказов) Статус: Открытая задача | Автор: Ilya Mikhaylenko