Описание формата TourML. — различия между версиями

Материал из Wiki
Перейти к: навигация, поиск
(Новая страница: «==Введение== '''TourML''' - xml-документ, в котором передается информация о турах, ценах, услугах,…»)
 
 
(не показаны 2 промежуточные версии этого же участника)
Строка 24: Строка 24:
 
==References==
 
==References==
  
Элемент '''references''' содержит информацию об используемых при описании цен, СПО или квот справочниках. Этот элемент является необязательным, однако, практически всегда используется, так как трудно описать информацию не сославшись как какой-либо справочник. Например, при описании СПО, необходимо ссылаться на страны, валюту и т.д. Таким образом, элементы справочников должны присутствовать в документе практически всегда для сохранения ссылочной целостности.<br>
+
Элемент '''references''' содержит информацию об используемых при описании справочниках. Этот элемент является необязательным, однако, практически всегда используется, так как трудно описать информацию не сославшись как какой-либо справочник. Например, при описании СПО, необходимо ссылаться на страны, валюту и т.д. Таким образом, элементы справочников должны присутствовать в документе практически всегда для сохранения ссылочной целостности.<br>
 
Элементы справочников, используемые во всем документе, описываются только в данном разделе.<br>
 
Элементы справочников, используемые во всем документе, описываются только в данном разделе.<br>
 
Уникальность первичных ключей элементов справочников поддерживается в пределах элемента '''references'''.<br>
 
Уникальность первичных ключей элементов справочников поддерживается в пределах элемента '''references'''.<br>
Строка 77: Строка 77:
 
==Sources==
 
==Sources==
  
Элемент '''sources''' может содержать информацию о квотах или о ценах какого-либо тура.
+
Элемент '''sources''' может содержать информацию о туре.
 
<br>
 
<br>
 
Информация о ценах содержится в элементах packet, который состоит из 3-х частей:
 
Информация о ценах содержится в элементах packet, который состоит из 3-х частей:
Строка 110: Строка 110:
 
* issue="2009-08-03T13:04:06.0000000+04:00" - дата и время последнего изменения тура.
 
* issue="2009-08-03T13:04:06.0000000+04:00" - дата и время последнего изменения тура.
 
* <dates /> - даты, на которые есть заезды в указанном туре (будет реализовано в следующей версии)
 
* <dates /> - даты, на которые есть заезды в указанном туре (будет реализовано в следующей версии)
* <comment /> - комментарий к СПО (будет реализовано в следующей версии)
+
 
 
 
* '''spoInfo''' содержит элемент priceQuantity, в котором указано количество доступных цен для тура.
 
* '''spoInfo''' содержит элемент priceQuantity, в котором указано количество доступных цен для тура.
 
   
 
   
Строка 218: Строка 217:
 
* from, to - промежуток дат, на который распространяется эта цена.
 
* from, to - промежуток дат, на который распространяется эта цена.
  
При проверке бронирования данный ключ + дата из промежутка from, to должны передаваться в качестве переметров.
+
При проверке бронирования данный ключ + дата из промежутка from, to должны передаваться в качестве параметров.
  
 
Таким образом, это означает, что пакет с ключем 67222503 на 2009-09-25 стоит (предварительная цена) 3586 (валюта берется из описания СПО) и состоит из следующих услуг: "_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441".
 
Таким образом, это означает, что пакет с ключем 67222503 на 2009-09-25 стоит (предварительная цена) 3586 (валюта берется из описания СПО) и состоит из следующих услуг: "_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441".
 
==Информация о стопах и квотах ==
 
 
Внимание!
 
В результат работы метода GetStopSalesAndQuotes(DateTime checkPoint) попадают только те данные, которые изменялись за период c checkPoint по текущую дату. Такой вариант работы подразумевает ведение своей собственной базы с занесением в нее информации по квотам и стопам.
 
 
В разделе references приведены справочники, на которые ссылаются отобранные перелеты или гостиницы.
 
 
    <references>
 
      <countries>
 
        <country key="460" name="Россия" nameLat="Russia" code="RU" />
 
        <country key="86" name="Турция" nameLat="TURKEY" code="TR" />
 
      </countries>
 
      <resorts />
 
      <cities>
 
          <city key="1" name="Москва" nameLat="Moscow" code="MOW" countryKey="460" />
 
          <city key="187" name="АНТАЛИЯ" nameLat="ANTALYA" code="AYT" countryKey="86" />
 
      </cities>
 
 
и т.д. Более подробно о структуре справочной информации можно прочитать в разделе "формат TourML".
 
 
В разделе
 
 
<[[sources]]>
 
    <[[source name]]="name" [[uri]]="http://www.name.ru/">
 
        <[[quotaServices]]>
 
 
приведена информация по квотам.
 
 
===Информация по квотам на перелет===
 
 
Для каждого авиаперелета и тарифа формируется следующая информация^
 
 
<[[flightService flightKey]]="552" [[tariffKey]]="330">
 
 
где flightKey - ключ перелета, tariffKey - ключ тарифа.
 
 
<stopsales>
 
    <stopsale dateFrom="2009-05-01" dateTo="2009-05-02" typeVisit="byPeriod" status="Modified" />
 
</stopsales>
 
 
В элементах <stopsale> приведена информация об остановках продаж на период времени с dateFrom по dateTo.
 
 
<quotas>
 
<quota date="2009-05-05" places="125" freeAccess="many" typeQuantity="byPerson" typeVisit="byPeriod"  status="Created" />
 
