# ТАИС: 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. Пример мигрированной брони, где билеты будут оформлены до сплита запросили у коллег.