Web-сервисы: Сервис для работы с документами по путевке

Материал из Megatec
Перейти к: навигация, поиск

Версия статьи от 21-07-2016.

Введение

Данный модуль предназначен для выгрузки отчетов и файлов, прикрепленных к путевке. Файлы можно просматривать и распечатывать.

Установка

Для установки web-сервиса нужно создать отдельную директорию, например, ReservationDocuments (далее в примерах будет использоваться данное название каталога) в корневом каталоге IIS (по умолчанию c:/inetpub/wwwroot) и выложить туда распакованные файлы из архива ws-reservationDocuments-9.2.XX.XXXXX.zip. В управлении IIS необходимо создать виртуальный каталог для папки ReservationDocuments.

Создание виртуального каталога

По умолчанию корневым каталогом IIS является C:/Inetpub/wwwroot. Для создания виртуального каталога для приложения находящегося в этом каталоге нужно выполнить следующие действия:

  • 1. Зайти в Пуск (Start) – Панель управления (Control Panel) – Администрирование (Administrative Tools)


857.PNG

  • 2. Запустить Internet Information Services (IIS) Manager


858.PNG

  • 3. В открывшемся дереве каталогов выбрать сайты (Web Sites) – Default Web Site (либо другой сайт, на который планируется установить приложение). В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать пункт «Преобразовать в приложение».


859.PNG

Подключение к базе данных ПК «Мастер-Тур»

В файле web.config, расположенном в папке ReservationDocuments, в которую установлен web-сервис «Сервис работы с документами по путевке», пропишите необходимые параметры подключения (курсивом выделены значения, которые необходимо ввести). Строка подключения к базе данных ПК «Мастер-Тур»:

<add key = "connectionString" value = "Data Source=ip-адрес сервера базы данных ПК Мастер-тур;
Initial Catalog=название базы данных ПК Мастер-тур;User ID=логин пользователя ПК Мастер-тур;Password=пароль пользователя ПК Мастер-тур"/>

Базовый алгоритм работы с сервисом

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

  • Во-первых, необходимо получить список доступных для печати документов по путевке. Для этого нужно вызывать метод получения информации о возможных выгрузках. В ответе сервиса придет список описаний документов, в каждом из которых будет указан тип документа: файл или отчет.
  • Для выгрузки какого-либо документа необходимо вызвать соответствующий его типу метод. Для файла - метод получения одного файла, для отчета - метод получения одного отчета. Входными параметрами данных методов являются данные, полученные при вызове метода получения информации о доступных выгрузках, а выходными - файл или отчет.

Настройка отображения отчетов

Настройки для подключения отчетных форм задаются в файле web.config, находящемся в папке MasterWebStandard, и в файле web.config, находящемся в папке ReservationDocuments. Данные настройки регулируют отображение ссылок на печать отчетов и определяют условия, необходимые для печати.

Все секции с настройками, прописанными в файле web.config основного приложения, должны быть прописаны в файле web.config самого сервиса с теми же значениями.

Для включения механизма необходимо добавить в конфигурационный файл web.config секции:

<configSections>
…
<sectionGroup name="megatec.web">
<section name="reportSettings" type="Megatec.Configuration.WebReportsSection, Megatec.Configuration"/>
</sectionGroup>
…
</configSections>
<megatec.web>
<reportSettings controlAppearance="LinkButton" printReportPage="ReportPerpetuum.aspx" cssClass="reportLink">
<reports>
</reports>
</reportSettings>
</megatec.web>