</quotas>
 
 
Квоты по датам преведены в элементах <quota>.
 
 
* Атрибут date - дата, на которую проверяется квота.
 
* Атрибут places - количество свободных мест (отображается если настройка isShowQuantity установлена в true)
 
* Атрибут freeAccess - в зависимости от результата проверки квот и настроек <quoteQualifiers> может принимать значения "byQuery", "none", "little", "many".
 
 
* Остальные атрибуты всегда остаются такими typeQuantity="byPerson" typeVisit="byPeriod".
 
* Если атрибут status="Deleted", то это означает, что данная квота или стоп сейл были удалены из базы данных.
 
 
Примеры возвращаемых данных:
 
  <flightService flightKey="10823" tariffKey="332">
 
  <quotas>
 
  <quota date="2009-05-28" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
- квота на заданное число не задана.
 
  <quota date="2009-05-31" places="0" freeAccess="none" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
- на заданное число нет мест
 
  <quota date="2009-06-10" places="17" freeAccess="little" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
- на заданное число есть 17 мест.<br>
 
Если на какое либо число отсутствует квота в разделе <quotas>, то считается что данная услуга также имеет статус "под запрос" (byQuery).
 
 
===Информация по квотам на проживания===
 
 
<hotelService buildingKey="3239" roomTypeKey="1" roomDescriptionKey="20">
 
<quotas>
 
  <quota date="2009-07-15" places="0" freeAccess="byQuery"
 
                typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
  <quota date="2009-07-16" places="0" freeAccess="byQuery"
 
                typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
 
* buildingKey - ключ гостиницы
 
* roomTypeKey -  тип комнаты (HotelRoom.RoomKey)
 
* roomDescriptionKey - категория комнаты (HotelRoom.RoomsCategoryKey)
 
* typeQuantity="byRoom"  - квота предоставляется на комнату
 
* ...."byPerson" - квота предоставляется на человека. При проверке нужно учитывать количество людей. (используется реже)
 
* typeVisit="byPeriod"  - квота задана на указанный день. Квоты должны проверяться на все дни тура
 
* ...."byCheckin" - на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, то считается что есть. (используется реже)
 
 
Примеры возвращаемых данных:
 
 
<hotelService buildingKey="3275" roomTypeKey="79" roomDescriptionKey="51">
 
  <stopsales>
 
    <stopsale dateFrom="2009-08-14" dateTo="2009-08-15" typeVisit="byPeriod" status="Modified" />
 
    <stopsale dateFrom="2009-08-17" dateTo="2009-08-18" typeVisit="byPeriod" status="Modified" />
 
  </stopsales>
 
  <quotas>
 
    <quota date="2009-08-16" places="1" freeAccess="little" typeQuantity="byRoom"
 
                                                        typeVisit="byPeriod" status="Modified" />
 
  </quotas>
 
</hotelService>
 
 
===Расширенная информация о квотах===
 
 
<div class="ExternalClass1B800DA006794EA799862428F09AF6D6">
 
<div>
 
<div style="text-indent:-2em;margin-left:1em" class="c"><font color="#990000"><span class="t">&#160; hotelService</span><span class="t"> buildingKey</span></font><span class="m">=&quot;</span><b>3239</b><span class="m">&quot;</span><span class="t"><font color="#990000"> roomTypeKey</font></span><span class="m">=&quot;</span><b>1</b><span class="m">&quot;</span><span class="t"><font color="#990000"> roomDescriptionKey</font></span><span class="m">=&quot;</span><b>20</b><span class="m">&quot;</span><span class="m">&gt;</span></div>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em" class="c"><span class="m">&#160; &lt;</span><span class="t"><font color="#990000">quotas</font></span><span class="m">&gt;</span></div>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em"><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span><span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quota</font></span> <span class="t"><font color="#990000">date</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-08-15</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> places</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> freeAccess</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>little</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeQuantity</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byRoom</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeVisit</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPeriod</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> status<span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">Modified</font></b></font><font color="#0000ff"><span class="m">&quot;</span></font></span><span class="t"><font color="#990000"> release</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>14</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> quoteType</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>1</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> uniqueKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>1087900_3479</b><font color="#0000ff"><span class="m">&quot;</span><span class="m"> /&gt;</span></font> </div></div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em">&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160; buildingKey -</font><font color="#000000"> ключ гостиницы</font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160; roomTypeKey -&#160; </font><font color="#000000">HotelRoom.<font size="2">RoomKey (если указанный атрибут отсутствует, означает что он равен нулю)</font></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160; roomDescriptionKey - </font><font color="#000000">HotelRoom.<font size="2">RoomsCategoryKey (если указанный атрибут отсутствует, означает что он равен нулю)</font></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2">&#160; Или для перелетов:</font></div>
 
<div style="text-indent:-2em;margin-left:1em">&#160;<span class="m"><font color="#0000ff">&lt;</font></span><font color="#990000"><span class="t">flightService</span><span class="t"> flightKey</span></font><span class="m"><font color="#0000ff">=&quot;</font></span><b>11187</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> tariffKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>226</b><font color="#0000ff"><span class="m">&quot;</span><span class="m">&gt;</span></font>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em" class="c">&#160;<span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quotas</font></span><span class="m"><font color="#0000ff">&gt;</font></span></div>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em"><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span> <span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quota</font></span> <span class="t"><font color="#990000">date</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-12-19</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> freeAccess</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>little</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeQuantity</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPerson</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeVisit</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPeriod</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> status</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>Created</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> quoteType</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>0</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> uniqueKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>537322</b><font color="#0000ff"><span class="m">&quot;</span><span class="m"> /&gt;</span></font> </div></div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em"><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span> <span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quota</font></span> <span class="t"><font color="#990000">date</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-12-16</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> freeAccess</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>none</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeQuantity</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPerson</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeVisit</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPeriod</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> status</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>Deleted</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> quoteType</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>0</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> uniqueKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>536065</b><font color="#0000ff"><span class="m">&quot;</span><span class="m"> /&gt;</span></font> </div></div>
 
