Ссылка «Основная запись» (MAIN_RECORD_ID) вычисляется при выполнении операции "Подтверждение перемещения" (когда исходная бронь завершается, а подтвержденная бронь размещается).
Далее используются следующие понятия:
·Текущая родительская запись движения – это запись, связанная с завершаемой в данный момент бронью.
·Текущая размещаемая запись движения – это запись, связанная с размещаемой в данный момент бронью.
·Основная запись – это ссылка на текущую размещаемую запись движения.
Ссылка вычисляется только для текущей родительской записи движения и только если она еще является основной (MAIN_RECORD_ID = DATA_TRANSFERS_ID).
Ссылка «Основная запись» MAIN_RECORD_ID вычисляется при выполнении одного из описанных ниже условий. Условия проверяются строго в заданном порядке и при выполнении одного из них, остальные условия игнорируются.
oЕсли задана формула, вычисляющая первую запись движения, то система выполняет формулу и получает ID первой записи движения. Далее проверяется, что найденный ID принадлежит текущей цепочке движения, и, если так, прописывается ссылка на основную запись от полученного ID до текущей родительской записи движения.
oЕсли включены флаги Не отражать в движении перемещения внутри отделения, Не учитывать временные перемещения в рамках одного дня, то система проходится вверх по всей цепочке родительских записей и проверяет, что среди них нет записи движения, в которой ARRIVE_DEP_ID = ARRIVE_DEP_ID текущей размещаемой записи движения.
При этом должно выполняться условие, что дата размещения искомой родительской записи и дата размещения в текущей размещаемой записи движения попадают в один день, с учетом настроек коечного фонда Время заезда по умолчанию, которое считается началом дня.
Если подходящая запись найдена, прописывается ссылка на основную запись для всех записей цепочки от найденной записи до текущей родительской записи движения (включая текущую родительскую и найденную запись).
oДля текущей родительской записи движения проверяется условие
(«Не отражать в движении перемещения внутри отделения» = ДА) И
(«Не учитывать смену профиля койки» = НЕТ) И
(поля родительской записи движения ARRIVE_DEP_ID = DIRECT_DEP_ID) И
(HO_BED_TYPE_ID родительской и размещаемой брони не равны)
Если условие выполняется, то у текущей родительской записи движения прописывается ссылка на основную запись.
oДля текущей родительской записи движения проверяется условие
(«Не отражать в движении перемещения внутри отделения» = ДА) И
(«Не учитывать смену профиля койки» = ДА) И
(поля родительской записи движения ARRIVE_DEP_ID <> DIRECT_DEP_ID)
Если условие выполняется, то у текущей родительской записи движения должна прописаться ссылка на основную запись.
При вычислении ссылки на основную запись движения, в текущую размещаемую запись движения прописывается дата начала (BEGIN_DATE) из первой записи движения, для которой прописывается ссылка.
При сбросе флага движения, в таблице-логе (DATA_TRANSFER_CHANGES) запоминаются идентификаторы записей движения, для которых была прописана ссылка на основную запись. Запоминаются только те записи, которые были изменены.