---
# System prepended metadata

title: 'ТАИС: SPLIT - открытие PNR после split по номеру TKT'

---

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