<div><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span> <span class="m"><font color="#0000ff">&lt;/</font></span><span class="t"><font color="#990000">quotas</font></span><span class="m"><font color="#0000ff">&gt;</font></span></div>
 
<div><span class="m"><span class="m"><font size="2"><font face="Arial"><font color="#0000ff"><span class="m"><span class="m"><font color="#000000" size="2" face="Arial">&#160; где <font color="#800000">flightKey</font> - ключ перелета,<font color="#800000"> tariffKey </font>- ключ тарифа.</font></span></span></font></font></font></span></span></div></div></div></div></div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="t"><font color="#990000">&#160;<font size="2"> date (<font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font>) </font></font></span><font size="2"><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-08-15</b><span class="m"><font color="#0000ff">&quot; - дата, на которую действует данная квота</font></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff" size="2"><span class="m"></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font color="#0000ff"><font size="2"><font color="#990000">&#160; places (<font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">2</font></b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> </font><font color="#0000ff">- количество мест по данной квоте (отображается только в случае если задана настройка <font color="#0000ff"><font color="#0000ff">&lt;</font></font><font color="#a31515"><font color="#a31515">add</font></font><font color="#0000ff"><font color="#0000ff"> </font></font><font color="#ff0000"><font color="#ff0000">key</font></font><font color="#0000ff"><font color="#0000ff">=</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff">isShowQuantity</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff"> </font></font><font color="#ff0000"><font color="#ff0000">value</font></font><font color="#0000ff"><font color="#0000ff">=</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff">true</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff">/&gt;</font></font>)</font></span></font></font></span></div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font color="#0000ff"><font size="2"><span class="t"></span></font></font></span>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"><font color="#990000">&#160; freeAccess (<font color="#2b91af" size="2"><font color="#2b91af" size="2">QuantityEnum</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b>little</b><span class="m"><font color="#0000ff">&quot; - состояние наличия квот (словами), в зависимости от настроек, указанных в <font color="#0000ff"><font color="#0000ff">&lt;</font></font><font color="#a31515"><font color="#a31515">quoteQualifiers</font></font><font color="#0000ff"><font color="#0000ff">&gt;</font></font></font></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff" size="2"><span class="m"></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font size="2"><font color="#990000">&#160; typeQuantity (<font color="#2b91af" size="2"><font color="#2b91af" size="2">TypeQuantity</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b>byRoom</b><span class="m"><font color="#0000ff">&quot;&#160;&#160;- предоставляется квота на комнату&#160;</font></span></font></span></div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"><span class="m"><span class="m"><font color="#0000ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;<font color="#000000"><strong>byPerson</strong></font>&quot; -</font></span></span> <span class="m"><span class="m"><font color="#0000ff">на человека.&#160;При проверке&#160;нужно учитывать количество людей. (используется реже)&#160;</font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff" size="2"><span class="m"><span class="m"></span></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><span class="m"></span></span><font color="#0000ff"><span class="m"><span class="m"><font size="2">&#160; <font color="#990000">typeVisit (<font color="#2b91af" size="2"><font color="#2b91af" size="2">TypeVisit</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">byPeriod</font></b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000">&#160;</font><font color="#0000ff"> - квота&#160;задана на указанный день. Квоты должны проверяться на все дни тура</font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;<font color="#000000"><strong>byCheckin</strong></font>&quot; -&#160;<span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff">на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, <font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008">то считается что есть. (используется реже)&#160;</span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"></span></span></font></font></span></font></span></span></font></span></font></span></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#990000">&#160;&#160; status (<font color="#2b91af" size="2"><font color="#2b91af" size="2">StateRowEnum</font></font>) <span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">Modified</font></b></font><font color="#0000ff"><span class="m">&quot; - означает что данная квота должна перетереть значение квоты в базе данных поисковой системы. Статус &quot;<font color="#a31515" size="2"><font color="#a31515" size="2">Created</font></font>&quot; означает что в базе заведена новая квота.&#160;&quot;<font color="#a31515" size="2"><font color="#a31515" size="2">Deleted</font></font>&quot; означает, что квота удалена.</span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m">&#160;&#160; <font color="#990000">release (<font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">14</font></b><span class="m"><font color="#0000ff">&quot; - релиз период -&#160;</font><font color="#0000ff">период, в&#160;течение которого происходит высвобождение номеров из&#160;квоты.</font></span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m">&#160;Используется для&#160;<font color="#990000">quoteType</font><span class="m"><font color="#0000ff">=&quot;</font><font color="#000000"><strong>0</strong></font></span><span class="m"><font color="#0000ff">&quot;. </font></span>Атрибут не отображается, если он равен 0. (если логин пользователя указан в настройке &lt;add key=&quot;showFullQuotasUserNames&quot; value=&quot;username&quot;/&gt;)</span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m"><font color="#0000ff"></font></span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div class="e"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m"><font color="#0000ff">
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160;&#160;&#160; </font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160;&#160; quoteType (<font color="#0000ff" size="2"><font color="#0000ff" size="2">short</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">1</font></b><span class="m"><font color="#0000ff">&quot; - тип квоты. 1 - коммитмент. 0 - аллотмент. (если логин пользователя указан в настройке &lt;add key=&quot;showFullQuotasUserNames&quot; value=&quot;username&quot;/&gt;)</font></span></div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font color="#a31515" size="2"><font color="#a31515" size="2">
 