Тег <reportSettings controlAppearance="LinkButton" printReportPage="ReportPerpetuum.aspx" cssClass="reportLink"> содержит параметры:

  • controlAppearance - внешний вид контрола для перехода к печати отчета (ссылка или кнопка; принимают значения: LinkButton или PushButton);
  • cssClass - CSS-класс контрола для перехода к печати отчета (класс стиля в файле styles.css; например, кнопки);
  • autoChangeOrderStatusKey – ключ статуса путевки, на который изменится текущий статус, после того, как все отчеты, отмеченные параметром needPrintForAutoChangeStatus, будут распечатаны;
  • autoChangeIsOutDocKey – отметка о выдаче документов, которая присваивается заявке после того, как все отчеты, отмеченные параметром needPrintForAutoChangeIsOutDoc, будут распечатаны;
  • allFilesMustBePrintedToAutoChangeStatus – параметр, при котором статус заказа и документов меняется только после печати всех файлов, прикрепленных к путевке, и всех отчетов, отмеченных параметрами needPrintForAutoChangeStatus и needPrintForAutoChangeIsOutDoc. Возможные значения: true, false. Статус заказа определяется параметром autoChangeOrderStatusKey, статус документов - autoChangeIsOutDocKey.

Теги для подключения отчетов имеют вид:

<add code="OTCHET" title="Отчет" guid="00000-0000-0000-0000-0000000000" containServices="3" globalOrderStatusKeys="7" payed="true"
hideOnFalseConditions="true"/>

Обязательные параметры:

  • code - уникальный ключ отчета (любой, но уникальный в рамках конфига). Например, code="DogovorSTD";
  • title - название отчета, отображаемое в web. Например, title="Распечатать договор";
  • guid - идентификатор отчета в БД. Например, guid="2DF35251-E08F-480F-B870-364AA866F0FB".

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

  • reportFormat - формат вывода отчета (html, pdf, rtf, xls). Например, reportFormat="pdf";
  • message - сообщение, выдаваемое при невозможности печати отчета. Например, message="Печать отчета невозможна: не выполнены условия печати отчета";
  • containServices - условие по необходимости наличия классов услуг в путевке. Возможность печатать отчет будет только для путевок, в которых есть классы услуг, перечисленные в настройке. Наличие услуг можно задавать как 1-2-3, где 1 - serviceKey, 2 - code, 3 - subcode1; использовать можно в любых комбинациях, Например, containServices="1-0-0,3-3224,5"). Можно также перечислить через запятую только ключи классов услуг без их детализации. Например, containServices ="1,3,5". В данном случае печать отчета будет доступна только для путевок, в которых есть услуги авиаперелет, отель, виза.
  • countryKeys - условие печати отчета по стране. Параметрами настройки являются ключи стран, которые перечисляются через запятую. При наличии настройки печать отчета возможна только для стран, ключи которых в ней указаны. Например, countryKeys="89,90,222";
  • orderStatusKeys - условие по статусу путевки. В настройке перечисляются через запятую ключи статусов путевки, при которых доступна печать отчета. Например, orderStatusKeys ="7,16". Если для одного отчета использовать обе настройки (globalOrderStatusKeys и orderStatusKeys), отчет распечатается только для путевки, у которой статус будет из настройки orderStatusKeys, глобальный статус которого указан в globalOrderStatusKeys;
  • globalOrderStatusKeys - условие по глобальному статусу путевки; В настройке перечисляются через запятую ключи глобальных статусов путевки, при которых доступна печать отчета. Например, globalOrderStatusKeys ="7";
  • payed - условие, по которому путевка должна быть полностью оплачена. Настройка может принимать следующие значения: true – настройка включена, печать отчета возможна только по оплаченным путевкам; false или отсутствие настройки – настройка выключена. Например, payed ="true";
  • servicesThatMustBeApproved - условие, определяющее, какие классы услуг в путевке должны быть подтверждены к печати. Например, servicesThatMustBeApproved ="1". В данный момент данная настройка работает только для класса услуг авиаперелет. Признак Разрешен к печати проставляется для рейсов в экране «Загрузка услуг» ПК «Мастер-Тур»;
  • priceTourNameLike - условие по названию тура для web. В данной настройке указывается строка из названия тура. Отчет можно будет распечатать только для путевок по турам, в название в web которых входит данная строка. Настройка чувствительная к регистру букв в строке. Например, priceTourNameLike ="Англ";
  • additionalUrl - дополнительные параметры, которые можно передавать в отчет. Например, additionalUrl="&Language=RUS";
  • hideOnFalseConditions - скрывать ссылку на отчет, если условия печати не выполнены. Настройка может принимать следующие значения: true – настройка включена, ссылка на отчет скрывается, если условия печати отчета не выполнены; false или отсутствие настройки – настройка выключена, ссылка на отчет не скрывается. Например, hideOnFalseConditions="true";
  • userType - тип пользователя, которому доступна печать отчета (0 - агент; 1 - частник);
  • staticUrl - статическая ссылка на файл. С помощью этой настройки в экране OrderInfo включается возможность печати не отчета, а статического файла, который в ней указан. В качестве параметра в настройке нужно указывать ссылку на файл. Например, staticUrl="http://crmportal.megatec.ru/Portals/0/MT/Report/Doc/Примеры%20профилей%204008/ПримерV1.xls";
