Web-сервисы: Сервис для работы с документами по путевке
Версия статьи от 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)
- 2. Запустить Internet Information Services (IIS) Manager
- 3. В открывшемся дереве каталогов выбрать сайты (Web Sites) – Default Web Site (либо другой сайт, на который планируется установить приложение). В открывшемся списке найти папку, для которой нужно создать виртуальный каталог, кликнуть по ней правой кнопкой мыши и выбрать пункт «Преобразовать в приложение».
Подключение к базе данных ПК «Мастер-Тур»
В файле 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, где:
- http://localhost/ReservationDocuments - адрес сервиса
- 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, где:
- http://localhost/ReservationDocuments - адрес сервиса
- 61075356-4e3d-4a8d-87d7-1f4853f7916d - GUID файла, полученный из ответа метода получения информации о возможных выгрузках (тег <GUID>)
Входные параметры
- GUID файла
Выходные параметры
- Выходной поток с файлом
Получение одного отчета
Метод доступен GET запросом по пути: Адрес сервиса/Documents/report/Код путевки/GUID отчета/Код отчета.
Например, http://localhost/ReservationDocuments/Documents/report/EN50915999/730AF135-E879-439D-B2D6-0A8AF619BB33/ACCNT, где:
- http://localhost/ReservationDocuments - адрес сервиса
- EN50915999 - код путевки
- 730AF135-E879-439D-B2D6-0A8AF619BB33 - GUID отчета, полученный из ответа метода получения информации о возможных выгрузках (тег <GUID>)
- ACCNT - код отчета, полученный из ответа метода получения информации о возможных выгрузках (тег <Code>)
Входные параметры
- Код путевки
- GUID отчета
- Код отчета
Выходные параметры
- Выходной поток с файлом