<p>&#160;&#160; duration (<font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font>) <span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">1</font></b><span class="m"><font color="#0000ff">&quot; - продолжительность услуги.&#160;<span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m">&#160;Атрибут не отображается, если он равен &quot;0&quot;.</span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></span></p>
 
<p></font></font></span><font color="#990000">&#160;&#160; uniqueKey (<font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">1087900_3479</font></b><font color="#0000ff"><span class="m">&quot; - уникальный ключ квоты, по которому&#160;следует обновлять&#160;информацию в базе данных поисковой системы.</span></font></p></div></font></span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font>&#160;</div></div></div></div></div></div></div>
 
 
===Информация по квотам на перелет===
 
 
Для каждого авиаперелета и тарифа формируется следующая информация^
 
 
<[[flightService flightKey]]="552" [[tariffKey]]="330">
 
 
где flightKey - ключ перелета, tariffKey - ключ тарифа.
 
 
<stopsales>
 
    <stopsale dateFrom="2009-05-01" dateTo="2009-05-02" typeVisit="byPeriod" status="Modified" />
 
</stopsales>
 
 
В элементах <stopsale> приведена информация об остановках продаж на период времени с dateFrom по dateTo.
 
 
<quotas>
 
<quota date="2009-05-05" places="125" freeAccess="many" typeQuantity="byPerson" typeVisit="byPeriod"  status="Created" />
 
</quotas>
 
 
Квоты по датам преведены в элементах <quota>.
 
 
* Атрибут date - дата, на которую проверяется квота.
 
* Атрибут places - количество свободных мест (отображается если настройка isShowQuantity установлена в true)
 
* Атрибут freeAccess - в зависимости от результата проверки квот и настроек <quoteQualifiers> может принимать значения "byQuery", "none", "little", "many".
 
 
* Остальные атрибуты всегда остаются такими typeQuantity="byPerson" typeVisit="byPeriod".
 
* Если атрибут status="Deleted", то это означает, что данная квота или стоп сейл были удалены из базы данных.
 
 
Примеры возвращаемых данных:
 
  <flightService flightKey="10823" tariffKey="332">
 
  <quotas>
 
  <quota date="2009-05-28" places="0" freeAccess="byQuery" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
- квота на заданное число не задана.
 
  <quota date="2009-05-31" places="0" freeAccess="none" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
- на заданное число нет мест
 
  <quota date="2009-06-10" places="17" freeAccess="little" typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
- на заданное число есть 17 мест.<br>
 
Если на какое либо число отсутствует квота в разделе <quotas>, то считается что данная услуга также имеет статус "под запрос" (byQuery).
 
 
===Информация по квотам на проживания===
 
 
<hotelService buildingKey="3239" roomTypeKey="1" roomDescriptionKey="20">
 
<quotas>
 
  <quota date="2009-07-15" places="0" freeAccess="byQuery"
 
                typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
  <quota date="2009-07-16" places="0" freeAccess="byQuery"
 
                typeQuantity="byPerson" typeVisit="byPeriod" status="Created" />
 
 
* buildingKey - ключ гостиницы
 
* roomTypeKey -  тип комнаты (HotelRoom.RoomKey)
 
* roomDescriptionKey - категория комнаты (HotelRoom.RoomsCategoryKey)
 
* typeQuantity="byRoom"  - квота предоставляется на комнату
 
* ...."byPerson" - квота предоставляется на человека. При проверке нужно учитывать количество людей. (используется реже)
 
* typeVisit="byPeriod"  - квота задана на указанный день. Квоты должны проверяться на все дни тура
 
* ...."byCheckin" - на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, то считается что есть. (используется реже)
 
 
Примеры возвращаемых данных:
 
 
<hotelService buildingKey="3275" roomTypeKey="79" roomDescriptionKey="51">
 
  <stopsales>
 
    <stopsale dateFrom="2009-08-14" dateTo="2009-08-15" typeVisit="byPeriod" status="Modified" />
 
    <stopsale dateFrom="2009-08-17" dateTo="2009-08-18" typeVisit="byPeriod" status="Modified" />
 
  </stopsales>
 
  <quotas>
 
    <quota date="2009-08-16" places="1" freeAccess="little" typeQuantity="byRoom"
 
                                                        typeVisit="byPeriod" status="Modified" />
 
  </quotas>
 
</hotelService>
 
 
===Расширенная информация о квотах===
 
 
<div class="ExternalClass1B800DA006794EA799862428F09AF6D6">
 
<div>
 
