Если не удается получить эксклюзивную блокировку (flock возвращает false), скрипт возвращает ошибку без закрытия файла $f, который был успешно открыт.
-
I128~~2246 Утечка дескриптора файла в Actions/ToolBar/VisitFree
I128~~2247 Некорректный текст сообщения об ошибке в Actions/Toolbar/VisitFree файла
I128~~2248 Утечка дескриптора файла в Actions/ToolBar/OpenFund
I128~~2249 Некорректный текст сообщения об ошибке в Actions/Toolbar/OpenFund о блокировке файла
I128~~2250 Общая функция бронирования BookBrone по умолчанию использует статус, предназначенный для специфической операции «Возврат на бронеполку» (ReturnandBRStatus), вместо общего статуса бронирования по умолчанию (BRDefaultStatus)
I128~~2251 Логическая ошибка при расчете пени в GetKvList
I128~~2252 Неполная проверка корректности результата вызова Authorisation::AuthLDAP в функциях Bookland::SetCurRdrAppByMfn и Bookland::SetCurRdrAppBySearch
Bookland: Рефакторинг, исправление ошибок JS и оптимизация логики
PHP: Убраны избыточные вызовы CheckProfile во внешних функциях.
PHP: В BookTable/Prodl добавлена проверка strongprodl (строгое продление по месту выдачи).
PHP: Оптимизирован код выборки экземпляров в OccDupWindow/BookDupWindow (убрано дублирование).
PHP: Исправлен расчет макс. штрафа в GetKvList.
PHP: Исправлена работа с блокировками файлов в OpenFund/VisitFree.
PHP: Заменен дефолтный статус бронирования на BRDefaultStatus.
JS: Исправлена опечатка в экшене 'Bokland' -> 'Bookland' (rINPASP).
JS: Исправлен баг парсинга переменных в RFID провайдере (idlogic).
JS: Параметр rqst_mfn переименован в rqstMfn.
Bookland: Исправление списания 'U', оптимизация выдачи/возврата и контекст сессии
Основные изменения
Исправление логики списания и статусов (Bookland):
TransformBookOccAsLost.inc: Исправлена ошибка при списании части экземпляров совокупного учета (статус U). Теперь, если списывается более одного экземпляра (например, 5 учебников из партии), в новой записи корректно проставляется количество (^1). Ранее подполе удалялось, что системой воспринималось как 1 экземпляр.
Store.inc (BookDupWindow): Добавлено явное приведение типов к int при расчете свободных экземпляров для статуса U. Оптимизирован цикл перебора: статус и штрихкоды теперь запрашиваются один раз для каждого экземпляра.
Управление контекстом сессии и UI:
TransformRdrOccAsReturn.inc: Добавлена логика сохранения номера обработанного повторения в контекст сессии (BooklandLastManagedOccs). Это исправляет проблему, когда возвращенная книга могла не подсвечиваться в интерфейсе или не попадать в квитанцию текущей операции.
TransformRdrAppendBookland.inc: Добавлены подробные комментарии о назначении контекста сессии.
Оптимизация производительности и рефакторинг:
TransformRdrAppendBookland.inc: Оптимизирован процесс выдачи. В цикле добавления записей теперь используется возвращаемое значение метода FieldAdd (сразу получаем номер повторения), вместо повторного обращения к записи через GetFieldOcc. Упрощена логика выбора штрихкода (приоритет основного, затем RFID/альтернативного).
TransformBookOccAsReturn.inc, TransformBookOccAsBrone.inc: Устранены множественные вызовы GetSubField для одних и тех же полей. Код приведен к единому стилю (добавлены фигурные скобки, использованы elseif).
Повышение надежности (LDAP):
SetCurRdrAppByMfn.inc, SetCurRdrAppBySearch.inc: Усилена проверка результата авторизации через LDAP. Теперь перед сохранением данных проверяется не только флаг ошибки, но и корректность возвращенного объекта читателя. Добавлена проверка на null при поиске по MFN.
Исправлена логика трансформации вхождений при возврате в Bookland