Beispiel #1
0
        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);
        }
Beispiel #2
0
        //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);
        }