<div style="text-indent:-2em;margin-left:1em" class="c"><font color="#990000"><span class="t">&#160; hotelService</span><span class="t"> buildingKey</span></font><span class="m">=&quot;</span><b>3239</b><span class="m">&quot;</span><span class="t"><font color="#990000"> roomTypeKey</font></span><span class="m">=&quot;</span><b>1</b><span class="m">&quot;</span><span class="t"><font color="#990000"> roomDescriptionKey</font></span><span class="m">=&quot;</span><b>20</b><span class="m">&quot;</span><span class="m">&gt;</span></div>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em" class="c"><span class="m">&#160; &lt;</span><span class="t"><font color="#990000">quotas</font></span><span class="m">&gt;</span></div>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em"><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span><span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quota</font></span> <span class="t"><font color="#990000">date</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-08-15</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> places</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> freeAccess</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>little</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeQuantity</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byRoom</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeVisit</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPeriod</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> status<span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">Modified</font></b></font><font color="#0000ff"><span class="m">&quot;</span></font></span><span class="t"><font color="#990000"> release</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>14</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> quoteType</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>1</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> uniqueKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>1087900_3479</b><font color="#0000ff"><span class="m">&quot;</span><span class="m"> /&gt;</span></font> </div></div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em">&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160; buildingKey -</font><font color="#000000"> ключ гостиницы</font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160; roomTypeKey -&#160; </font><font color="#000000">HotelRoom.<font size="2">RoomKey (если указанный атрибут отсутствует, означает что он равен нулю)</font></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160; roomDescriptionKey - </font><font color="#000000">HotelRoom.<font size="2">RoomsCategoryKey (если указанный атрибут отсутствует, означает что он равен нулю)</font></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2">&#160; Или для перелетов:</font></div>
 
<div style="text-indent:-2em;margin-left:1em">&#160;<span class="m"><font color="#0000ff">&lt;</font></span><font color="#990000"><span class="t">flightService</span><span class="t"> flightKey</span></font><span class="m"><font color="#0000ff">=&quot;</font></span><b>11187</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> tariffKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>226</b><font color="#0000ff"><span class="m">&quot;</span><span class="m">&gt;</span></font>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em" class="c">&#160;<span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quotas</font></span><span class="m"><font color="#0000ff">&gt;</font></span></div>
 
<div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em"><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span> <span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quota</font></span> <span class="t"><font color="#990000">date</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-12-19</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> freeAccess</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>little</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeQuantity</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPerson</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeVisit</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPeriod</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> status</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>Created</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> quoteType</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>0</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> uniqueKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>537322</b><font color="#0000ff"><span class="m">&quot;</span><span class="m"> /&gt;</span></font> </div></div>
 
<div class="e">
 
<div style="text-indent:-2em;margin-left:1em"><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span> <span class="m"><font color="#0000ff">&lt;</font></span><span class="t"><font color="#990000">quota</font></span> <span class="t"><font color="#990000">date</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-12-16</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> freeAccess</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>none</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeQuantity</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPerson</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> typeVisit</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>byPeriod</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> status</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>Deleted</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> quoteType</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>0</b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> uniqueKey</font></span><span class="m"><font color="#0000ff">=&quot;</font></span><b>536065</b><font color="#0000ff"><span class="m">&quot;</span><span class="m"> /&gt;</span></font> </div></div>
 
<div><span class="b"><strong><font color="#ff0000" face="Courier New">&#160;</font></strong></span> <span class="m"><font color="#0000ff">&lt;/</font></span><span class="t"><font color="#990000">quotas</font></span><span class="m"><font color="#0000ff">&gt;</font></span></div>
 
<div><span class="m"><span class="m"><font size="2"><font face="Arial"><font color="#0000ff"><span class="m"><span class="m"><font color="#000000" size="2" face="Arial">&#160; где <font color="#800000">flightKey</font> - ключ перелета,<font color="#800000"> tariffKey </font>- ключ тарифа.</font></span></span></font></font></font></span></span></div></div></div></div></div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="t"><font color="#990000">&#160;<font size="2"> date (<font color="#2b91af" size="2"><font color="#2b91af" size="2">DateTime</font></font>) </font></font></span><font size="2"><span class="m"><font color="#0000ff">=&quot;</font></span><b>2009-08-15</b><span class="m"><font color="#0000ff">&quot; - дата, на которую действует данная квота</font></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff" size="2"><span class="m"></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font color="#0000ff"><font size="2"><font color="#990000">&#160; places (<font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">2</font></b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000"> </font><font color="#0000ff">- количество мест по данной квоте (отображается только в случае если задана настройка <font color="#0000ff"><font color="#0000ff">&lt;</font></font><font color="#a31515"><font color="#a31515">add</font></font><font color="#0000ff"><font color="#0000ff"> </font></font><font color="#ff0000"><font color="#ff0000">key</font></font><font color="#0000ff"><font color="#0000ff">=</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff">isShowQuantity</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff"> </font></font><font color="#ff0000"><font color="#ff0000">value</font></font><font color="#0000ff"><font color="#0000ff">=</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff">true</font></font><font color="#000000">&quot;</font><font color="#0000ff"><font color="#0000ff">/&gt;</font></font>)</font></span></font></font></span></div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font color="#0000ff"><font size="2"><span class="t"></span></font></font></span>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"><font color="#990000">&#160; freeAccess (<font color="#2b91af" size="2"><font color="#2b91af" size="2">QuantityEnum</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b>little</b><span class="m"><font color="#0000ff">&quot; - состояние наличия квот (словами), в зависимости от настроек, указанных в <font color="#0000ff"><font color="#0000ff">&lt;</font></font><font color="#a31515"><font color="#a31515">quoteQualifiers</font></font><font color="#0000ff"><font color="#0000ff">&gt;</font></font></font></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff" size="2"><span class="m"></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font size="2"><font color="#990000">&#160; typeQuantity (<font color="#2b91af" size="2"><font color="#2b91af" size="2">TypeQuantity</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b>byRoom</b><span class="m"><font color="#0000ff">&quot;&#160;&#160;- предоставляется квота на комнату&#160;</font></span></font></span></div>
 