Важно! В строке подключения для файла не нужно задавать параметр GUID. Все остальные параметры работают также, как и в случае
с отчетом.
  • target - открывать в новом или текущем окне (_blank – в новом окне, _self – в текущем);
  • additionalEmail - e-mail адрес, на который будет отправляться копия отчета;
Данная возможность доступна только для отчетов в формате .pdf
  • timeCheckServiceKey - ключ класса услуги для проверки возможности печати отчета по временным рамкам. Например, для класса авиаперелет: timeCheckServiceKey ="1";
  • timeCheckInterval - временной интервал в часах, отсчитываемый назад от времени начала предоставления первой услуги в путевке с классом, указанным в настройке timeCheckServiceKey, позднее которого не разрешается печать отчётов. Например, timeCheckInterval ="24". Т.е. отчет нельзя будет распечатать позже, чем за 24 часа до начала первой услуги авиаперелет в путевке;
  • timeCheckHourMinute - час и минута за день до начала предоставления первой услуги в путевке с классом, указанным в настройке timeCheckServiceKey, позднее которого не разрешается печать отчётов. Время может быть указано в формате HH-mm, HH.mm или HH:mm. Например, timeCheckHourMinute ="20:15". Если в строке подключения отчета указаны обе настройки (timeCheckInterval и timeCheckHourMinute), то настройка timeCheckInterval более приоритетна, чем timeCheckHourMinute;
  • timeFromCheckServiceKey – ключ класса услуги для проверки возможности печати отчета раньше определенной даты. Берется дата первой по времени услуги этого класса из путевки, от нее отсчитывается назад количество часов, заданных настройкой timeFromCheckInterval и получается дата и время, раньше которых запрещена печать отчета. В случае авиаперелета время отсчитывается от времени вылета, в случае услуги, у которой есть только дата начала, время отсчитывается от 00:00 этой даты. Если значение ключа равно нулю, то время отсчитывается от даты начала тура;
  • timeFromCheckInterval – количество часов, отсчитываемое назад от события, определяемого настройкой timeFromCheckServiceKey, ранее которого не разрешается печать отчетов;
  • timeFromCheckHourMinute – альтернатива настройке timeFromCheckInterval (имеет меньший приоритет). Час и минута в день, определяемый настройкой beginPrintDayInterval, до события, определяемого настройкой timeFromCheckServiceKey, ранее которого запрещена печать отчетов (может быть указан в формате HH-mm, HH.mm или HH:mm);
  • beginPrintDayInterval – используется в связке с timeFromCheckHourMinute и определяет количество дней до события, определяемого настройкой timeFromCheckServiceKey, ранее которого запрещена печать отчетов. Значение по умолчанию – 1;
  • excludeWeekend – исключает выходные при отсчете дней до событий, определяемых настройками TimeCheckServiceKey и TimeFromCheckServiceKey. Используется в связке с настройками timeFromCheckHourMinute и beginPrintDayInterval. Значение по умолчанию – false;
  • needPrintForAutoChangeStatus - необходимость печати отчета для изменения статуса путевки (true – отчет должен быть распечатан для изменения статуса путевки на значение указанное в autoChangeOrderStatusKey; false – печать отчета не влияет на изменение статуса путевки);
  • needPrintForAutoChangeIsOutDoc – необходимость печати отчета для изменения статуса документов путевки. Настройка актуальна только при включенной настройке autoChangeIsOutDocKey и имеет следующие значения: true – отчет должен быть распечатан для изменения статуса документов путевки на значение указанное в autoChangeIsOutDocKey; false или отсутствие настройки – печать отчета не влияет на изменение статуса путевки. Например, autoChangeIsOutDocKey ="true";
  • permittedPartners – печать отчета разрешена, когда в данную настройку прописан ключ филиала (партнера) Ведущего менеджера по путевке. Филиалы перечисляются через запятую. Например, permittedPartners ="1,1760";
  • serviceStatusKeys – список статусов услуг, через запятую, при которых можно печатать отчёт. Например, serviceStatusKeys ="0,2";
  • printExcludedServiceKeys – определяет ключи классов услуг через запятую, исключаемых из проверки в настройке serviceStatusKeys. Например, printExcludedServiceKeys ="10,12";
  • documentSuperStatus – определяет статус документов, при котором игнорируются настройки печати отчета по статусу путевки (globalOrderStatusKeys или orderStatusKeys), по оплате (Payed) и по наличию рейсов в путевке с признаком Разрешен к печати (servicesThatMustBeApproved). Например, documentSuperStatus ="8";
  • possibleUnderpayment – максимально возможная недоплата по путёвке. Условие срабатывает только при включенной настройке Payed. Исчисляется в национальной валюте. Пересчёт в нац. валюту из валюты тура осуществляется на дату создания путёвки. Например, если национальная валюта – рубли – указывается целое кол-во рублей (без копеек) - possibleUnderpayment ="100";
  • documentStatuses – ключи статусов документа (DocumentStatus), при которых возможна печать данного отчета. Ключи перечисляются через запятую. Например, documentStatuses ="2,5";
  • exludedAgents – ключи партнеров через запятую, для которых запрещена печать отчета;
  • showInformationConfirmation - определяет, нужно ли показывать информационное сообщение перед печатью отчета. Возможные значения: true - показывать сообщение, false - не показывать сообщение. Текст сообщения задается в файле printReportConfirmMessage.txt, который находится в папке templates ПК «Мастер-Web»;
  • approvedForPrintCheckingType - определяет тип проверки подтвержденных к печати услуг. Условие срабатывает только при включенной настройке servicesThatMustBeApproved и имеет следующие значения: -1 – не проверять (по сути отключается проверка servicesThatMustBeApproved); 0 или отсутствие настройки – все услуги должны быть подтверждены (для всех авиаперелетов в путевке должен быть проставлен признак Разрешен к печати); 1 – хотя бы одна услуга должна быть подтверждена (хотя бы один авиаперелет в путевке должен иметь признак Разрешен к печати.
Важно! Данная настройка в файле web.config задается не в строке подключения отчета, а в общих настройках  (секция appSettings).
Например, <add key="approvedForPrintCheckingType" value="1"/>
  • denyPrintBeforeTourEnd – запретить печать отчета до окончания тура. Настройка может принимать следующие значения: true – настройка включена, печать отчета возможна только после завершения тура; false или отсутствие настройки – настройка выключена, отчет можно распечатать независимо от дат тура. Например, denyPrintBeforeTourEnd ="true";
  • containServicesWithPartner - настройка, определяющая партнеров, по которым может быть распечатан отчет только при наличии в путевке услуг данных партнеров. В настройке прописываются ключи партнеров через запятую. Например, containServicesWithPartner="5,6,7".
  • allowedPartnerGroups - настройка, определяющая каким группам партнеров разрешено печатать отчет. В настройке прописывается значение поля og_id из таблицы [ObjectGroups]. Например, allowedPartnerGroups="2".
  • permittedPartnerGroups - настройка, определяющая каким группам партнеров запрещено печатать отчет. В настройке прописывается значение поля og_id из таблицы [ObjectGroups]. Например, permittedPartnerGroups="3".

Для подключения стандартных отчетов «Ваучер», «Электронный билет», «Счет» и «Страховка» в теге <reports/> необходимо добавить секции:

<add code="VCHRSTD" title="Распечатать Ваучер" guid="2DF35251-E08F-480F-B870-364AA866F0FB" containServices="3"
globalOrderStatusKeys="7" payed="true" hideOnFalseConditions="true"/>
<add code="EKTKSTD" title="Распечатать Электронный билет" guid="41969A74-4303-4732-8EBB-E2870D43AB9A" containServices="1" 
globalOrderStatusKeys="7" payed="true" additionalUrl="&Language=RUS"/>
<add code="ACCNTSTD" title="Распечатать Счет" guid="55F8A40E-0C9D-4522-B335-541DD09601D0" globalOrderStatusKeys="7" userType="0" />
<add code="INSURSTD" title="Распечатать Страховку" guid="75165C7F-5BA5-4769-B215-898577D1376E" containServices="6" 
globalOrderStatusKeys="7" payed="true" reportFormat="pdf" userType="1" />

Подключение других отчетных форм осуществляется таким же образом, как и подключение стандартных отчетов.

Для того, чтобы отчет корректно работал в ПК Мастер-Web, он должен быть определенным образом обработан. 
В данный момент можно подключать некоторые отчеты серий 4001, 4020. А также есть возможность подключения отчетов
серии 4030 "Агентский договор" (см. Подключение отчета 4030 "Агентский договор").

Методы web-сервиса

Информация о возможных выгрузках

Метод доступен GET запросом по пути: Адрес сервиса/Documents/Код путевки.
Например, http://localhost/ReservationDocuments/Documents/EN50915999, где:

Входные параметры

  • Код путевки

Выходные параметры

Набор описаний документов (тег <DocumentDescription>)

  • Тип документа (файл или отчет, тег <Type>)
  • Название документа (тег <Name>)
  • Код документа (используется только для отчетов, тег <Code>)
  • GUID документа (тег <GUID>)

Пример ответа метода:

 <ArrayOfDocumentDescription xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/0/Megatec.Web.Services.ReservationDocuments.Models">
  <DocumentDescription>
     <Code>ACCNTFL</Code>
     <GUID>A5FCA95D-CD56-4A79-A4CF-F10C50FDC2DB</GUID>
     <Name>ФЛ Счет-Подтверждение Клуб</Name>
     <Type>Report</Type>
  </DocumentDescription>
  <DocumentDescription>
     <Code>ACCNT</Code>
     <GUID>730AF135-E879-439D-B2D6-0A8AF619BB33</GUID>
     <Name>Счет-Подтверждение Клуб</Name>
     <Type>Report</Type>
  </DocumentDescription>
  <DocumentDescription>
    
     <GUID>f6f87c77-7177-4648-b983-4b1f66767497</GUID>
     <Name>Счет-подтверждение.pdf</Name>
     <Type>File</Type>
  </DocumentDescription>
  <DocumentDescription>
    
     <GUID>61075356-4e3d-4a8d-87d7-1f4853f7916d</GUID>
     <Name>Тестовый_файл.docx</Name>
     <Type>File</Type>
  </DocumentDescription>
 </ArrayOfDocumentDescription>

Получение одного файла

Метод выгрузки файла доступен GET запросом по пути: Адрес сервиса/Documents/file/Guid файла.
Например, http://localhost/ReservationDocuments/Documents/file/61075356-4e3d-4a8d-87d7-1f4853f7916d, где:

Входные параметры

  • GUID файла

Выходные параметры

  • Выходной поток с файлом

Получение одного отчета

Метод доступен GET запросом по пути: Адрес сервиса/Documents/report/Код путевки/GUID отчета/Код отчета.
Например, http://localhost/ReservationDocuments/Documents/report/EN50915999/730AF135-E879-439D-B2D6-0A8AF619BB33/ACCNT, где:

Входные параметры

  • Код путевки
  • GUID отчета
  • Код отчета

Выходные параметры

  • Выходной поток с файлом