Академический Документы
Профессиональный Документы
Культура Документы
Introduo
Este documento trs os passos necessrios para a implementao de um sistema de criao e modificao de reservas atravs da utilizao da API de WebServices do sistema NewSkies da Navitaire. Os servios mais comuns esto detalhados neste documento em forma de instrues passo-a-passo, acompanhadas de exemplos de cdigo ilustrando a implementao de cada passo. Os exemplos mostram como implementar as funcionalidades bsicas do sistema e tambm o padro de desenvolvimento que deve ser adotado na criao das aplicao que utilizam os WebServices do NewSkies. Este documento inclu as seguintes funcionalidades: - Criao de Bookings - Recuperao de Bookings - Modificao de Bookings
Os Web Services so descritos por um arquivo WSDL(Web Services Description Language Linguagem de Descrio de Servios Web) nico que acessado (disponvel uma vez que sua conta esteja definida por Operaes) atravs de uma URI como:
Verso 1.0
O padro bsico de uso para a API instanciar um API Manager Client que agrupa logicamente um conjunto de APIs para uma rea funcional. Por exemplo, o grupo da API BookingManagerClient quem cria ou modifica PNRs. Para programadores familiarizados com a Orientao a Objetos, a API Manager Client (referenciado como manager ou managerClient) similar a uma classe e todas as APIs so os mtodos dessa classe. Acessar uma API similar a fazer uma chamada a um mtodo ou funo. Todas APIs do New Skies recebem parmetros. Estes parmetros de entrada so coletados solicitando um usurio ou coletando-o do sistema. Uma vez que os dados so coletados, os parmetros de uma dada API so preenchidos e a API , ento, chamada. Estes parmetros de entrada formam o respectivo objeto de requisio de entrada necessrio para invocar a API. Por exemplo, a Sell API do BookingManagerClient precisa de um objeto SellRequest como um parmetro de entrada. O objeto SellRequest agrupa vrios dados de entrada em um objeto. Se no existirem excees, a API retorna um objeto de resposta o qual contem um agrupamento de dados dos resultados da operao da API. Nota: O cdigo de exemplo fornecido neste documento para C# .Net. O uso da API segue um padro. Uma vez que se tenha entendido tal padro, todo uso da API similar. Um client instanciado para obter acesso API e parmetros so preenchidos com os dados necessrios. Na maioria dos casos um objeto de requisio deve ser instanciado a preenchido utilizando as propriedades fornecidas pelo mesmo. As colees so mantidas como arrays utilizando as propriedades para preencher os valores de elementos individuais. A API invocada e o resultado processado conforme o necessrio. Nas descries de tarefa que seguem, uma tarefa descrita com uma seqncia de passos utilizados para conclu-la. Alguns passos so opcionais e outros so obrigatrios. Isso est comentado no passo em questo. As tarefas descritas neste documento incluem os passos necessrios para realizar uma tarefa juntamente com partes de cdigo de exemplo mostrando como executar cada passo. A tecnologia subjacente W3C compliant. O protocolo de comunicao dos Web Services do New Skies atravs de mensagens SOAP. Os exemplos mostrados utilizando um cliente .NET permitem abstrao das mensagens SOAP Azul Linhas Areas Brasileiras WebServices API NewSkies Verso 1.0
Nota: Nesta release do New Skies o sistema no garante todas as configuraes dos perfis definidos no Sky Utilities. de responsabilidade da aplicao, que est utilizando a API, aplicar as regras estabelecidas para um perfil. Por exemplo, se um perfil de usurio inclui configuraes para Booking Contact Information e o campo Title definido como obrigatrio, responsabilidade da aplicao assegurar-se que um ttulo (Title) seja includo nos dados do contato na requisio que o inclui.
Nota: Devido as APIs de Web Services do New Skies proverem extensiva funcionalidade, isso dita um contrato WSDL complexo. altamente recomendado utilizar uma ferramenta de gerao de Proxy automatizada para estabelecer uma base para aumentar clientes que consomem as APIs dos Web Services. A experincia tem mostrado que desenvolver manualmente clientes que consomem Web Services pode ser trabalhoso e suscetvel a erros. Muitos problemas levantados por clientes que desenvolvem o Proxy manualmente esto relacionados falta de elementos XML ou erro na definio dos mesmos, utilizao incorreta de namespaces e resultados inesperados. Gerar um Proxy utilizando uma ferramenta como .NET ou Wsdl2Java trata estes problemas corretamente sem utilizar desenvolvedores e tempo, o que resulta num custo mais efetivo do ciclo de desenvolvimento e numa entrega mais rpida.
Verso 1.0
Logon
Prov uma sesso para uso do servio posterior e estabelece um perfil para a sesso. Para utilizar os Web Services, deve-se estabelecer uma sesso com uma identificao e senha de login especficos. O ID e senha do usurio concedem ao mesmo, direitos especficos para os Web Services baseado no perfil para a funo de trabalho. Por exemplo, um Agente de Reserva pode ter direitos a fazer uma reserva, alterar certas reservas ou configurar a conta de um cliente. Um supervisor, por outro lado, pode ter direitos de alterar o preo de uma passagem ou manualmente autorizar um crdito em carto. O objeto SessionContext retornado como parte do LogonResponse ser um parmetro necessrio em todas as chamadas subseqentes um mtodo do Web Service. O SessionContext s pode ser criado pelo Logon. O Logon estabelecer um booking state (estado do agendamento) para o usurio que est efetuando o login. Importante Reutilizando o SessionContext O servio de Logon um servio muito pesado. Ele realiza vrios acessos ao banco de dados e armazena dados em cache para uso futuro, por isso altamente recomendado que o SessionContext seja reutilizado para mltiplas tarefas. No necessrio efetuar o Logon para cada tarefa realizada. As sesses expiraro, se no forem utilizadas, por timeout e os recursos alocados para as sesses no estaro disponveis at a sesso expirar ou at que o Logout seja realizado. O Logout liberar os recursos alocados para a sesso e recomendado que a aplicao chame o Logout quando a sesso no for mais necessria. Os exemplos inclusos neste documento incluem os passos para Logon e Logout mostrarem que um SessionContext necessrio para realizar uma tarefa. No significa que um Logon seria realizado antes de cada tarefa. Para uma dada tarefa o SessionContext pode ser um que foi criado anteriormente como parte de outras tarefas. Passos: Criar uma instncia de um SessionManagerClient que ser utilizado para interagir com a API.
Verso 1.0
Fluxograma do Logon
Verso 1.0
Incio
Instanciar SessionManagerClientSoap
Falha no logon
No
OK
Sim
Receber LogonResponse
Armazenar SessionContext
Fim
Alterar Senha
ChangePassword permite a alterao de senhas programaticamente. ChangePassword no retorna reposta alguma nem lana uma exceo caso a senha no seja alterada. A exceo indica por que a senha no foi alterada. Nota: Um objeto SessionContext no necessrio por que o AgentName e o Password do agente so necessrios para identificar o agente que est alterando sua prpria senha. O exemplo abaixo mostra um exemplo simples de uso do ChangePassword.
String String String String agentname = "jsmith"; password = "P@ssword4"; domain = "def"; newPassword = "P@ssword5";
sessionAPI = new SkyChannelAPI.SessionManagerClientSoap(); SkyChannelAPI.LogonRequest logonRequest = new SkyChannelAPI.LogonRequest(); logonRequest.AgentName = agentname; logonRequest.DomainCode = domain; logonRequest.Password = password; logonRequest.SystemType = SkyChannelAPI.SystemType.WebServicesAPI; logonRequest.ChannelType = SkyChannelAPI.ChannelType.API; logonRequest.LocationCode = String.Empty; logonRequest.TerminalInfo = String.Empty; logonRequest.RoleCode = String.Empty; sessionAPI.ChangePassword(logonRequest, newPassword);
Fluxograma do ChangePassword
Obter identificadores e dados do usurio Instanciar e popular LogonRequest
Incio
Instanciar SessionManagerClientSoap
Tratar exceo
Sim
Exceo
No Fim
Verso 1.0
Verso 1.0
Logout
O Logout encerra uma sesso existente. Qualquer dado no cometido ao banco de dados ser perdido. Passos: Utilize a instncia existente de um SessionManagerClient que utilizado para interagir com a API. (opcional) Faa uma chamada ao servio de Logout fornecendo o objeto SessionContext obtido no Logon.
sessionAPI.Logout(sessionContext);
Fluxograma do Logout
Incio
Fim
Verso 1.0
BOOKING SERVICES
Introduo s tarefas de Agendamento. As tarefas de Booking operam nas reservas e dados relacionados. Um BookingManagerClient prov acesso a estas APIs. O SessionContext obtido do Logon necessrio para estas APIs. Nota: Quando um nmero de vo informado necessrio que esteja justificado a direita para quatro dgitos. Nota: Na requisio, o elemento DistributeToContacts definido como false. Quando definido como false o sistema no envia notificaes. As duas condies que seguem devem ser atendidas antes que uma notificao seja enviada: 1. O DistributeToContacts deve ser definido como true. 2. Nenhum dinheiro pode ser devido no agendamento.
Tarefas Iniciais
Verso 1.0
[Opcional] Obter disponibilidade Obtm a disponibilidade de um vo e a informao da tarifa para um mercado. No atualiza o estado do agendamento. Nota: O Journey Data Market dirio e depende da propriedade DOW (Day of Week) do pedido de disponibilidade. Por exemplo, 14/02/06 a 24/02/06 e DOW definido para Tera-feira ter dois Journey Data Market se dia 14 for uma Tera-feira.
AvailabilityFilter pode ser definido para indicar se vos agendados devem ser retornados. Journey Data Market por dia e depende da propriedade DOW do pedido de disponibilidade. Ex: 14/02/06 a 24/02/06 e DOW definido para Tera-feira ter dois Journey Data Market se dia 14 for uma Tera-feira. AvailabilityFilter pode ser definido para indicar se vos agendados devem ser retornados. Dados da Station so providos para a API pela aplicao.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SkyChannel.AvailabilityRequest availabilityRequest = new AvailabilityRequest(); PaxPriceType[] priceTypes = new PaxPriceType[1]; priceTypes[0] = new PaxPriceType(); priceTypes[0].PaxType = "ADT"; availabilityRequest.BeginDate = DateTime.Parse("2006-08-25T00:00:00"); availabilityRequest.EndDate = DateTime.Parse("2006-08-25T00:00:00"); availabilityRequest.ArrivalStation = "SLC"; availabilityRequest.DepartureStation = "JFK"; availabilityRequest.FlightType = FlightType.All; availabilityRequest.CurrencyCode = "USD"; availabilityRequest.PaxPriceTypes = priceTypes; availabilityRequest.Dow = DOW.Daily; //optional filters availabilityRequest.FlightNumber = "1115"; availabilityRequest.CarrierCode = "1L"; SkyChannel.AvailabilityResponse availabilityResponse = bookingAPI.GetAvailability(sessionContext, availabilityRequest);
[Opcional] Preo do Itinerrio Fixa o preo de um itinerrio completo, registra taxas, cargas, impostos e preos utilizando os parmetros fornecidos a respondendo o preo total incluindo todas as taxas, cargas e impostos. Nota: PriceItinerary pode incluir FareTypes que foram previamente configurados no Sky Utilities. Se no so inclusos FareTypes, deixe o campo definido como null. Nota: O cdigo de exemplo precisa tambm marcar priceItinRequest.SSRResquests[0].FlightDesignator quando ele est marcando o priceitinrequest. Se o FlightDesignator for branco, ento o agendamento da viagem no pode ser encontrado.
Verso 1.0
Muitos dos dados utilizados em Price Itinerary podem ser copiados de uma resposta do GetAvailability.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SkyChannel.PriceItineraryRequest priceItinRequest = new PriceItineraryRequest(); priceItinRequest.CurrencyCode = BRL; priceItinRequest.JourneyRequests = new JourneyRequest[1]; priceItinRequest.JourneyRequests[0] = new JourneyRequest(); priceItinRequest.JourneyRequests[0].Segments = new SegmentRequest[1]; SegmentRequest[] srSegments = new SegmentRequest[1]; srSegments[0] = new SegmentRequest(); srSegments[0].ActionStatusCode = "NN"; srSegments[0].PaxCount = 1; srSegments[0].ClassOfService = availResponse.Schedule[0].Journeys[0].Fares[0].ClassOfService; srSegments[0].DepartureStation = availResponse.Schedule[0].Journeys[0].Segments[0].DepartureStation; srSegments[0].STD = availResponse.Schedule[0].Journeys[0].Segments[0].STD; srSegments[0].ArrivalStation = availResponse.Schedule[0].Journeys[0].Segments[0].ArrivalStation; srSegments[0].STA = availResponse.Schedule[0].Journeys[0].Segments[0].STA; srSegments[0].Legs = availResponse.Schedule[0].Journeys[0].Segments[0].Legs; priceItinRequest.JourneyRequests[0].Segments = srSegments; priceItinRequest.JourneyRequests[0].CarrierCode = "AD"; // FareTypes is an optional field. If not used leave set to null, // otherwise set to values defined using SkyManager. priceItinRequest.FareTypes = new String[2]; priceItinRequest.FareTypes[0] = "R"; priceItinRequest.FareTypes[1] = "PR"; priceItinRequest.Passengers = new Passenger[1]; priceItinRequest.Passengers[0] = new Passenger(); priceItinRequest.Passengers[0].Name = new Name(); priceItinRequest.Passengers[0].Name.FirstName = "Joo"; priceItinRequest.Passengers[0].Name.MiddleName = "da"; priceItinRequest.Passengers[0].Name.LastName = "Silva"; priceItinRequest.Passengers[0].PaxPriceType = new PaxPriceType(); priceItinRequest.Passengers[0].PaxPriceType.PaxType = "ADT"; priceItinRequest.SSRRequests = new SSRRequest[1]; priceItinRequest.SSRRequests[0] = new SSRRequest(); priceItinRequest.SSRRequests[0].ActionStatusCode = "NN"; priceItinRequest.SSRRequests[0].SSRCode = "BIKE"; priceItinRequest.SSRRequests[0].SSRNumber = 0; priceItinRequest.SSRRequests[0].STD = availResponse.Schedule[0].Journeys[0]. Segments[0].STD; priceItinRequest.SSRRequests[0].FlightDesignator = new FlightDesignator(); priceItinRequest.SSRRequests[0].FlightDesignator = availResponse.Schedule[0].Journeys[0].Segments[0].Legs[0].FlightDesignator; priceItinRequest.SSRRequests[0].DepartureStation = availResponse.Schedule[0].Journeys[0].Segments[0].DepartureStation; priceItinRequest.SSRRequests[0].ArrivalStation = availResponse.Schedule[0].Journeys[0].Segments[0].ArrivalStation; priceItinRequest.SSRRequests[0].PassengerNumber = 0; SkyChannel.PriceItineraryResponse piResponse = bookingAPI.PriceItinerary(sessionContext, priceItinRequest); Console.WriteLine("Total price = {0:C} ", piResponse.Total);
[Obrigatrio] Vender Vos O mtodo SellFlights reserva um lugar na viagem desejada. Atualiza o estado da sesso. Isto substitui o estado atual com os dados fornecidos no SellRequest. SellRequest contm uma coleo de JourneyRequest que contm SegmentRequest. Os tipos de segmentos deve ser SegmentRequest. [Opcional] Utilizao de Promo Codes. Informaes do passageiro.
Verso 1.0
Nota sobre o preenchimento do SellRequest Seguem Notas e informaes a respeito do uso do mtodo Sell. Voc somente pode copiar os resultados da disponibilidade para o pedido de venda se for uma disponibilidade de sentido nico. Sell usa, normalmente, uma base de taxa especfica (um elemento que armazena e determina elegibilidade e restries da taxa) o qual restringe a venda para a base da tarifa e suas regras. O nmero da regra associado base da tarifa e utilizado para distinguir entre cdigos da base da tarifa se existir mltiplas instncias de cdigo base da tarifa definidos com diferentes regras. Combinando com a base da tarifa, ele identifica uma tarifa. O cdigo da operadora (Carrier code) obrigatrio. Ele identifica a operadora a qual o nmero do vo pertence. Ele obrigatrio porque mltiplos vos da operadora podem estar disponveis para venda, como no caso do code share e do wet lease. A regra da tarifa deve ser deixada em branco. Ela est reservada para uso futuro. A classe do servio deve corresponder classe do servio definida com o cdigo da base da tarifa. Existem 2 formas de utilizar o mtodo Sell: Uma venda que utiliza somente a classe do servio e o tipo de tarifa. (Este no um uso comum). Uma venda que utiliza uma base de tarifa especfica na qual restringe a venda a esta base de tarifa e suas regras. O mtodo Sell requer os seguintes campos: FlightDesignator CarrierCode FlightNumber opSuffix STA STD DepartureStation ArrivalStation PriorityCode inboudoutbound RuleNumber RuleTariff RuleBasis
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); String fareBasis = String.Empty; String ruleNumber = String.Empty; SkyChannel.SellRequest sellRequest = new SellRequest(); sellRequest.PriceRequest = new PriceRequest(); sellRequest.JourneyRequests = new JourneyRequest[1]; sellRequest.JourneyRequests[0] = new JourneyRequest(); sellRequest.JourneyRequests[0].Segments = new SegmentRequest[1]; SegmentRequest[] srSegments = new SegmentRequest[1]; // get a segment with valid fares from availability response
Verso 1.0
Informaes bsicas do passageiro podem ser includas atravs do mtodo Sell. Outro dado do passageiro adicionado ou completado utilizando o BookingRequest passado dentro do Commit. Veja Commit para maiores detalhes. Esteja ciente que alterando o tipo de passageiro, o cdigo de desconto e o nome causaro atualizao de preo do agendamento (Booking). [Opcional] Vender SSR
Vender um ou mais SSRs (SSR Special Service Request Requisio de Servio Especial) do agendamento (Booking) atual. O SSRRequest pode ou especificar um nvel de segmento de venda SSR ou de um trecho. A fim de vender um SSR, um passageiro necessrio (atualiza o estado atual com os dados fornecidos no SellSSRRequest).
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); // SellSSRRequest Contains a collection of SSRs to be sold SkyChannel.SellSSRRequest sellSsrRequest = new SellSSRRequest(); sellSsrRequest.SSRRequests = new SSRRequest[1]; SSRRequest[] SSRs = new SSRRequest[1]; SSRs[0] = new SSRRequest(); SSRs[0].ActionStatusCode = "NN"; SSRs[0].SSRCode = "BIKE"; SSRs[0].SSRNumber = 0;
Verso 1.0
Vende uma taxa de servio e a aplica no estado atual do agendamento (Booking). Ele atualiza o estado atual com dados fornecidos no SellServiceFeeRequest.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SellServiceFeeRequest feeRequest = new SellServiceFeeRequest(); feeRequest.PassengerNumber = 0; feeRequest.FeeCode = "CMF"; feeRequest.CollectedCurrencyCode = BRL; feeRequest.Note = "API added Service Fee"; BookingResponse br = bookingAPI.SellServiceFee(sessionContext, feeRequest);
Adiciona um agendamento no banco de dados. Nota: Se voc est suplementando a API originada de agendamentos com TeleType (TTY, Type B) processamento de post-booking , o FamilyNumber definido no BookingPassenger determina como os nomes dos passageiros sero retornados na resposta TTY. BookingPassengers com o mesmo sobrenome e FamilyNumber so includos juntos. FamilyNumber um campo opcional. responsabilidade da aplicao cliente garantir que os dados fornecidos so vlidos. Submeter informaes de agendamento das lojas contidas no estado das etapas precedentes ao banco de dados. New Skies refora as regras de consistncia de alguns dados quando so submetidos, mas no garante que todos os dados so vlidos para a aplicao. A aplicao deve efetuar a validao previamente e ento submet-las. Os dados inclusos no objeto BookingRequest so inclusos nos dados do estado que escrito no banco de dados. Os seguintes dados podem tambm ser fornecidos utilizando o mtodo Commit (Finalizar uma reserva tambm referenciado como Commit). Exemplos de uso destes dados so fornecidos na seo de alterao de agendamento. [Opcional] Adicionar comentrios a uma reserva. [Obrigatrio] Adicionar detalhes do contato. [Obter o total examinando o estado da sesso ou o resultado da ltima venda] Campos de pagamento definidos como obrigatrios pelos mtodos de pagamento, como definidos atravs do Sky Utilities, devem ser fornecidos no pagamento. [Opcional] Adicionar pagamento a uma reserva [Obter o total examinando o estado da sesso ou o resultado da ltima venda]
Verso 1.0
Outros campos do tipo de pagamento que esto sendo utilizado. Ao preencher um pagamento, esteja ciente do seguinte: O PaymentoMethodType deve ser definido para o mtodo de pagamento associado para o pagamento que est sendo adicionado no agendamento. Ele pode ser um dos seguintes: PrePaid ExternalAccount AgencyAccount CustomerAcount Voucher PaymentReference deve ser definido como Default. ChannelType deve ser definido como API. FundedDate deve ser definido como 1800-01-01T00:00:00. Qualquer PaymentFields definido para o mtodo de pagamento no Sky Utilities deve estar preenchido tambm. A menos que mltiplas moedas estejam sendo utilizadas, preencher somente o seguinte: CurrencyCode QuotedCurrecyCode QuotedAmount
Verso 1.0
Os seguintes campos do Payment so obrigatrios para os Agency Payments: O objeto Payment deve ser criado como um AgencyAccountPayment, que o tipo de pagamento a ser definido como AgencyAccountPayment. PaymentMethodType deve ser definido como AgencyAccount. PaymentMethodCode deve ser definido como AG. A Moeda e quantidade so ajustadas. AccountNumber definido com o nmero de conta da agncia. ChannelType definido como API.
Os seguintes campos do pagamento so obrigatrios para reembolsos do credit shell: O objeto Payment deve ser criado como um CustomerAccountPayment, que o tipo de pagamento definido como CustomerAccountPayment. PaymentMethodType definido como CustomerAccount. PaymentMethodCode definido como CS. QuotedCurrencyCode e QuotedAmount so definido com uma quantia negativa devido ao reembolso. O ChannelType deve ser definido como API. AccountTransactionCode definido com um cdigo de crdito vlido que foi configurado no Sky Utilities > Finance > Account Management > Credit Codes.
Nota: Se qualquer um dos tipos de pagamento solicitar uma taxa, deve-se tambm adicionar um passageiro ao agendamento para associar a taxa. Ento, se voc tentar um Stateless Commit, a validao do agendamento falhar. Na prtica, somente os tipos de pagamento que devem incluir taxas so os pagamentos externos. Taxas de pagamentos podem ser associadas credit shells mas no funcionaro na prtica porque os credit shells so utilizados pelos reembolsos.
Verso 1.0
Visando determinar o status do pagamento, as aplicaes do Booking checam periodicamente o agendamento para verificar se o status do pagamento foi atualizado. Por exemplo, Sky Sales aguarda alguns segundos e ento verifica se o status do agendamento foi atualizado. Se uma aplicao precisa determinar o status atual do pagamento de um agendamento ele verifica o mesmo periodicamente para obter seu status mais recente. Se a aplicao tem um agendamento em seu estado a seguinte chamada na API permite verificar o status do pagamento sem fazer uma chamada ao GetBooking.
payments = BookingManagerClient.GetCurrentStateBookingPayments(UserSession.SessionContext); if (payments != null) { foreach (Payment payment in payments) { if (payment.Status != BookingPaymentStatus.Declined && payment.Status != BookingPaymentStatus.Approved && (payment.Status != BookingPaymentStatus.PendingCustomerAction || pendingCustomerActionIsFinal == true)) } }
[Obrigatrio] Adicionar detalhes do passageiro do agendamento Informaes bsicas do passageiro Detalhes do documento de viagem (opcional) Detalhes da criana (opcional) Documentos de viagem da criana (opcional) [Obrigatrio] Submeter reserva Nota: Quando submeter um agendamento a configurao recomendada para CommitAction a seguinte:
bookingRequest.CommitAction = CommitAction.CommitRetrieve;
Obs.: Utilizar outros valores para CommitAction pode causar resultados no esperados.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SkyChannel.BookingRequest bookingRequest = new BookingRequest();
bookingRequest.CurrencyCode = BRL; bookingRequest.ReceivedBy = Joo da Silva; bookingRequest.PaxResidentCountry = "BR"; bookingRequest.CommitAction = CommitAction.CommitRetrieve; bookingRequest.BookingComments = new BookingComment[1]; bookingRequest.BookingComments[0] = new BookingComment();
Verso 1.0
bookingRequest.BookingContacts = new BookingContact[1]; bookingRequest.BookingContacts[0] = new BookingContact(); bookingRequest.BookingContacts[0].TypeCode = "72"; // decimal for "H"; bookingRequest.BookingContacts[0].AddressLine1 = "123 Rua Principal"; bookingRequest.BookingContacts[0].City = "So Paulo"; bookingRequest.BookingContacts[0].PostalCode = "06056-010"; bookingRequest.BookingContacts[0].CountryCode = "BR";
bookingRequest.Payments = new Payment[1]; bookingRequest.Payments[0] = new ExternalAccountPayment(); bookingRequest.Payments[0].PaymentMethodType = PaymentMethodType.ExternalAccount; bookingRequest.Payments[0].ReferenceType = PaymentReferenceType.Default;
bookingRequest.Payments[0].QuotedCurrencyCode = BRL; bookingRequest.Payments[0].QuotedAmount = sellResponse.BalanceDue; bookingRequest.Payments[0].Status = BookingPaymentStatus.New; bookingRequest.Payments[0].AccountNumber = "5210000010001001"; bookingRequest.Payments[0].Expiration = DateTime.Parse("2007-12-30T00:00:00"); bookingRequest.Payments[0].FundedDate = DateTime.Parse("1800-01-01T00:00:00"); bookingRequest.Payments[0].PaymentText = "MC payment";
bookingRequest.Payments[0].PaymentFields = new PaymentField[3]; bookingRequest.Payments[0].PaymentFields[0] = new PaymentField(); bookingRequest.Payments[0].PaymentFields[0].FieldName = "CC::VerificationCode"; bookingRequest.Payments[0].PaymentFields[0].FieldValue = "998";
bookingRequest.BookingPassengers = new BookingPassenger[2]; bookingRequest.BookingPassengers[0] = new BookingPassenger(); bookingRequest.BookingPassengers[0].Name = new Name(); bookingRequest.BookingPassengers[0].CustomerNumber = "6500000022"; bookingRequest.BookingPassengers[0].Name.FirstName = "Joo"; bookingRequest.BookingPassengers[0].Name.MiddleName = "da";
Verso 1.0
bookingRequest.BookingPassengers[1] = new BookingPassenger(); bookingRequest.BookingPassengers[1].Name = new Name(); bookingRequest.BookingPassengers[1].Name.FirstName = "Joo"; bookingRequest.BookingPassengers[1].Name.MiddleName = "da"; bookingRequest.BookingPassengers[1].Name.LastName = "Silva";
No existe
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Existe
Reservar lugar
Finalizar Reserva
Fim
Verso 1.0
TAREFAS DE RECUPERAO
Encontrar um Agendamento (FindBooking)
FindingBooking fornece um mecanismo de consulta para recuperao de agendamentos que correspondam ao critrio de pesquisa. Veja a documentao Object Reference.chm no mtodo BookingManagerClient.FindBooking para mais detalhes. Para encontrar um agendamento, faa o seguinte: Recupere uma lista de agendamentos que corresponda ao critrio de pesquisa especificado na solicitao.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SkyChannel.FindBookingRequest searchCriteria = new FindBookingRequest(); searchCriteria.LastName = "Silva"; searchCriteria.FirstName = new SearchString(); searchCriteria.FirstName.Value = "Joo"; searchCriteria.FirstName.SearchType = SearchType.StartsWith; FindBookingResponse bookingResponse = bookingAPI.FindBooking(sessionContext, searchCriteria); Console.WriteLine("{0} bookings found", bookingResponse.FindList.Length); if(bookingResponse.FindList.Length > 0) { Console.WriteLine("First record locator = " + bookingResponse.FindList[0].RecordLocator); }
Nota: A data do vo no pode ser utilizada sozinha para pesquisar por agendamentos. Outra chave de informao deve ser informada. Os argumentos primrios de pesquisa que podem ser utilizados incluem os seguintes: Name AgentName AgentID ContactCustomerNumber ContacOnly CreditCard CustomerNumber Email OrganizationCode PhoneNumber RecordLocator
Os campos do vo na solicitao so somente utilizados para reduzir os resultados retornados de uma solicitao. Por exemplo, se FindingBooking utilizado e um LastName fornecido pode corresponder a mltiplos PNRs. Informaes de vo podem ser utilizadas para reduzir a lista para uma data e vo especfico.
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
Fim
Chamar FindBooking
Obtendo Agendamento
Uma forma simples de obter um agendamento fornecer a sesso do contexto e um localizador. Isto substitui o estado do agendamento com o agendamento retornado. Para obter um agendamento existente, recupere um agendamento pelo localizador.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); Booking booking = bookingAPI.GetBooking(sessionContext, recloc);
Fluxograma do GetBooking
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Verso 1.0
GetBookingByBookingID
Recupera um agendamento especfico identificado por seu BookingID. Isto substitui o estado do agendamento com o agendamento retornado. Para obter um agendamento existente, voc pode recuper-lo pelo BookingID.
long bookingID = 2044; bool retrieveFromArchive = false; Booking booking = bookingAPI.GetBookingByBookingID(sessionContext, bookingID, retrieveFromArchive); Console.WriteLine("retrieved record locator = " + booking.RecordLocator);
Fluxograma do GetBookingByBookingID
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar GetBookingByBookingID
Definir retrieveFromArchive
Obter bookingID
Verso 1.0
GetBookingWithHistory
Recupera um agendamento especfico identificado por seu Localizador. Se encontrado os resultados incluem o histrico do agendamento. Ateno: Isto no atualiza o estado do agendamento. Para obter um agendamento existente com histrico, identificar o agendamento pelo localizador.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SkyChannel.GetBookingRequest getBookingRequest = new GetBookingRequest(); getBookingRequest.RecordLocator = RECLOC; getBookingRequest.IncludeBookingHistory = true; Booking booking = bookingAPI.GetBookingWithHistory(sessionContext, getBookingRequest);
Fluxograma do GetBookingWithHistory
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar GetBookingWithHistory
Verso 1.0
GetRecordLocatorList
Recupera uma lista de localizadores para uma data especfica e uma faixa de nmero de vo.
BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); RecordLocatorListRequest rlRequest = new RecordLocatorListRequest(); rlRequest.CarrierCode = "AD"; rlRequest.DepartureDate = new DateTime(2007, 02, 15); rlRequest.EndFlightNumber = "1115"; rlRequest.StartFlightNumber = "1115"; rlRequest.Initial = true; RecordLocatorListResponse rlResponse = bookingAPI.GetRecordLocatorList(sessionContext, rlRequest); if (rlResponse.RecordLocators[0] != null) { Console.WriteLine("First record locator is " + rlResponse.RecordLocators[0].ToString()); }
Fluxograma do GetRecordLocatorList
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Verso 1.0
GetSeatAvailability
Contem um AircraftConfiguration totalmente preenchido especificando o estado combinado de SeatAvailability de cada assento em cada cabine para o vo especificado entre a partida especificada e as estaes de chegada. Esteja ciente que GetSeatAvailability sensvel aos contedos do estado atual. Se o estado preenchido com dados do agendamento, a solicitao do assento deve referenciar os vos no estado, seno a solicitao no retornar assentos na resposta do SeatAvailability. O uso do GetSeatAvailability depende de como voc pretende atribuir assentos. O campo SeatAssingmentMode determina como a solicitao de disponibilidade ser tratada. Se os assentos so atribudos antes do checkin ento defina o SeatAssignmentMode como CheckIn. Se os assentos so previamente associados antes do checkin ento defina o SeatAssignmentMode como PreSeatAssignment e garanta que os dados do estado do agendamento esto consistentes solicitando GetSeatAvailability. Caso contrrio, os assentos no sero retornados.
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SkyChannel.BookingRequest bookingRequest = new BookingRequest(); SkyChannel.Booking booking = bookingAPI.GetBooking(sessionContext, recordLocator); SeatAvailabilityRequest seatAvailabilityRequest = new SeatAvailabilityRequest(); seatAvailabilityRequest.FlightDesignator = new FlightDesignator(); seatAvailabilityRequest.FlightDesignator = booking.JourneyServices[0].Segments[0].Legs[0].FlightDesignator; seatAvailabilityRequest.DepartureStation = booking.JourneyServices[0].Segments[0].DepartureStation; seatAvailabilityRequest.ArrivalStation = booking.JourneyServices[0].Segments[0].ArrivalStation; seatAvailabilityRequest.STD = booking.JourneyServices[0].Segments[0].STD; seatAvailabilityRequest.SeatAssignmentMode = SeatAssignmentMode.PreSeatAssignment; seatAvailabilityRequest.IncludeSeatFees = false; seatAvailabilityRequest.IncludeSSRSeatMapCode = false; SeatAvailabilityResponse seatAvailResponse = bookingAPI.GetSeatAvailability(sessionContext, seatAvailabilityRequest);
Fluxograma do GetSeatAvailability
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar GetSeatAvailability
Instanciar BookingRequest
Verso 1.0
GetSSRAvailability
Retorna todo o conjunto de SSR disponveis no trecho especificado. Para uma dada lista de trechos, ele retorna uma lista com todo o conjunto de SSR disponvel em pelo menos um dos trechos. Obter os SSR disponveis por trecho, segmentos ou tudo, est controlado pelo campo SSRCollectionsMode na requisio de disponibilidade. (No afeta o estado)
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); SSRAvailabilityRequest SSRAvailRequest = new SSRAvailabilityRequest(); SSRAvailRequest.SSRCollectionsMode = SSRCollectionsMode.All; SSRAvailRequest.InventoryLegKeys = new InventoryLegKey[1]; SSRAvailRequest.InventoryLegKeys[0] = new InventoryLegKey(); SSRAvailRequest.InventoryLegKeys[0].DepartureDate = availResponse.Schedule[0].DepartureDate; SSRAvailRequest.InventoryLegKeys[0].ArrivalStation = availResponse.Schedule[0].Journeys[0].Segments[0].ArrivalStation; SSRAvailRequest.InventoryLegKeys[0].DepartureStation = availResponse.Schedule[0].Journeys[0].Segments[0].DepartureStation; SSRAvailRequest.InventoryLegKeys[0].FlightNumber = availResponse.Schedule[0].Journeys[0].Segments[0].FlightDesignator.FlightNumber; SSRAvailRequest.InventoryLegKeys[0].CarrierCode = availResponse.Schedule[0].Journeys[0].Segments[0].FlightDesignator.CarrierCode; SSRAvailabilityResponse saResponse = bookingAPI.GetSSRAvailability(sessionContext, SSRAvailRequest);
Fluxograma do GetSSRAvailability
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar GetSSRAvailability
Verso 1.0
Recuperando um agendamento
Um agendamento pode ser recuperado de vrias formas. FindBooking prov um mtodo para pesquisar por agendamentos baseados nos dados da consulta fornecida na requisio. O servio GetBooking recupera agendamentos baseado nos dados de um identificador especfico de um agendamento. Recuperar um agendamento atualiza o estado do agendamento atual com os dados do agendamento recuperado.
Recuperando agendamentos do arquivo A nica forma de obter um agendamento completo de um arquivo utilizando:
GetBookingByBookngID(bookingID, SearchArchive);
Encontrar um agendamento num arquivo pesquisando por PNR: 1. Faa um FindBooking por PNR e defina a flag SearchArchive como true. 2. Obtenha o BookingID do FindBookingList retornado e faa um GetBookingByBookingID.
Verso 1.0
ALTERAR TAREFAS
Adicionar pagamentos a uma reserva
Verso 1.0
} else { // or DCC is not supported by the application bookingAPI.DCCNotOffered(sessionContext, pmt); } // add the updated payment to booking state bookingAPI.AddPaymentToBooking(sessionContext, pmt, waiveFee); if (paymentResponse.ValidationErrors.Length > 0) { Console.WriteLine("Payment validation failed"); return pmt; } // note: if TDS is applicatble the payment will not be in state if (pmt.PaymentAddedToState) { // commit is used to update the PNR in the Database return pmt; } } if (pmt.ValidationTDSApplicable) { Console.WriteLine("Use URL to redirect to Verified by Visa web site"); Console.WriteLine(pmt.ValidationTDSAcsURL.ToString()); // save the PaRes returned in the post back from the TDS site String postBack_paRes = String.Empty; pmt.ValidationTDSPaRes = postBack_paRes; // add the updated payment to booking state bookingAPI.AddPaymentToBooking(sessionContext, pmt, waiveFee); if (paymentResponse.ValidationErrors.Length > 0) { Console.WriteLine("Payment validation failed"); return pmt; } if (pmt.PaymentAddedToState) { // commit is used to update the PNR in the Database return pmt; } Console.WriteLine("TDS request did not validate"); } else { Console.WriteLine("Error payment not in state"); }
Verso 1.0
Erros de Validao
Erro
TDS aplicvel
Cliente usa TDS URL para redirecionar para Verified do site Visa
DCC aplicvel
Chamar DCCNotOferred
Erros de validao
Erro
Erros de validao
Erro
Verso 1.0
Qualquer valor diferente de uma string vazia habilitar o processamento do DCC/TDS: ValidationDCCPutInState Determina a forma com a qual o DCC ser processado. Se ele for definido com uma string vazia, seu comportamento corresponde s verses anteriores a 2.0.1 na qual as ofertas do DCC so automaticamente adicionadas ao estado do agendamento e tem que ser explicitamente rejeitado. Se ele estiver definido com outro valor o novo processo habilitado como descrito em Adicionar pagamento a um agendamento - Fluxograma.
Verso 1.0
Pagamentos so adicionados a um agendamento existente fazendo uso do mtodo Commit. O agendamento deve existir no estado do agendamento antes que um pagamento seja adicionado a ele ou ocorrero erros inesperados. Quando voc criar um pagamento, seu tipo determinado pelo construtor que foi utilizado. No exemplo que segue ele um PrePaidPayment. A propriedade PaymenteMethodType deve tambm ser definida como PrePaid. Se os dados do pagamento no foram fornecidos no formato correto, a seguinte exceo lanada: "New payments associated with the booking did not pass validation." Os campos de pagamento tambm podem causar erros de validao. Os campos de pagamento so definidos no Sky Utilities, associados ao mtodo de pagamento e definidos como obrigatrio para ser fornecido na solicitao de pagamento, se no o pagamento no passar na validao. Os seguintes campos so obrigatrios para um pagamento: PaymentMethodType (deve corresponder ao tipo de pagamento) CurrencyCode QuotedAmount QuotedCurrencyCode Status PaymentReference ChannelType FundedDate
Outros campos dependem do tipo de pagamento que est sendo utilizado. Quando preencher um pagamento, esteja ciente do seguinte: PaymentReference deve ser definido como Default. ChannelType deve ser definido como API. FundedDate deve ser definido com valor maior que 1800-01-01T00:00:00. Qualquer PaymentFields definido para o mtodo de pagamento no Sky Utilities deve ser preenchido.
A menos que mltiplas moedas estejam sendo utilizadas, preencha somente o seguinte:
Verso 1.0
= = = =
// create new payment and populate payment fields bookingRequest.Payments = new Payment[1]; bookingRequest.Payments[0] = new PrePaidPayment(); bookingRequest.Payments[0].Status = BookingPaymentStatus.New; bookingRequest.Payments[0].PaymentMethodType = PaymentMethodType.PrePaid; bookingRequest.Payments[0].ReferenceType = PaymentReferenceType.Default; bookingRequest.Payments[0].PaymentMethodCode = "CA"; bookingRequest.Payments[0].CurrencyCode = BRL bookingRequest.Payments[0].ChannelType = ChannelType.API; bookingRequest.Payments[0].QuotedCurrencyCode = BRL; bookingRequest.Payments[0].QuotedAmount = 76.00M; bookingRequest.Payments[0].AuthorizationStatus = AuthorizationStatus.Approved; bookingRequest.Payments[0].AccountNumber = "CASH"; bookingRequest.Payments[0].Expiration = DateTime.Parse("2006-08-26T00:00:00"); bookingRequest.Payments[0].FundedDate = DateTime.Parse("2006-08-25T00:00:00"); bookingRequest.Payments[0].PaymentText = "Cash Text"; // Commit booking to save changes to the database BookingCommitResponse br = bookingAPI.Commit(sessionContext, bookingRequest);
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar o Commit
Alterar Tarefas
O AcceptChangesRequest tambm tem 2 queue codes (CurrentQueueCode e ErrorQueueCode). Ambos so opcionais. Se o CurrentQueueCode for definido ele tenta remover o agendamento desta fila. Se o CurrentQueueCode for vazio ele no faz nada. Se ErrorQueueCode for definido e um erro ocorrer, ento o agendamento colocado na fila definida pelo ErrorQueueCode. Atualmente, existe somente um erro possvel. Se um ou mais dos segmentos dados no puder encontrar um correspondente no agendamento, ento um resultar num erro. Se ErrorQueueCode for vazio e um erro ocorrer, nada feito. Se CurrentQueueCode e ErrorQueueCode forem definidos com a mesma fila e ocorrer um erro, o agendamento retido na mesma fila.
//Create an instance of BookingManagerClientSoap BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); AcceptChangesRequest request = new AcceptChangesRequest(); request.AcceptAllChanges = true; request.RecordLocator = "Y1KB2L"; request.Segments = GetAvailability(sessionContext).Schedule[0].Journeys[0].Segments; bookingAPI.AcceptScheduleChanges(sessionContext, request);
Verso 1.0
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar AcceptScheduleChanges
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar Commit
Adicionar comentrios utilizando o mtodo AddBookingComments Nota: AddBookingComments no precisa de um Booking carregado no State Booking. Ele pode ser usado sem alterar o State Booking.
SkyChannelAPI.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); BookingComment[] bookingComments = new BookingComment[2]; bookingComments[0] = new BookingComment(); bookingComments[0].CommentText = "Line 1 Added Comment from Web API"; bookingComments[0].CommentType = CommentType.Default; bookingComments[1] = new BookingComment(); bookingComments[1].CommentText = "Line 2 Added Comment from Web API"; bookingComments[1].CommentType = CommentType.Default; bookingAPI.AddBookingComments(sessionContext, recordLocator, bookingComments);
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar AddBookingComments
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Chamar GetBooking
Instanciar BookingRequest
Chamar Commit
Fim
= booking.BookingPassengers;
// create travel document objects bookingRequest.BookingPassengers[0].PassengerTravelDocs = new PassengerTravelDoc[1]; bookingRequest.BookingPassengers[0].PassengerTravelDocs[0] = new PassengerTravelDoc(); bookingRequest.BookingPassengers[0].PassengerTravelDocs = new PassengerTravelDoc[1]; bookingRequest.BookingPassengers[0].PassengerTravelDocs[0] = new PassengerTravelDoc();
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Instanciar BookingRequest
Fim
Chamar Commit
Chamar GetBooking
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar SellServiceFee
Cancelar Taxa Isto cancela um preo de taxa de servio incluindo um objeto adicional PassenderFee como o ajuste que contem uma taxa negativa e impostos negativos na taxa (atualiza o estado atual com os dados fornecidos no SellServiceFeeRequest).
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); Booking booking = bookingAPI.GetBooking(sessionContext, recordLocator); FeeRequest cancelFeeRequest = new FeeRequest(); cancelFeeRequest.PassengerNumber = 0; cancelFeeRequest.NetAmount = booking.BookingPassengers[0].PassengerFees[0].ServiceCharges[0].Amount; cancelFeeRequest.NetAmount = cancelFeeRequest.NetAmount * -1; cancelFeeRequest.FeeNumber = booking.BookingPassengers[0].PassengerFees[0].FeeNumber; BookingResponse cFeeBr = bookingAPI.CancelFee(sessionContext, cancelFeeRequest);
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar CancelFee
Chamar GetBooking
Obter Disponibilidade de Assento Tenha cincia de que GetSeatAvailability sensvel ao contedo do estado de agendamento atual. Se o estado do agendamento preenchido com os dados do agendamento, a solicitao do assento deve referir aos vos do estado, se a solicitao no retornar assentos no SeatAvailabilityResponse. O uso do GetSeatAvailability depende de como se pretende atribuir os assentos. O campo SeatAssignmentMode determina como a requisio de disponibilidade ser tratada. Se os assentos so atribudos no check-in ento defina o SeatAssignmentMode para CheckIn. Se os assentos so prefixados antes do check-in, ento defina o SeatAssignmentMode para PreSeatAssignment e garanta que o estado do agendamento esteja consistente com a solicitao do GetSeatAvailabilit, seno os assentos no sero retornados. Similarmente, atribuir assentos sensvel ao estado do agendamento, a configurao para SeatAssignmentMode e a presena do localizador no SellSeatRequest. Uma forma de determinar quais os dados a fornecer basear-se na tarefa que est sendo realizada. Se a tarefa est relacionada ao agendamento, ento o mtodo stateful utilizado. A SellSeatRequest contem um campo para RecordLocator e outro para SeatAssignmentMode. As configuraes destes campos determinam como os assentos so atribudos. Se um agendamento est sendo atualizado pelo Commit, o estado do agendamento deve estar preenchido. Para fazer assim, ajuste o RecordLocator para null e o SeatAssignmentMode para PreSeatAssignment. Se os assentos esto sendo atribudos pelo check-in ento o estado
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Chamar GetBooking
Instanciar BookingRequest
Chamar GetSeatAvailability
Fim
Atribuindo um assento
short[] pax = { 1 }; // designate which passenger is being assigned a seat SellSeatRequest seats = new SellSeatRequest(); seats.RecordLocator = recordLocator; seats.SeatAssignmentMode = SeatAssignmentMode.PreSeatAssignment; seats.SeatRequests = new SeatRequest[1]; seats.SeatRequests[0] = new SeatRequest(); seats.SeatRequests[0].SeatPreference = SeatPreference.None; seats.SeatRequests[0].FlightDesignator = new FlightDesignator(); seats.SeatRequests[0].FlightDesignator = booking.JourneyServices[0].Segments[0].Legs[0].FlightDesignator; seats.SeatRequests[0].DepartureStation = booking.JourneyServices[0].Segments[0].DepartureStation;
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Sim
Assentos disponveis
Chamar AssignSeats
Fim
Verso 1.0
Se o agendamento a ser alterado no est no estado do agendamento ento recupere o agendamento no qual os segmentos sero adicionados. Veja a seo Recuperando Agendamentos.
Booking booking = bookingAPI.GetBooking(sessionContext, recordLocator);
SkyChannel.AvailabilityRequest availabilityRequest = new AvailabilityRequest(); PaxPriceType[] priceTypes = new PaxPriceType[1]; priceTypes[0] = new PaxPriceType(); priceTypes[0].PaxType = "ADT"; availabilityRequest.BeginDate = DateTime.Parse("2006-08-26T00:00:00"); availabilityRequest.EndDate = DateTime.Parse("2006-08-26T00:00:00"); availabilityRequest.ArrivalStation = "JFK"; availabilityRequest.DepartureStation = "SLC"; availabilityRequest.FlightType = FlightType.All; availabilityRequest.CurrencyCode = BRL; availabilityRequest.PaxPriceTypes = priceTypes; availabilityRequest.Dow = DOW.Daily; SkyChannel.AvailabilityResponse availResponse = new AvailabilityResponse(); availResponse = bookingAPI.GetAvailability(sessionContext, availabilityRequest);
Faa uma requisio de venda para atualizar, adicione os segmentos para o estado de agendamento.
SkyChannel.SellRequest sellRequest = new SellRequest(); sellRequest.PriceRequest = new PriceRequest(); sellRequest.PriceRequest.CurrencyCode = BRL sellRequest.PriceRequest.PaxResidentCountry = "BR"; sellRequest.JourneyRequests = new JourneyRequest[1]; sellRequest.JourneyRequests[0] = new JourneyRequest(); sellRequest.JourneyRequests[0].Segments = new SegmentRequest[1]; SegmentRequest[] srSegments = new SegmentRequest[1]; srSegments[0] = new SegmentRequest(); srSegments[0].DepartureStation = availResponse.Schedule[0].Journeys[0].Segments[0].DepartureStation; srSegments[0].STD = availResponse.Schedule[0].Journeys[0].Segments[0].STD; srSegments[0].ArrivalStation = availResponse.Schedule[0].Journeys[0].Segments[0].ArrivalStation; srSegments[0].STA = availResponse.Schedule[0].Journeys[0].Segments[0].STA; srSegments[0].Legs = availResponse.Schedule[0].Journeys[0].Segments[0].Legs; srSegments[0].FlightDesignator = new FlightDesignator(); srSegments[0].FlightDesignator = availResponse.Schedule[0].Journeys[0].Segments[0].Legs[0].FlightDesignator; srSegments[0].ActionStatusCode = "NN"; srSegments[0].PaxCount = 2; srSegments[0].ClassOfService = availResponse.Schedule[0].Journeys[0].Fares[0].ClassOfService; sellRequest.JourneyRequests[0].Segments = srSegments; sellRequest.JourneyRequests[0].CarrierCode = "AD"; sellRequest.JourneyRequests[0].FareBasis = availResponse.Schedule[0].Journeys[0].Fares[0].FareBasis; sellRequest.JourneyRequests[0].RuleNumber = availResponse.Schedule[0].Journeys[0].Fares[0].RuleNumber;
Verso 1.0
SkyChannel.BookingRequest bookingRequest = new BookingRequest(); bookingRequest.RecordLocator = recordLocator; bookingRequest.CurrencyCode = BRL; bookingRequest.ReceivedBy = Joo da Silva; bookingRequest.CommitAction = CommitAction.CommitRetrieve; BookingCommitResponse br = bookingAPI.Commit(sessionContext, bookingRequest);
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Instanciar AvailabilityResponse
Chamar GetBooking
Chamar GetAvailability
Chamar Sell
Fim
Chamar Commit
Verso 1.0
Se o agendamento a ser alterado no estiver no estado do agendamento ento recupere o agendamento no qual os segmentos sero cancelados. Veja a sesso Recuperando Agendamentos.
Booking booking = bookingAPI.GetBooking(sessionContext, recordLocator);
JourneyRequest journey = new JourneyRequest(); journey.Segments = new Segment[1]; journey.Segments[0] = new Segment(); journey.Segments[0].DepartureStation = booking.JourneyServices[0].Segments[0].DepartureStation; journey.Segments[0].ArrivalStation = booking.JourneyServices[0].Segments[0].ArrivalStation; journey.Segments[0].STD = booking.JourneyServices[0].Segments[0].STD; journey.Segments[0].STA = booking.JourneyServices[0].Segments[0].STA; journey.Segments[0].FlightDesignator = new FlightDesignator(); journey.Segments[0].FlightDesignator = booking.JourneyServices[0].Segments[0].FlightDesignator; CancelResponse cancelResponse = bookingAPI.CancelJourney(sessionContext, journey);
SkyChannel.BookingRequest bookingRequest = new BookingRequest(); bookingRequest.RecordLocator = recordLocator; bookingRequest.CurrencyCode = BRL; bookingRequest.ReceivedBy = Joo da Silva; bookingRequest.CommitAction = CommitAction.CommitRetrieve; BookingCommitResponse br = bookingAPI.Commit(sessionContext, bookingRequest);
Verso 1.0
Incio
SessionContext
Instanciar BookingManagerClientSoap
Chamar CancelJourney
Chamar GetBooking
Chamar Commit
Fim
SkyChannel.BookingManagerClientSoap bookingAPI = new BookingManagerClientSoap(); CancelSSRRequest cancelSSRs = new CancelSSRRequest(); cancelSSRs.SSRRequests = new SSRRequest[1]; cancelSSRs.SSRRequests[0] = new SSRRequest(); cancelSSRs.SSRRequests[0].ActionStatusCode = "NN"; cancelSSRs.SSRRequests[0].SSRCode = "BIKE"; cancelSSRs.SSRRequests[0].SSRNumber = 0; cancelSSRs.SSRRequests[0].STD = availResponse.Schedule[0].Journeys[0].Segments[0]. STD; cancelSSRs.SSRRequests[0].FlightDesignator = new FlightDesignator(); cancelSSRs.SSRRequests[0].FlightDesignator = availResponse.Schedule[0].Journeys[0].Segments[0].Legs[0].FlightDesignator; cancelSSRs.SSRRequests[0].DepartureStation = availResponse.Schedule[0].Journeys[0].Segments[0].DepartureStation; cancelSSRs.SSRRequests[0].ArrivalStation = availResponse.Schedule[0].Journeys[0].Segments[0].ArrivalStation; cancelSSRs.SSRRequests[0].PassengerNumber = 0; CancelSSRResponse cancelResponse = bookingAPI.CancelSSR(sessionContext, cancelSSRs); // Commit the booking to save changes to the database
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar Commit
Chamar CancelSSR
Alterando um agendamento
A fim de mudar um agendamento deve-se recuper-lo primeiro. O servio de alterao opera no agendamento o estado do agendamento atual. Uma vez que o agendamento esteja disponvel para processamento ele pode ser modificado.
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar Divide
Verso 1.0
Verso 1.0
Instanciar SessionManagerClientSoap
Efetuar Logon
Incio
SessionContext
Instanciar BookingManagerClientSoap
Fim
Chamar Commit
Verso 1.0
Verso 1.0