public void ConsigoEnviarMensagemDeFechamentoDoProcessoDeCotacaoDeFrete() { var clientHandler = new HttpClientHandler(); clientHandler.Credentials = new NetworkCredential("fusion_lucas", "fusion123"); var httpClient = new HttpClient(clientHandler); var mensagemParaEnviar = new ListaProcessoDeCotacaoDeFreteFechamento() { new ProcessoDeCotacaoDeFreteFechamentoComunicacaoSapVm() { CodigoTransportadora = "0000101808", CodigoMaterial = "000000000000004012", CodigoItinerario = "010330", DataDeValidadeInicial = new DateTime(2013, 4, 1).ToShortDateString(), DataDeValidaFinal = new DateTime(2013, 4, 30).ToShortDateString(), NumeroDoContrato = "110", Valor = (decimal)1500.00 } }; var response = httpClient.PostAsXmlAsync("http://sap-pid.bsbios.com:50000/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_cotacaoFreteFechamento_portal&qos=be" , mensagemParaEnviar); string texto = response.Result.Content.ReadAsStringAsync().Result; Console.WriteLine(texto); Assert.IsTrue(response.Result.IsSuccessStatusCode); Stream content = response.Result.Content.ReadAsStreamAsync().Result; var serializer = new XmlSerializer(typeof(ApiResponseMessage)); var responseMessage = (ApiResponseMessage)serializer.Deserialize(content); Assert.IsNotNull(responseMessage); Assert.AreEqual("E", responseMessage.Retorno.Codigo); }
//public ComunicacaoFechamentoProcessoCotacaoFrete(CredencialSap credencialSap) //{ // _comunicacaoSap = new ComunicacaoSap<ListaProcessoDeCotacaoDeFreteFechamento>(credencialSap); //} public ApiResponseMessage EfetuarComunicacao(ProcessoDeCotacao processo) { ProcessoDeCotacaoItem item = processo.Itens.First(); if (item.Produto.NaoEstocavel) { //Cotações de frete para empresas do grupo que não utilizam o SAP deverão ser realizadas com material NLAG //(Material não estocável). Para este tipo de material a cotação não deverá ser enviada para o SAP; return(new ApiResponseMessage { Retorno = new Retorno { Codigo = "200", Texto = "S" } }); } var mensagemParaEnviar = new ListaProcessoDeCotacaoDeFreteFechamento(); var processoAuxiliar = (ProcessoDeCotacaoDeFrete)processo.CastEntity(); foreach (var fornecedorParticipante in processoAuxiliar.FornecedoresParticipantes) { if (fornecedorParticipante.Cotacao != null && fornecedorParticipante.Cotacao.Itens.First().Selecionada) { CotacaoItem itemDaCotacao = fornecedorParticipante.Cotacao.Itens.First(); mensagemParaEnviar.Add(new ProcessoDeCotacaoDeFreteFechamentoComunicacaoSapVm { CodigoTransportadora = fornecedorParticipante.Fornecedor.Codigo, //CodigoMaterial = processoAuxiliar.Produto.Codigo, CodigoMaterial = item.Produto.Codigo, //CodigoUnidadeMedida = processoAuxiliar.UnidadeDeMedida.CodigoInterno, CodigoUnidadeMedida = item.UnidadeDeMedida.CodigoInterno, CodigoItinerario = processoAuxiliar.Itinerario.Codigo, DataDeValidadeInicial = processoAuxiliar.DataDeValidadeInicial.ToString("yyyyMMdd"), DataDeValidaFinal = processoAuxiliar.DataDeValidadeFinal.ToString("yyyyMMdd"), NumeroDoContrato = processoAuxiliar.NumeroDoContrato ?? "", Valor = itemDaCotacao.ValorComImpostos }); } } ApiResponseMessage apiResponseMessage = _comunicacaoSap.EnviarMensagem( "/HttpAdapter/HttpMessageServlet?senderParty=PORTAL&senderService=HTTP&interfaceNamespace=http://portal.bsbios.com.br/&interface=si_cotacaoFreteFechamento_portal&qos=be" , mensagemParaEnviar); if (apiResponseMessage.Retorno.Codigo == "E") { throw new ComunicacaoSapException("json", "Ocorreu um erro ao comunicar o fechamento do Processo de Cotação de Frete para o SAP. Detalhes: " + apiResponseMessage.Retorno.Texto); } return(apiResponseMessage); }