<div style="text-indent:-2em;margin-left:1em"><font size="2"><span class="m"><span class="m"><font color="#0000ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;<font color="#000000"><strong>byPerson</strong></font>&quot; -</font></span></span> <span class="m"><span class="m"><font color="#0000ff">на человека.&#160;При проверке&#160;нужно учитывать количество людей. (используется реже)&#160;</font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff" size="2"><span class="m"><span class="m"></span></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><span class="m"></span></span><font color="#0000ff"><span class="m"><span class="m"><font size="2">&#160; <font color="#990000">typeVisit (<font color="#2b91af" size="2"><font color="#2b91af" size="2">TypeVisit</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">byPeriod</font></b><span class="m"><font color="#0000ff">&quot;</font></span><span class="t"><font color="#990000">&#160;</font><font color="#0000ff"> - квота&#160;задана на указанный день. Квоты должны проверяться на все дни тура</font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;<font color="#000000"><strong>byCheckin</strong></font>&quot; -&#160;<span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff">на заезд. проверка квот идет только на первый день. Если в первый день заезда места есть, <font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008">то считается что есть. (используется реже)&#160;</span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"></span></span></font></font></span></font></span></span></font></span></font></span></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#990000">&#160;&#160; status (<font color="#2b91af" size="2"><font color="#2b91af" size="2">StateRowEnum</font></font>) <span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">Modified</font></b></font><font color="#0000ff"><span class="m">&quot; - означает что данная квота должна перетереть значение квоты в базе данных поисковой системы. Статус &quot;<font color="#a31515" size="2"><font color="#a31515" size="2">Created</font></font>&quot; означает что в базе заведена новая квота.&#160;&quot;<font color="#a31515" size="2"><font color="#a31515" size="2">Deleted</font></font>&quot; означает, что квота удалена.</span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font>&#160;</div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m">&#160;&#160; <font color="#990000">release (<font color="#0000ff" size="2"><font color="#0000ff" size="2">int</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">14</font></b><span class="m"><font color="#0000ff">&quot; - релиз период -&#160;</font><font color="#0000ff">период, в&#160;течение которого происходит высвобождение номеров из&#160;квоты.</font></span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m">&#160;Используется для&#160;<font color="#990000">quoteType</font><span class="m"><font color="#0000ff">=&quot;</font><font color="#000000"><strong>0</strong></font></span><span class="m"><font color="#0000ff">&quot;. </font></span>Атрибут не отображается, если он равен 0. (если логин пользователя указан в настройке &lt;add key=&quot;showFullQuotasUserNames&quot; value=&quot;username&quot;/&gt;)</span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m"><font color="#0000ff"></font></span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></div>
 
<div class="e"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m"><font color="#0000ff">
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160;&#160;&#160; </font></div>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#990000">&#160;&#160; quoteType (<font color="#0000ff" size="2"><font color="#0000ff" size="2">short</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">1</font></b><span class="m"><font color="#0000ff">&quot; - тип квоты. 1 - коммитмент. 0 - аллотмент. (если логин пользователя указан в настройке &lt;add key=&quot;showFullQuotasUserNames&quot; value=&quot;username&quot;/&gt;)</font></span></div>
 
<div style="text-indent:-2em;margin-left:1em"><span class="m"><font color="#a31515" size="2"><font color="#a31515" size="2">
 
<p>&#160;&#160; duration (<font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font>) <span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">1</font></b><span class="m"><font color="#0000ff">&quot; - продолжительность услуги.&#160;<span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"><span class="m">&#160;Атрибут не отображается, если он равен &quot;0&quot;.</span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font></span></p>
 
<p></font></font></span><font color="#990000">&#160;&#160; uniqueKey (<font color="#0000ff" size="2"><font color="#0000ff" size="2">string</font></font>) </font><span class="m"><font color="#0000ff">=&quot;</font></span><b><font color="#000000">1087900_3479</font></b><font color="#0000ff"><span class="m">&quot; - уникальный ключ квоты, по которому&#160;следует обновлять&#160;информацию в базе данных поисковой системы.</span></font></p></div></font></span></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font>
 
<div style="text-indent:-2em;margin-left:1em"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><span class="m"><span class="m"><font size="2"><span class="t"><font color="#0000ff"><font color="#0000ff"><span class="819555611-27102008"><span class="819555611-27102008"><font color="#0000ff"><span class="m"></span></font></span></span></font></font></span></font></span></span></font></span></font></span></span></font>&#160;</div></div></div></div></div></div></div>
 

Текущая версия на 16:26, 13 октября 2017

Введение

TourML - xml-документ, в котором передается информация о турах, ценах, услугах, входящих в эти цены, квотах.

Структурно xml-документ разделен на 3 части:

  • header – заголовок документа
  • references (необязательна) – секция справочников
  • sources – секция цен

Header

Элемент header обязателен, но содержит необязательную для синхронизации информацию о том, кто и с помощью какой реализации сформировал документ.

  • name (обязателен)– строка, содержащая значение, указывающее на владельца документа (но не информации, которая в нем находится). Обычно это название компании, которая формирует документ. Как правило, не используется при синхронизации.
  • uri (необязателен)– уникальный идентификатор владельца документа.


Элемент loadTime содержит следующие данные:

  • timeValue - информация о времени загрузки (не используется)
  • lastKey - для постраничной загрузки максимальный (наибольший) ключ тура, который передается для выгрузки следующей страницы
