# ТАИС: SPLIT - открытие PNR после split по номеру TKT ### Требование Реализовать открытие сплитованных бронирований по номеру билета Текущее отображение на UI uat: http://prntscr.com/bq9_tGmfDLUo Билет отображется c надписью "Билет без бронирования". Связано с тем, что после сплита - в каждом билете бронирования остается локатор той брони, из которой оформлялся билет. А у отсплитованной брони локатор уже новый. Это поведение и нужно обойти в реализации в Смарт. ### Воспроизведение сценария 1. Создать бронирование с 2 пассажирами. Бронь1. 1. Выписать билеты: Билет1 и Билет2. Сохранить себе номера билетов. 1. Выполнить сплит - появится Бронь2. 1. Ввести номер Билет1 в поиск в Smart. 1. Ввести номер Билет2 в поиск в Smart. 1. Повторить в более сложном случае: три пассажира в бронировании и вторая бронь сплитуется еще раз. В итоге из одной брони будет три брони и три билета. ### Логика решения Алгоритм открытия нужного бронирования при поиске по номеру билета: #### Как отобразить билет и бронирование 1. Взять номер билета, введенный пользователем в поиск, найти в ТАИС, считать в нем локатор. 2. Зачитать бронь по этому локатору. Если по локатору из билета не нашлось бронирование ТАИС, повторить поиск среди мигрированных бронирований. Метод реализован в задаче SMRT-11282. 3. В зачитанной брони осуществить поиск билета из п.1 3.1. Если бронирование активное и содержит билет из поиска, отображаем бронь и билет на UI 3.2. Если бронирование активное и НЕ содержит билет из поиска, то ищем в брони поле СOMMENT c текстом РЗ и зачитываем локатор из него. Если бронирование содержит несколько СOMMENT , то поиск билета осуществляется по локатору по каждому из полей. 3.3. Открываем полученный локатор и осуществляем поиск в нем запрашиваемого билета, при получении положительного ответа отображаем бронь и билет на UI. Пользователь видит бронирование с билетом из поиска, а так же номер «первоначального» PNR (из поля СOMMENT) через "/". 3.4. Если по локатору из билет нашлось мигрированное бронирование - пока не известно будет ли для мигрированных броней перенесена связь с "родительской бронью" пока неизвестно, поэтому этот сценарий не рассматриваем. и идем к 4.2 4. Отобразить Бронирование и Билет 4.1. Если бронирование из билета содержит все сегменты аннулированные и содержит билет из поиска, то отображать только билет и надпись "Билет без бронирования" 4.2. Если бронирование из билета не найдено, включая мигрированные PNR, то отображать только билет и надпись "Билет без бронирования" ### Работа с системой бронирования Чтение данных поля ремарки с текстом "РЗ". В ТАИС кодировка РЗ - означает разделение заказа, которая для нас служит индикатором того, что в бронировании производилась процедура SPLIT. Первоначальная бронь в которой содержится информацию, что выделили в отдельную бронь: `<FREETEXT>*РЗ -->*L1QKQK 02АВГ/1403/ОВБ S70436/S7000/0140</FREETEXT>` Новая бронь: `<FREETEXT>*РЗ <--*L1QKQB 02АВГ/1403/ОВБ S70436/S7000/0140</FREETEXT>` Как дополнительная информация в бронировании признак родительской брони: ``` <TRANSACTION> <TRID>24</TRID> <COUNTRY>РФ</COUNTRY> <DIVLOCATOR>L1TDSC</DIVLOCATOR> <DIVRELATIONSHIP>P</DIVRELATIONSHIP> - признак того, что открытая бронь является родительской <ENDTIME>2022-08-03T03:14:41.0Z</ENDTIME> ``` Если сплитование выполнялось несколько раз, то и полей с COMENT и FREETEXT будет несколько, в которых будет отражена вся цепочка сплитования. например: ``` <COMMENT> <CMTID>49</CMTID> <FREETEXT>РЗ -->L1TE00 03АВГ/1720/ОВБ S70415/S7000/0140</FREETEXT> <LOCATOR>L1TDZT</LOCATOR> <SEGID>0</SEGID> </COMMENT> <COMMENT> <CMTID>56</CMTID> <FREETEXT>РЗ -->L1TE01 03АВГ/1721/ОВБ S70415/S7000/0140</FREETEXT> <LOCATOR>L1TDZT</LOCATOR> <SEGID>0</SEGID> </COMMENT> ``` ### UI Smart 1. Отображать и билет и бронь, когда бронь активная 2. Отобрать надпись "Билет без бронирования" и билет при условиях: бронирование не найдено или все сегменты аннулированы. ### Эффекты во внешних системах 1. Только чтение из системы бронирования. 2. Влияний на внешние системы не предусмотрено. ### Критерии приемки 1. После сплитования на 2 брони, можно открыть оба билета и обе брони с помощью поиска по билету 2. После сплитования на 3 и более брони, можно открыть все билеты с их бронями с помощью поиска по номерам билетов 3. Билеты без броней или с аннулированными всеми сегментами сопровождены соответствующей надписью. 4. Найдено мигрированное PNR, если билет относится к нему #### Пример Мы нашли сплит мигрированной брони, где билет по сплитованной броне оформлен после сплита. Но связь между данными бронированиями есть, отображена в OSI: Первоначальная бронь W7QZV3 по которой оформлен билет 4212436951437. Далее сплит O6JQKL и оформление 4212437020310. В st в данном случае успешно открываются бронирования и по номеру и билету, т.к. в билетах "новые сплитованные" номера PNR. Пример мигрированной брони, где билеты будут оформлены до сплита запросили у коллег.