<header name="ООО МегаТур" uri="www.megatour.com" xmlns="http://tourml.ru/products/2004-04-19">
<loadTime timeValue="100" xmlns="http://www.megatec.ru/tourml/extensions" lastKey="3451235"/>
</header>

References

Элемент references содержит информацию об используемых при описании справочниках. Этот элемент является необязательным, однако, практически всегда используется, так как трудно описать информацию не сославшись как какой-либо справочник. Например, при описании СПО, необходимо ссылаться на страны, валюту и т.д. Таким образом, элементы справочников должны присутствовать в документе практически всегда для сохранения ссылочной целостности.
Элементы справочников, используемые во всем документе, описываются только в данном разделе.
Уникальность первичных ключей элементов справочников поддерживается в пределах элемента references.

В справочниках содержатся следующие разделы:

  • countries – раздел, описывающий страны
  • resorts – раздел, описывающий регионы
  • cities – раздел, описывающий города
  • categories – раздел, описывающий категории звездности отелей и кают
  • hotels – раздел, описывающий отели
  • buildings – раздел, описывающий корпуса отелей
  • airlines – раздел, описывающий авиакомпании
  • airports – раздел, описывающий аэропорты
  • aircrafts – раздел, описывающий авиасуда
  • flights – раздел, описывающий перелеты
  • roomTypes – раздел, описывающий типы номеров
  • roomLocations – раздел, описывающий расположение номера
  • roomViews – раздел, описывающий вид из номера
  • roomCategories – раздел, описывающий уровень комфортности
  • roomDescriptions – используемые комбинации расположения номера, вида из номера и уровня комфортности номера
  • roomAccomodations – раздел, описывающий проживание в номере
  • rooms – используемые комбинации типов номеров, проживания и описания номера (roomDescriptions)
  • serviceClasses – раздел, описывающий типы услуг
  • serviceDescriptions – раздел, описывающий дополнительные услуги
  • serviceDescriptions1– раздел, описывающий дополнительные услуги
  • serviceDescriptions2– раздел, описывающий дополнительные услуги
  • transfers – раздел, описывающий услуги переезда
  • excursions – раздел, описывающий экскурсионные услуги
  • transports – раздел, описывающий транспорт
  • cabines – раздел, описывающий каюты
  • ships – раздел, описывающий морские суда
  • boardings – питание
  • currencies – валюта
  • tariffs – тарифа перелетов
  • tourTypes – типы туров

Пример - справочник городов:

   <countries>
     <country key="29" name="Греция" nameLat="Greece" code="GRC" />
     <country key="375" name="Россия" nameLat="Russia" code="RUS" />
     <country key="99999999" fake="true" stdKey="UNKNOWN" name="UNKNOWN" nameLat="UNKNOWN" code="UNKNOWN" />
   </countries>

У каждого элемента из указанных выше разделов существуют атрибуты:

  • key (обязателен) - ключ в таблице соответствующего справочника.
  • fake (необязателен) - указывает на то, что первичный ключ является фиктивным (если значение true). Даже в том случае, когда первичный ключ является фиктивным, он должен быть уникален. Обычно ключ (key) такой фиктивной записи равен значению 99999999 или 0. Все остальные атрибуты заполняются значением UNKNOWN.
  • stdKey (необязателен) – стандартный ключ элемента справочника. Используется в тех случаях, когда принимающая сторона заранее не имеет данных справочников и не может синхронизировать запись по идентификатору. Реализация может при синхронизации отдавать приоритет атрибуту stdKey перед атрибутами code, name и nameLat, однако вследствие того, что туроператоры не заполняют это поле надлежащим образом, как правило, в нем содержится мусор не имеющий ничего общего со стандартным ключом (ISO кодом).

Также могут включать в себя дополнительные атрибуты типа Name, NameLat, Code и др.

Sources

Элемент sources может содержать информацию о туре.
Информация о ценах содержится в элементах packet, который состоит из 3-х частей:

  • packetHeader - общая информация о туре и СПО
  • services - информация об услугах, включенных в цены
  • prices - цены и даты заезда + ссылки на услуги


packetHeader имеет следующую структуру:

         <packetHeader>
           <tour key="2054" name="Халкидики" tourTypeKey="2" countryKey="29" />
           <spo key="3206" for="byRoom" validFrom="2009-09-25" validTo="2009-10-07" currencyKey="2"
                                           state="Created"  issue="2009-08-03T13:04:06.0000000+04:00">
             <dates />
             <comment />
           </spo>
           <spoInfo xmlns="http://www.megatec.ru/tourml/extensions">
             <priceQuantity>3736</priceQuantity>
           </spoInfo>
         </packetHeader>

  • tour key - ключ тура
  • name - название тура
  • tourTypeKey, countryKey - тип тура и страна - описаны в разделе справочники.
  • spo key - ключ соответствующего СПО
  • for="byRoom" (или "byPerson") - показывает за что указаны цены - за комнату или за человека.
  • validFrom="2009-09-25" validTo="2009-10-07" - промежуток времени, на который распространяется данное СПО
  • currencyKey - валюта, в которой заведены цены - описана в разделе справочники.
  • state="Created" (или "Modified") - статус тура - создан (изменен)
  • issue="2009-08-03T13:04:06.0000000+04:00" - дата и время последнего изменения тура.
  • <dates /> - даты, на которые есть заезды в указанном туре (будет реализовано в следующей версии)
  • spoInfo содержит элемент priceQuantity, в котором указано количество доступных цен для тура.
  • services - информация об услугах, на которые есть ссылки из раздела цен.


Услуги разделены по следующим группам:

Услуга проживания. Например,

<hotelService mealKey="44" roomKey="4648" buildingKey="3413">
  • mealKey - тип питания из справочника boardings
  • roomKey - тип комнаты
  • buildingKey - тип здания

Услуга перелета. Например,

<flightService tariffKey="89" flightKey="631">
  • tariffKey - тариф на перелет из справочника tariffs
  • flightKey - перелет из справочника Flights (описывает город вылета-прилета, авиакомпанию).

Справочник Flights включает в себя элементы FlightTimes (расписания перелетов).

Услуга экскурсий. Например,

<excursionServices transportKey="23" excursionKey="12">
  • transportKey,excursionKey - сслылки на справочники тип транспорта (transports) и экскурсия (excursions)

Услуга трансфера. Например,

<transferService transferKey="1989" transportKey="210">
  • transferKey, transportKey - соответствующие ссылки на справочники transfers и

transports

Услуга круиз. Например,

<cruiseServices shipKey="123" cabineKey="12">
  • shipKey, cabineKey - ссылки на справочники cabines и ships.

Остальные услуги - страховка, виза, доп. услуги и т.д. Например,

<extraService classKey="6" subKey="30037" subKey1="5162" subKey2="17" countryKey="460" cityKey="1">
  • classKey - тип услуги из справочника serviceClasses
  • subKey - описание услуги из справочника serviceDescriptions
  • subKey1 - дополнительное описание 1 из справочника serviceDescriptions1
  • subKey2 - дополнительное описание 2 из справочника serviceDescriptions2
  • countryKey - ссылка на страну из справочника Country
  • cityKey - ссылка на город из справочника City

Внутри элемента каждой такой услуги приведены варианты этой услуги (элемент variant) в зависимости от продолжительности, дня начала предоставления и других параметров

<flightService tariffKey="330" flightKey="2284">
   <variant providerKey="0" dayBeg="1" nights="0" days="0" men="1" allowDelete="true" 
                  allowEditMainService="true" allowEditSubService="true" id="_39839489">
       <info>
           <additionalAttributes allowEditCity="true" allowEditPartner="true" 
                                      xmlns="http://www.megatec.ru/tourml/extensions" />
       </info>
   </variant>
   <variant providerKey="0" dayBeg="1" nights="0" days="0" men="2" allowDelete="true" 
                 allowEditMainService="true"  allowEditSubService="true" id="_39839488">
       <info>
           <additionalAttributes allowEditCity="true" allowEditPartner="true" 
                                      xmlns="http://www.megatec.ru/tourml/extensions" />
       </info>
   </variant>
</flightService>

Элемент variant имеет следующие атрибуты:

  • providerKey - ключ партнера, предоставляющего услугу (не используется - возвращается 0)
  • dayBeg - день начала предоставления услуги
  • nights - продолжительность услуги в ночах
  • days - продолжительность услуги в днях
  • men - количество человек, на которое расчитана данная услуга
  • id - ключ услуги, на который ссылается serviceSet из раздела prices
  • allowDelete - флаг, показывающий можно ли удалить данную услугу
  • allowEditMainService - флаг, показывающий можно ли изменять услугу
  • allowEditSubService - флаг, показывающий можно ли изменять SubService (подчиненную услугу) у данной услуги

У элемента variant существует вложенный опциональный элемент info, в который выводится дополнительные атрибуты услуги (если хотя бы одна из них true):

  • allowEditCity - у услуги возможно редактирование города
  • allowEditPartner - у услуги возможно редактирование партнера, предоставляющего услугу
  • allowEditDuration - у услуги возможно редактировать продолжительность
  • Invisible - флаг, показывающий что услуга скрытая (сейчас этот флаг не используется, поскольку скрытые услуги отсеиваются на этапе выгрузки из базы)

Как для атрибутов у variant так и для атрибутов info справедливо следующее правило: если какой-то из флагов имеет значение false, то он не возвращается в ответе. То есть

<additionalAttributes allowEditCity="true" allowEditPartner="true" xmlns="http://www.megatec.ru/tourml/extensions" />

означает:

  • allowEditCity = true
  • allowEditPartner = true
  • allowEditDuration = false
  • Invisible = false

prices - раздел, в котором сгруппированы обсчитанные услуги и указаны цены на пакеты из этих услуг, в зависимости от дат заезда.

В элементе serviceSet в атрибуте ids указан список id услуг пакета (ключей элементов variant, описанных выше).

<serviceSet ids="_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441">
   <price gross="3586">
       <date key="67222503" from="2009-09-25" to="2009-09-25" />
       <date key="67222504" from="2009-09-27" to="2009-09-27" />
   </price>
   <price gross="3756">
       <date key="67222793" from="2009-09-29" to="2009-09-29" />
   </price>
</serviceSet>

В элементах price указаны цены (gross) за набор услуг пакета. Внутри элемента price вложены элементы data, имеющие следующие атрибуты:

  • key - ключ обсчитаной цены
  • from, to - промежуток дат, на который распространяется эта цена.

При проверке бронирования данный ключ + дата из промежутка from, to должны передаваться в качестве параметров.

Таким образом, это означает, что пакет с ключем 67222503 на 2009-09-25 стоит (предварительная цена) 3586 (валюта берется из описания СПО) и состоит из следующих услуг: "_2000051 _2000056 _2000061 _2000066 _2000071 _2000076 _2000081 _2000441".