public IHttpActionResult CalculaFrete(int id) { Order order = db.Orders.Find(id); if (order == null) { return(Content(HttpStatusCode.NotFound, "Order does not exist.")); } if (User.IsInRole("ADMIN") || User.Identity.Name == order.email) { CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(order.email); if (customer != null) { decimal altura = 0, comprimento = 0, largura = 0; order.pesoTotal = 0; order.precoTotal = 0; foreach (OrderItem orderItem in order.OrderItems) { int quantidade = orderItem.quantidade; if (orderItem.Product.altura > altura) { altura = orderItem.Product.altura; } if (orderItem.Product.largura > largura) { largura = orderItem.Product.largura; } comprimento += orderItem.Product.comprimento * quantidade; order.pesoTotal += orderItem.Product.peso * quantidade; order.precoTotal += orderItem.Product.preco * quantidade; } string frete; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", customer.zip, order.pesoTotal.ToString(), 1, comprimento, altura, largura, 0, "N", 100, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { NumberFormatInfo numberFormat = new NumberFormatInfo(); numberFormat.NumberDecimalSeparator = ","; order.precoFrete = Decimal.Parse(resultado.Servicos[0].Valor, numberFormat); order.dataEntrega = order.dataPedido.AddDays(Int32.Parse(resultado.Servicos[0].PrazoEntrega)); frete = "Valor do frete: " + order.precoFrete + " - Prazo de entrega: " + order.dataEntrega; db.SaveChanges(); return(Ok(frete)); } else { return(BadRequest("Código do erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } else { return(BadRequest("Falha ao consultar o CRM")); } } return(BadRequest("Authorization Denied! Only admin or the order owner allowed!")); }
public JsonResult CorreiosCalc(string cep) { string nCdEmpresa = string.Empty; string sDsSenha = string.Empty; string nCdServico = "41106"; string sCepOrigem = "36774016"; string sCepDestino = cep; string nVlPeso = 2.ToString(); int nCdFormato = 1; decimal nVlComprimento = 20; decimal nVlAltura = 20; decimal nVlLargura = 20; decimal nVlDiametro = 0; string sCdMaoPropria = "N"; decimal nVlValorDeclarado = 0; string sCdAvisoRecebimento = "N"; string data = DateTime.Now.ToString("dd/MM/yyyy"); CalcPrecoPrazoWSSoapClient wsCorreios = new CalcPrecoPrazoWSSoapClient(); cResultado retornoCorreios = wsCorreios.CalcPrecoPrazoData(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento, data); string[] result = new string[3]; result[0] = retornoCorreios.Servicos[0].Valor; result[1] = retornoCorreios.Servicos[0].PrazoEntrega; return(Json(result, JsonRequestBehavior.AllowGet)); }
public JsonResult CalcCEP(string cep) { string nCdEmpresa = string.Empty; string sDsSenha = string.Empty; string nCdServico = "41106"; string sCepOrigem = "19940000"; string sCepDestino = cep.Replace("-", ""); string nVlPeso = Convert.ToString(1); int nCdFormato = 1; decimal nVlAltura = 20; decimal nVlComprimento = 20; decimal nVlLargura = 20; decimal nVlDiametro = 0; string sCdMaoPropria = "N"; decimal nVlValorDeclarado = 0; string sCdAvisoRecebimento = "N"; CalcPrecoPrazoWSSoapClient wsCorreios = new CalcPrecoPrazoWSSoapClient(); cResultado retornoCorreios = wsCorreios.CalcPrecoPrazo(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento); string[] result = new string[2]; result[0] = retornoCorreios.Servicos[0].PrazoEntrega; result[1] = retornoCorreios.Servicos[0].Valor; return(Json(result, JsonRequestBehavior.AllowGet)); }
private async Task <ValorPrazoFrete> CalcularValorPrazoFrete(String cepDestino, String tipoFrete, Pacote pacote) { var cepOrigem = _configuration.GetValue <String>("Frete:CepOrigem"); var maoPropria = _configuration.GetValue <String>("Frete:MaoPropria"); var avisoRecebimento = _configuration.GetValue <String>("Frete:AvisoRecebimento"); var diametro = Math.Max(Math.Max(pacote.Comprimento, pacote.Largura), pacote.Altura); cResultado resultado = await _servico.CalcPrecoPrazoAsync("", "", tipoFrete, cepOrigem, cepDestino, pacote.Peso.ToString(), 1, pacote.Comprimento, pacote.Altura, pacote.Largura, diametro, maoPropria, 0, avisoRecebimento); if (resultado.Servicos[0].Erro == "0") { var valorLimpo = resultado.Servicos[0].Valor.Replace(".", ""); var valorFinal = double.Parse(valorLimpo); return(new ValorPrazoFrete() { TipoFrete = TipoFreteConstant.GetNames(tipoFrete), CodTipoFrete = tipoFrete, Prazo = int.Parse(resultado.Servicos[0].PrazoEntrega), Valor = valorFinal }); } else if (resultado.Servicos[0].Erro == "008") { //Ex.: SEDEX10 - não entrega naquela região return(null); } else { throw new Exception("Erro: " + resultado.Servicos[0].MsgErro); } }
public JsonResult ComprarTeste(string cep) { cep = cep.Remove(5, 1); string nCdEmpresa = string.Empty; string sDsSenha = string.Empty; string nCdServico = "41106"; string sCepOrigem = "13043805"; string sCepDestino = cep; int nCdFormato = 1; string nVlPeso = Convert.ToString(1); decimal nVlComprimento = 20; decimal nVlAltura = 20; decimal nVlLargura = 20; decimal nVlDiametro = 0; string sCdMaoPropria = "N"; decimal nVlValorDeclarado = 0; string sCdAvisoRecebimento = "N"; CalcPrecoPrazoWSSoapClient cliente = new CalcPrecoPrazoWSSoapClient(); cResultado retornoCorreios = cliente.CalcPrecoPrazo(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento); Session["cep"] = cep; string[] result = new string[2]; Session["correios"] = result; result[0] = retornoCorreios.Servicos[0].Valor; result[1] = retornoCorreios.Servicos[0].PrazoEntrega; return(Json(result, JsonRequestBehavior.AllowGet)); }
private async Task <ValorPrazoFrete> CalcularValorPrazoFrete(String cepDestino, String tipoFrete, PacoteFrete pacoteFrete) { var cepOrigem = _configuration.GetValue <string>("Frete:cepOrigem"); var maoPropria = _configuration.GetValue <string>("Frete:maoPropria"); var avisoRecebimento = _configuration.GetValue <string>("Frete:avisoRecebimento"); var diametro = Math.Max(Math.Max(pacoteFrete.Comprimento, pacoteFrete.Largura), pacoteFrete.Altura); cResultado resultado = await _servico.CalcPrecoPrazoAsync("", "", tipoFrete, cepOrigem, cepDestino, pacoteFrete.Peso.ToString(), 1, pacoteFrete.Comprimento, pacoteFrete.Altura, pacoteFrete.Largura, diametro, maoPropria, 0, avisoRecebimento); if (resultado.Servicos[0].Erro == "0") { return(new ValorPrazoFrete() { TipoFrete = int.Parse(tipoFrete), Prazo = int.Parse(resultado.Servicos[0].PrazoEntrega), Valor = double.Parse(resultado.Servicos[0].Valor.Replace(".", "").Replace(",", ".")), }); } else { return(new ValorPrazoFrete() { }); //("Erro: " + resultado.Servicos[0].MsgErro); } }
public void CalcPrecoPrazo() { string nCdEmpresa = string.Empty; string sDsSenha = string.Empty; string nCdServico = "04014"; string sCepOrigem = "03057010"; string sCepDestino = _CepDestino; string nVlPeso = _Peso; int nCdFormato = 1; decimal nVlComprimento = _Comprimento; decimal nVlAltura = _Altura; decimal nVlLargura = _Largura; decimal nVlDiametro = _Diametro; string sCdMaoPropria = "N"; decimal nVlValorDeclarado = 0; string sCdAvisoRecebimento = "N"; CalcPrecoPrazoWSSoapClient SRCorreios = new CalcPrecoPrazoWSSoapClient(); cResultado returnCorreios = SRCorreios.CalcPrecoPrazo(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento); PrazoEntrega = returnCorreios.Servicos[0].PrazoEntrega; Preco = returnCorreios.Servicos[0].Valor; }
public Resultado FromASMXServiceResultado(cResultado item) { var b = new Resultado { Servicos = new Servico[1] }; if (item.Servicos.Length > 0) { b.Servicos[0] = new Servico() { Codigo = item.Servicos[0].Codigo, DataMaxEntrega = item.Servicos[0].DataMaxEntrega, EntregaDomiciliar = item.Servicos[0].EntregaDomiciliar, EntregaSabado = item.Servicos[0].EntregaSabado, Erro = item.Servicos[0].Erro, HoraMaxEntrega = item.Servicos[0].HoraMaxEntrega, MsgErro = item.Servicos[0].MsgErro, obsFim = item.Servicos[0].obsFim, PrazoEntrega = item.Servicos[0].PrazoEntrega, Valor = item.Servicos[0].Valor, ValorAvisoRecebimento = item.Servicos[0].ValorAvisoRecebimento, ValorMaoPropria = item.Servicos[0].ValorMaoPropria, ValorSemAdicionais = item.Servicos[0].ValorSemAdicionais, ValorValorDeclarado = item.Servicos[0].ValorValorDeclarado, }; } return(b); }
public async Task <ValorPrazoFrete> CalcularValorPrazoFrete(string cepDestino, string tipoFrete, Pacote pacote) { var cepOrigem = _configuration.GetValue <String>("Frete:CepOrigem"); var maoPropria = _configuration.GetValue <String>("Frete:MaoPropria"); var avisoRecebimento = _configuration.GetValue <String>("Frete:AvisoRecebimento"); var diametro = Math.Max(Math.Max(pacote.Comprimento, pacote.Largura), pacote.Altura); // cResultado resultado = await _servico.CalcPrecoPrazoAsync("", "", tipoFrete, cepOrigem, cepDestino, pacote.Peso.ToString(), 1, pacote.Comprimento, pacote.Altura, pacote.Largura, diametro, maoPropria, 0, avisoRecebimento); if (resultado.Servicos[0].Erro == "0") { //Deu certo - implementar um resultado - valor e prazo de entrega, tipo frete return(new ValorPrazoFrete() { TipoFrete = TipoFreteConstante.GetNames(tipoFrete), CodigoTipoFrete = tipoFrete, Prazo = int.Parse(resultado.Servicos[0].PrazoEntrega), Valor = double.Parse(resultado.Servicos[0].Valor.Replace(".", "")) }); } else if (resultado.Servicos[0].Erro == "008" || resultado.Servicos[0].Erro == "-888") { //Exempo de codigo para n possuir entrega na região, ex: SEDEX10 return(null); } else { //Deu ruim throw new Exception("Erro: " + resultado.Servicos[0].MsgErro); } }
public IHttpActionResult CalculaFrete(int id) { string frete; string cep; Order order = db.Orders.Find(id); if (order == null) { return(Content(HttpStatusCode.NoContent, "Nao existe nenhum pedido com o id: " + id)); } if (!checkAccessPermition(User, order.userEmail)) { return(StatusCode(HttpStatusCode.Forbidden)); } if (order.OrderItems.Count <= 0) { return(Content(HttpStatusCode.NoContent, "Pedido sem itens")); } if (!order.status.Equals("Novo")) { return(Content(HttpStatusCode.NotAcceptable, "Pedido com status diferente de “novo”")); } cep = ObtemCEP(User); if (cep == null) { return(Content(HttpStatusCode.NotFound, "Impossibilidade de acessar o serviço de CRM")); } Product total = calcInfoFrete(order); CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", cep, Convert.ToString(total.peso), 1, total.comprimento, total.altura, total.largura, total.diamentro, "N", 0, "N"); if (resultado.Servicos[0].Erro.Equals("0")) { frete = "Valor do frete: " + resultado.Servicos[0].Valor + " - Prazo de entrega: " + resultado.Servicos[0].PrazoEntrega + " dia(s)"; try { order.freightPrice = Convert.ToDecimal(resultado.Servicos[0].Valor); order.orderPrice += order.freightPrice; order.deliveryDate = order.orderDate.AddDays(Convert.ToInt16(resultado.Servicos[0].PrazoEntrega)); } catch { return(Content(HttpStatusCode.InternalServerError, "Erro na resposta do serviço dos Correios")); } return(Ok(frete)); } else { return(Content(HttpStatusCode.NotFound, "Impossibilidade de acessar o serviço dos Correios. Código do erro: " + resultado.Servicos[0].Erro + " - " + resultado.Servicos[0].MsgErro)); } }
/// <summary> /// Inicializa as entradas com os valores de cada serviço requisitado dos correios /// </summary> /// <param name="precoEPrazo"></param> /// private void inicializarEntradas(cResultado precoEPrazo) { lbDiaAtual.Text = Helpers.retornarDataSimples(); foreach (var item in precoEPrazo.servicos.CServico) { escolherCodigo(item.Codigo, item); } }
public IHttpActionResult CalculaFrete(int id) { Order order = db.Orders.Find(id); if (order == null) { return(BadRequest("Order was not found!")); } else { CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(order.emailUser); if (customer != null) { // Initial Values decimal larg = 0; decimal comp = 0; decimal height = 0; order.totalWeigth = 0; order.totalPrice = 0; // Calculate size for each orderItem foreach (OrderItem orderItem in order.OrderItems) { int qtd = orderItem.qtd; height = orderItem.Product.altura > height ? orderItem.Product.altura : height; larg = orderItem.Product.largura > larg ? orderItem.Product.largura : larg; comp += orderItem.Product.comprimento * qtd; order.totalWeigth += orderItem.Product.peso * qtd; order.totalPrice += orderItem.Product.preco * qtd; } // Correios API string frete; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", customer.zip, order.totalWeigth.ToString(), 1, comp, height, larg, 0, "N", 100, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { NumberFormatInfo numberFormat = new NumberFormatInfo(); numberFormat.NumberDecimalSeparator = ","; order.shipmentPrice = Decimal.Parse(resultado.Servicos[0].Valor, numberFormat); order.deliveryDate = order.orderDate.AddDays(Int32.Parse(resultado.Servicos[0].PrazoEntrega)); frete = "Valor do frete: " + order.shipmentPrice + " - Prazo de entrega: " + order.deliveryDate; db.SaveChanges(); return(Ok(frete)); } else { return(BadRequest("Código do erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } else { return(BadRequest("Falha ao consultar o CRM")); } } }
private void button1_Click(object sender, EventArgs e) { freteagr.Comprimento = Convert.ToDecimal(textBox1.Text); freteagr.Largura = Convert.ToDecimal(textBox2.Text); freteagr.Altura = Convert.ToDecimal(textBox3.Text); freteagr.Peso = textBox4.Text; freteagr.CEP = textBox5.Text; resultado = freteagr.calcular(); MessageBox.Show("Sedex Varejo \n Preço:" + resultado.Servicos.ElementAt(0).Valor + "\n Prazo em dias:" + resultado.Servicos.ElementAt(0).PrazoEntrega + "\n" + resultado.Servicos.ElementAt(0).MsgErro + "\n Sedex A Cobrar Varejo \n Preço:" + resultado.Servicos.ElementAt(1).Valor + "\n Prazo em dias:" + resultado.Servicos.ElementAt(1).PrazoEntrega + "\n" + resultado.Servicos.ElementAt(1).MsgErro + "\n Sedex 10 Varejo \n Preço:" + resultado.Servicos.ElementAt(2).Valor + "\n Prazo em dias:" + resultado.Servicos.ElementAt(2).PrazoEntrega + "\n" + resultado.Servicos.ElementAt(2).MsgErro + "\nSedex Hoje Varejo \n Preço:" + resultado.Servicos.ElementAt(3).Valor + "\n Prazo em dias:" + resultado.Servicos.ElementAt(3).PrazoEntrega + "\n" + resultado.Servicos.ElementAt(3).MsgErro + "\n PAC Varejo \n Preço:" + resultado.Servicos.ElementAt(4).Valor + "\n Prazo em dias:" + resultado.Servicos.ElementAt(4).PrazoEntrega + "\n" + resultado.Servicos.ElementAt(4).MsgErro); }
public IHttpActionResult calcularFrete(int id, string cepDestino) { Pedido pedido = db.Pedidoes.Find(id); if (pedido == null) { return(BadRequest("O pedido não existe.")); } else if (User.Identity.Name.Equals(pedido.userEmail) || User.IsInRole("ADMIN")) { if (pedido.status.Equals("Novo")) { string frete; decimal larguraTotal = 0; decimal comprimentoTotal = 0; decimal alturaTotal = 0; decimal diametroTotal = 0; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); foreach (ItemPedido itemPedido in pedido.OrderItems) { pedido.pesoTotal += itemPedido.Produtos.peso; pedido.precoTotal += itemPedido.Produtos.preco; larguraTotal += itemPedido.Produtos.largura; comprimentoTotal = itemPedido.Produtos.comprimento; alturaTotal = itemPedido.Produtos.altura; diametroTotal = itemPedido.Produtos.diamentro; } //Foi usado um cep de origem fixo pois não consegui utilizar o serviço CRM cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", cepDestino, pedido.pesoTotal.ToString(), 1, comprimentoTotal, alturaTotal, larguraTotal, diametroTotal, "N", pedido.precoTotal, "S"); pedido.precoFrete = decimal.Parse(resultado.Servicos[0].Valor); if (resultado.Servicos[0].Erro.Equals("0")) { frete = "Valor do frete: "+ resultado.Servicos[0].Valor + " - Prazo de entrega: "+ resultado.Servicos[0].PrazoEntrega + " dia(s)"; return(Ok(frete)); } else { return(BadRequest("Código do erro: "+ resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } else { return(BadRequest("Pedido com status diferente de 'novo'.")); } } else { return(BadRequest("Usuario não autorizado.")); } }
public IHttpActionResult CalculaFreteEPrazo(int id) { Order order = db.Orders.Find(id); if (order == null) { return(NotFound()); } if (!order.status.Equals("novo")) { return(BadRequest("Status do pedido inválido, o pedido precisa estar no estado 'novo'.")); } if (order.OrderItems.Count == 0) { return(BadRequest("Pedido sem nenhum item.")); } if (!User.IsInRole("ADMIN") && !User.Identity.Name.Equals(order.userName)) { return(StatusCode(HttpStatusCode.Forbidden)); } cResultado resultadoCorreios = calculaFretePrazoEntrega(order); string frete = "0"; string prazoEntrega = "0"; if (resultadoCorreios.Servicos[0].Erro.Equals("0")) { frete = resultadoCorreios.Servicos[0].Valor; prazoEntrega = resultadoCorreios.Servicos[0].PrazoEntrega; } else { return(BadRequest("Falha na consulta aos Correios - Código do erro: " + resultadoCorreios.Servicos[0].Erro + "- Mensagem: " + resultadoCorreios.Servicos[0].MsgErro)); } order.precoFrete = Convert.ToDecimal(frete, new CultureInfo("pt-BR")); order.precoTotal = calculaPrecoOrdem(order) + order.precoFrete; order.deliveryDate = order.orderDate.AddDays(Convert.ToDouble(prazoEntrega)); db.Entry(order).State = EntityState.Modified; db.SaveChanges(); return(Ok(order)); }
public IHttpActionResult CalculaFrete() { string frete; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", "37002970", "1", 1, 30, 30, 30, 30, "N", 100, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { frete = "Valor do frete: "+ resultado.Servicos[0].Valor + " - Prazo de entrega: "+ resultado.Servicos[0].PrazoEntrega + " dia(s)"; return(Ok(frete)); } else { return(BadRequest("Código do erro: "+ resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } }
public string processar(EntidadeDominio entidade) { try { acalcular = (Frete)entidade; Produto produto = acalcular.Item; resu = cal.CalcPrecoPrazo("", "", "40010 , 40045 , 40215 , 40290 , 41106", cep_origem, acalcular.Destino.Cep, produto.Formato.Peso, 1, produto.Formato.Comprimento, produto.Formato.Altura, produto.Formato.Largura, produto.Formato.Diametro, "N", 'N', "S"); acalcular.Valor = Convert.ToDouble(resu.Servicos.ElementAt(0).Valor); acalcular.Prazo = Convert.ToInt32(resu.Servicos.ElementAt(0).PrazoEntrega); return("Consultado com succeso"); } catch { return(resu.Servicos.ElementAt(0).MsgErro); } }
public async Task <ValueDeadlineFreight> CalculateValueDeadLineFreight(string cepDestiny, string typeFreight, Package package) { var cepOrigem = _configuration.GetValue <string>("Freight:CepOrigem"); var maoPropria = _configuration.GetValue <string>("Freight:MaoPropria"); var avisoRecebimento = _configuration.GetValue <string>("Freight:AvisoRecebimento"); var diametro = Math.Max(Math.Max(package.Length, package.Width), package.Height); cResultado result = await _service.CalcPrecoPrazoAsync("", "", typeFreight, cepOrigem, cepDestiny, package.Weight.ToString(), 1, package.Length, package.Height, package.Width, diametro, maoPropria, 0, avisoRecebimento); if (result.Servicos[0].Erro == "0") { var cleanValue = result.Servicos[0].Valor.Replace(".", ""); var finalValue = double.Parse(cleanValue); return(new ValueDeadlineFreight() { TypeFreight = TypeFreightConstant.GetNames(typeFreight), ServiceCode = typeFreight, Deadline = int.Parse(result.Servicos[0].PrazoEntrega), Value = finalValue }); } else if (result.Servicos[0].Erro == "008" || result.Servicos[0].Erro == "-888") { //SEDEX10 - Don't delivery in region return(null); } else { throw new Exception("Erro" + result.Servicos[0].MsgErro); } }
public JsonResult CorreiosCalc(string cep) { //Dados da empresa, se tiver contrato com os Correios string nCdEmpresa = string.Empty; string sDsSenha = string.Empty; // Código do tipo de frete //41106 - PAC //40010 - SEDEX //40045 - SEDEX a Cobrar //40215 - SEDEX 10 //40290 - SEDEX Hoje string nCdServico = "41106"; // Cep de origem e destino - apenas números string sCepOrigem = "19940000"; string sCepDestino = cep; // Peso total da encomenda - por padrão deixei 1kg string nVlPeso = Convert.ToString(1); // Formato da encomenda - por padrão deixei caixa int nCdFormato = 1; // Para encomenda do tipo PAC, deve-se preencher a dimensão da embalagem decimal nVlComprimento = 20; decimal nVlAltura = 20; decimal nVlLargura = 20; decimal nVlDiametro = 0; // Informa se é por mão própria - por padrão deixei Não string sCdMaoPropria = "N"; // Valor declarado - por padrão não informo decimal nVlValorDeclarado = 0; // Se desejo recebr aviso de recebimento - por padrão não quero string sCdAvisoRecebimento = "N"; CalcPrecoPrazoWSSoapClient wsCorreios2 = new CalcPrecoPrazoWSSoapClient(); cResultado retornoCorreios = wsCorreios2.CalcPrecoPrazo(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiametro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento); string[] result = new string[2]; result[1] = retornoCorreios.Servicos[0].PrazoEntrega; result[0] = retornoCorreios.Servicos[0].Valor; return(Json(result, JsonRequestBehavior.AllowGet)); }
public PrecoPrazoEntrega CalcularPrecoPrazo(string codigoServico, string cepOrigem, string cepDestino) { try { if (_soapClient == null) { _soapClient = new CalcPrecoPrazoWS(); } System.Net.ServicePointManager.Expect100Continue = false; cResultado result = _soapClient.CalcPrecoPrazo("", "", codigoServico, cepOrigem, cepDestino, PesoDefaultLivro, CodFormatoDefault, ComprimentoDefault, AlturaDefault, LarguraDefault, DiametroDefault, "N", 0, "N"); // TODO: incluir mensagem ao resources if (result == null || result.Servicos == null || result.Servicos.Length <= 0) { throw new ArgumentNullException("Não chegou nenhum retorno do Webservice dos Correios."); } if (!string.IsNullOrEmpty(result.Servicos.First().Erro) && !string.IsNullOrEmpty(result.Servicos.First().MsgErro)) { throw new ApplicationException(result.Servicos.First().MsgErro); } return(new PrecoPrazoEntrega() { DiasParaEntrega = int.Parse(result.Servicos[0].PrazoEntrega), Valor = decimal.Parse(result.Servicos[0].Valor) }); } catch { // Qualquer exceção que ocorrer, retorna um dado default, para o sistema não parar em caso do Correios estar offline, hehe return(new PrecoPrazoEntrega() { DiasParaEntrega = new Random().Next(1, 5), Valor = (decimal)(new Random().NextDouble() * 20) }); } }
public IHttpActionResult calculateFreight(int id) { if (!ordersControllerValidator.OrderExists(id)) { return(NotFound()); } Order order = db.Orders.Find(id); if (!ordersControllerValidator.IsUserAuthorized(User, order)) { return(Unauthorized()); } if (!order.OrderItems.Any()) { string errorMessage = "Pedido sem items!"; return(ResponseMessage(Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage))); } if (order.status != "novo") { string errorMessage = "Status do pedido é diferente de novo!"; return(ResponseMessage(Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage))); } CrmRestClient crmRestClient = new CrmRestClient(); Customer customer = crmRestClient.GetCustomerByEmail(order.userEmail); if (customer == null) { string errorMessage = "Erro ao acessar serviço de CRM!"; return(ResponseMessage(Request.CreateResponse(HttpStatusCode.InternalServerError, errorMessage))); } decimal totalFreight = 0; int daysToDelivery = 0; cResultado result = ordersControllerCalculator.calculateFreightAndDelivery(order.OrderItems.ToList(), customer.zip, 0); if (result.Servicos[0].Erro.Equals("0")) { totalFreight = decimal.Parse(result.Servicos[0].Valor); daysToDelivery = int.Parse(result.Servicos[0].PrazoEntrega); } else { return(BadRequest("Erro ao acessar serviços do correio: " + result.Servicos[0].MsgErro)); } order.freightPrice = totalFreight; order.deliveryDate = DateTime.Now.AddDays(daysToDelivery); db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!ordersControllerValidator.OrderExists(id)) { return(NotFound()); } else { throw; } } return(Ok(order)); }
public static async Task <string[]> GetPriceAndTimePostalServiceAsync(string cep, double weight, double volume) { double squareSideLength = Math.Pow(volume, 1.0 / 3.0); double sideUsed = 0.0; double weightUsed = 0.0; double weightu = weight / 1000; if (weightu < 1.0) { weightUsed = 1.0; } else if (weightu > 29) { weightUsed = 29.0; } else { weightUsed = weightu; } if (squareSideLength > 66.0) { sideUsed = 66.0; } else if (squareSideLength < 17.0) { sideUsed = 17.0; } else { sideUsed = squareSideLength; } string nCdEmpresa = string.Empty; string sDsSenha = string.Empty; string nCdServico = "40010"; // Sedex string sCepOrigem = "30130010"; // CEP Praça Sete 30130010 string sCepDestino = cep; string nVlPeso = weightUsed.ToString("F0"); // peso em kg da encomenda / peso máximo de 30kg int nCdFormato = 1; // formato caixa decimal nVlComprimento = (decimal)sideUsed; // medidas em cm entre 16cm e 105cm e a soma das dimensões não deve ultrapassar 200cm decimal nVlAltura = (decimal)sideUsed; decimal nVlLargura = (decimal)sideUsed; decimal nVlDiamentro = 0; string sCdMaoPropria = "N"; decimal nVlValorDeclarado = 0; string sCdAvisoRecebimento = "N"; System.ServiceModel.Channels.Binding binding = new BasicHttpBinding(); EndpointAddress remoteAddress = new EndpointAddress("http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx"); CalcPrecoPrazoWSSoapClient wsCorreios2 = new CalcPrecoPrazoWSSoapClient(binding, remoteAddress); cResultado retornoCorreios = await wsCorreios2.CalcPrecoPrazoAsync(nCdEmpresa, sDsSenha, nCdServico, sCepOrigem, sCepDestino, nVlPeso, nCdFormato, nVlComprimento, nVlAltura, nVlLargura, nVlDiamentro, sCdMaoPropria, nVlValorDeclarado, sCdAvisoRecebimento); string[] result = new string[2]; result[1] = retornoCorreios.Servicos.FirstOrDefault().PrazoEntrega; result[0] = retornoCorreios.Servicos.FirstOrDefault().Valor; return(result); }
public IHttpActionResult CalculaFrete(int id) { Order order = db.Orders.Find(id); if (order == null) { return(NotFound()); } if (User.Identity.Name.Equals(order.customerEmail) || User.IsInRole("ADMIN")) { if (order.orderItems.Count == 0) { return(BadRequest("Erro ao calcular frete. O pedido não contem items")); } if (!order.status.Equals("novo")) { return(BadRequest("Erro ao calcular frete. Apenas pedidos com status 'novo' podem ter seu frete calculado.")); } double width = 0; double height = 0; double weight = 0; double length = 0; order.orderItems.ForEach(delegate(OrderItem item) { length += item.Product.length; weight += item.Product.weight * item.qtd; height = item.Product.height > height ? item.Product.height : height; width = item.Product.width > width ? item.Product.width : width; }); string cep = this.SearchCep(order.customerEmail); if (cep != null) { CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "35600000", cep, weight.ToString(), 1, Convert.ToDecimal(length), Convert.ToDecimal(height), Convert.ToDecimal(width), 30, "N", 100, "S"); if (resultado == null) { return(BadRequest("Erro ao calcular frete. Não foi possível conectar ao sistema dos correios.")); } if (resultado.Servicos[0].Erro.Equals("0")) { order.deliverPrice = Convert.ToDouble(resultado.Servicos[0].Valor); order.deliverDate = DateTime.Now.AddDays(Convert.ToInt32(resultado.Servicos[0].PrazoEntrega)); //frete = "Valor do frete: " + resultado.Servicos[0].Valor + " - Prazo de entrega: " + resultado.Servicos[0].PrazoEntrega + " dia(s)"; //return Ok(frete); db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } else { throw; } } return(Ok(order)); } else { return(BadRequest("Erro ao calcular frete. Código do erro: "+ resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } return(BadRequest("Erro ao calcular frete. Não foi possível acessar o serviço de CRM e recuperar o CEP!")); } return(Unauthorized()); }
/// <summary> /// Click do botão buscar no Correio /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// private void btnBuscar_Click(object sender, EventArgs e) { this.Cursor = Cursors.WaitCursor; /// Declaração de variáveis para passar como parâmetro string CdEmpresa = ""; string DsSenha = ""; int tipoDeServico = cbServico.SelectedIndex; if (cbServico.Text.Equals("")) { tipoDeServico = -1; } string servico = retornarServico(tipoDeServico); string cepDeOrigem = tbCepOrigem.Text; string cepDeDestino = tbCepDestino.Text; string peso = tbPeso.Text; int formato = 1; decimal comprimento = Helpers.returnDecimal(tbComprimento.Text); decimal altura = Helpers.returnDecimal(tbAltura.Text); decimal largura = Helpers.returnDecimal(tbLargura.Text); decimal diametro = Helpers.returnDecimal(tbDiametro.Text); string maoPropria = "N"; decimal valorDeclarado = 0; string avisoDeRecebimento = "N"; //////////////////////////////////////// /// Validação das entradas //// if (rbCaixa.Checked) { formato = 1; } else if (rbCilindro.Checked) { formato = 2; } else { formato = 3; } if (cbMaoPropria.Checked) { maoPropria = "S"; } else { maoPropria = "N"; } if (cbAvisoRecebimento.Checked) { avisoDeRecebimento = "S"; } else { avisoDeRecebimento = "N"; } if (cbDeclaracaoDeValor.Checked) { valorDeclarado = Helpers.returnDecimal(tbDeclaracaoValor.Text); } else { valorDeclarado = 0; } ///////////////////// /// Chamada do procedimento para consultar preços e prazos nos correios cResultado precoEPrazo = Consulta.ConsultarPrecosEPrazos(CdEmpresa, DsSenha, servico, cepDeOrigem, cepDeDestino, peso, formato, comprimento, altura, largura, diametro, maoPropria, valorDeclarado, avisoDeRecebimento); if (precoEPrazo != null) { panelSedex.Visible = true; // Mostra o painel que estava oculto inicializarEntradas(precoEPrazo); // inicializa as entradas de acordo com o retorno dos Correios } this.Cursor = Cursors.Default; }
public IHttpActionResult Freight(int id) { Order order = db.Orders.Find(id); if (order == null) { return(NotFound()); } if (CheckUserPermission(User, order)) { // validations -------------------------------------------------------------------- if (!order.status.Equals(Status.NOVO.ToString())) { return(BadRequest("Invalid status. Status other than NOVO.")); } if (order.OrderItems.Count == 0) { return(BadRequest("Empty list items.")); } // cep ---------------------------------------------------------------------------- Customer customer = crmClient.GetCustomerByEmail(order.userEmail); if (customer == null) { return(BadRequest("Fail when access CRM.")); } string cep_destino = customer.zip; // values ------------------------------------------------------------------------- decimal precoTotal = 0; decimal pesoTotal = 0; decimal comprimentoTotal = 0; decimal alturaTotal = 0; decimal larguraTotal = 0; decimal diametroTotal = 0; foreach (OrderItem orderItem in order.OrderItems) { precoTotal += (orderItem.Product.preco * orderItem.quantidade); pesoTotal += (orderItem.Product.peso * orderItem.quantidade); comprimentoTotal += (orderItem.Product.comprimento * orderItem.quantidade); alturaTotal += (orderItem.Product.altura * orderItem.quantidade); larguraTotal += (orderItem.Product.largura * orderItem.quantidade); diametroTotal += (orderItem.Product.diametro * orderItem.quantidade); } // freight -------------------------------------------------------------------------- cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", cep_origem, cep_destino, pesoTotal.ToString(), 1, comprimentoTotal, alturaTotal, larguraTotal, diametroTotal, "N", precoTotal, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { order.precoTotal = precoTotal; order.pesoTotal = pesoTotal; order.precoFrete = Decimal.Parse(resultado.Servicos[0].Valor, NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands, new CultureInfo("pt-BR")); order.dataEntrega = DateTime.Now.AddDays(double.Parse(resultado.Servicos[0].PrazoEntrega)); db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { throw; } } else { return(BadRequest("Fail when access Correios. Erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } return(Ok("Freight success calculeted.")); } else { throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("{\"Message\": \"Authorization has been denied for this request.\"}", System.Text.Encoding.UTF8, "application/json"), ReasonPhrase = "Unauthorized" }); } }
public IHttpActionResult CalculateShipping(int id) { Order order = db.Orders.Find(id); if (checkUserFromOrder(User, order)) { if (order == null) { return(NotFound()); } } else { return(StatusCode(HttpStatusCode.Forbidden)); } string cepOrigem = "69096010"; string frete; string cepDestino; decimal peso = 0; int formato = 1; decimal comprimento = 0; decimal altura = 0; decimal largura = 0; decimal diamentro = 0; string entregaMaoPropria = "N"; //decimal valorDeclarado= 0; string avisoRecebimento = "S"; decimal shipping; if (checkUserFromOrder(User, order)) { if (order == null) { return(NotFound()); } } else { return(StatusCode(HttpStatusCode.Forbidden)); } if (order.OrderItems.Count == 0) { return(BadRequest("Pedido sem itens")); } ICollection <OrderItem> produtos = order.OrderItems; CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(User.Identity.Name); if (customer != null) { cepDestino = customer.zip; } else { return(BadRequest("Falha ao consultar o CRM")); } foreach (OrderItem item in produtos) { Product product = db.Products.Find(item.ProductId); peso = (item.Quantity * product.weight) + peso; comprimento = (item.Quantity * product.lenght) + comprimento; altura = (item.Quantity * product.height) + altura; largura = (item.Quantity * product.width) + largura; diamentro = (item.Quantity * product.diameter) + diamentro; order.Value = (item.Quantity * order.Value) + product.price; } order.Weight = peso; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", cepOrigem, cepDestino, Convert.ToString(peso), formato, Decimal.ToInt32(comprimento), Decimal.ToInt32(altura), Decimal.ToInt32(largura), Decimal.ToInt32(diamentro), entregaMaoPropria, Decimal.ToInt32(order.Value), avisoRecebimento); if (resultado.Servicos[0].Erro.Equals("0")) { frete = "Valor do frete: "+ resultado.Servicos[0].Valor + " - Prazo de entrega: "+ resultado.Servicos[0].PrazoEntrega + " dia(s)"; shipping = Convert.ToDecimal(resultado.Servicos[0].Valor); order.DeliveryDate = order.DateOrder.AddDays(Int32.Parse(resultado.Servicos[0].PrazoEntrega)); } else { return(BadRequest("Código do erro: "+ resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } if (!order.Status.Equals("NOVO")) { BadRequest("Pedido com Status diferente de 'NOVO'"); } if (id != order.Id) { return(BadRequest()); } order.ShippingPrice = shipping; db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } else { throw; } } return(StatusCode(HttpStatusCode.NoContent)); }
public async void selfDestruct(object sender, EventArgs args) { if (!CrossConnectivity.Current.IsConnected) { await DisplayAlert("alerta", "por favor conecte-se na internet ", "ok"); return; } if (cep.Text.Contains("-") && cep.Text.Length < 9) { await DisplayAlert("alerta", "preencha corretamente o cep ", "ok"); return; } if (!cep.Text.Contains("-") && cep.Text.Length < 8) { await DisplayAlert("alerta", "preencha corretamente o cep ", "ok"); return; } if (comp.SelectedIndex == 0) { await DisplayAlert("alerta", "preencha o comprimento ", "ok"); return; } if (largura.SelectedIndex == 0) { await DisplayAlert("alerta", "preencha o largura ", "ok"); return; } if (altura.SelectedIndex == 0) { await DisplayAlert("alerta", "preencha o altura ", "ok"); return; } if (pesostr.SelectedIndex == 0) { await DisplayAlert("alerta", "preencha o peso ", "ok"); return; } string yORn; yORn = "N"; if (avisoRece.IsToggled) { yORn = "S"; } //string myinput = await InputBox(this.Navigation); CalcPrecoPrazoWS ws = new CalcPrecoPrazoWS(); cResultado c = ws.CalcPrecoPrazo("", "", "40010 , 41106", cep_origem, cep.Text, pesostr.Items.ElementAt(pesostr.SelectedIndex), 1, int.Parse(comp.Items.ElementAt(comp.SelectedIndex)), int.Parse(altura.Items.ElementAt(altura.SelectedIndex)), int.Parse(largura.Items.ElementAt(largura.SelectedIndex)), 0, "N", 19.5m, yORn); if (!string.IsNullOrEmpty(c.Servicos.ElementAt(0).MsgErro)) { await DisplayAlert("Sedex varejo", "Erro: " + c.Servicos.ElementAt(0).MsgErro, "ok"); } else { await DisplayAlert("Sedex varejo", "preço: " + c.Servicos.ElementAt(0).Valor + "\nprazo em dias:" + c.Servicos.ElementAt(0).PrazoEntrega, "ok"); } if (!string.IsNullOrEmpty(c.Servicos.ElementAt(1).MsgErro)) { await DisplayAlert("Sedex varejo", "Erro: " + c.Servicos.ElementAt(1).MsgErro, "ok"); } else { await DisplayAlert("PAC varejo", "preço: " + c.Servicos.ElementAt(1).Valor + "\nprazo em dias:" + c.Servicos.ElementAt(1).PrazoEntrega, "ok"); } }
public IHttpActionResult PutOrderCalcShipping(int id) { String cepDestino = null; Order order = db.Orders.Find(id); if (order == null) { return(BadRequest("Order not found!")); } if (!CheckUser(order.UserName)) { return(Unauthorized()); } if ((order.Status != "Novo") && (order.Shipping != 0)) { return(BadRequest("Order Status invalid! Expected: 'Novo'")); } try { CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(order.UserName); if (customer == null) { return(BadRequest("Customer not found!")); } cepDestino = customer.zip; } catch (Exception) { return(BadRequest("CRM not available!")); } List <OrderItem> items = order.OrderItems.ToList(); if (items.Count == 0) { return(BadRequest("This Ordens has no item!")); } Random random = new Random(); decimal comprimento = random.Next(16, 105); decimal largura = random.Next(11, 105); decimal diametro = random.Next(5, 91); decimal altura = random.Next(2, 105); double weight = random.NextDouble() * 30.0; decimal price = 0; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado result = correios.CalcPrecoPrazo("", "", "40010", "37540000", cepDestino, weight.ToString(), 1, comprimento, altura, largura, diametro, "N", price, "S"); if (result.Servicos[0].Erro.Equals("0")) { NumberFormatInfo format = new CultureInfo("pt-BR", false).NumberFormat; order.TotalPrice = decimal.Parse(result.Servicos[0].Valor, format) + price; order.TotalWeight = Convert.ToDecimal(weight); order.Shipping = decimal.Parse(result.Servicos[0].Valor, format); order.DateDelivery = DateTime.Now.AddDays(Convert.ToDouble(result.Servicos[0].PrazoEntrega)); db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } else { throw; } } return(Ok()); } else { return(BadRequest("Error Code:" + result.Servicos[0].Erro + " Error: " + result.Servicos[0].MsgErro)); } }
public IHttpActionResult FreteDataEntregaOrder(int id) { // recupera o pedido pelo ID Order order = db.Orders.Find(id); // se nao existir o pedido if (order == null) { return(BadRequest("Pedido não existe")); } else { // confere se é o admin ou o dono if (checkUserFromOrder(User, order)) { if (order.statusOrder != "novo") { return(BadRequest("Status do pedido diferente de 'novo', não é possivel recalcular o frete.")); } if (order.OrderItems.Count == 0) { return(BadRequest("Pedido sem itens cadastrados")); } CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(User.Identity.Name); // zera as medidas decimal considerarDiametro = 0; decimal considerarAltura = 0; decimal considerarComprimento = 0; decimal largura = 0; // confere se achou o cliente if (customer != null) { order.priceOrder = 0; order.weightOrder = 0; // soma medida dos itens foreach (OrderItem tmpOrder in order.OrderItems) { // somatorio do preço order.priceOrder += tmpOrder.Product.preco * tmpOrder.quantidade; // somatorio do peso order.weightOrder += tmpOrder.Product.peso * tmpOrder.quantidade; // -- considerando que os produtos estaram um do lado do outro, // somo a largura e pego a maior altura , comprimento e diametro -- // // somatorio da largura largura += tmpOrder.Product.largura * tmpOrder.quantidade; if (tmpOrder.Product.altura > considerarAltura) { considerarAltura = tmpOrder.Product.altura; } if (tmpOrder.Product.diametro > considerarDiametro) { considerarDiametro = tmpOrder.Product.diametro; } if (tmpOrder.Product.comprimento > considerarComprimento) { considerarComprimento = tmpOrder.Product.comprimento; } } // Considerando que a loja esteja em São Luís - MA => Rua Vila Anselmo - 65040-101 CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); // ( string nCdEmpresa, string sDsSenha, string nCdServico, string sCepOrigem, // string sCepDestino, string nVlPeso, int nCdFormato, decimal nVlComprimento, // decimal nVlAltura, decimal nVlLargura, decimal nVlDiametro, string sCdMaoPropria, // decimal nVlValorDeclarado, string sCdAvisoRecebimento) cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "65040101", customer.zip, order.weightOrder.ToString(), 1, considerarComprimento, considerarAltura, largura, considerarDiametro, "N", order.priceOrder, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { // ajusta preço do frete order.priceFreight = Convert.ToDecimal(resultado.Servicos[0].Valor) / 100; // atualiza o preço do pedido , somando o valor do frete order.priceOrder += order.priceFreight; // considerar a data da entrega = data pedido mais prazo entrega order.dateOrderDelivery = order.dateOrder.AddDays(Convert.ToDouble(resultado.Servicos[0].PrazoEntrega)); //modificações são persistidas no banco de dados db.SaveChanges(); return(Ok("Preço do frete: R$ " + resultado.Servicos[0].Valor + " => Entrega em " + resultado.Servicos[0].PrazoEntrega + " dia(s)")); } else { return(BadRequest("Ouve um erro " + resultado.Servicos[0].Erro + " , " + resultado.Servicos[0].MsgErro)); } } else { return(BadRequest("Impossibilidade ou erro ao acessar o serviço de CRM ")); } } else { return(BadRequest("Acesso não autorizado")); } } }
public IHttpActionResult PutCalcShipment(int id) { Order orders = db.Orders.Find(id); if (orders != null) { if (((User.IsInRole("ADMIN")) || orders.email == User.Identity.Name)) { if ((orders.status == "novo") && (orders.precoFrete == 0)) { try { string cep = FindCep(orders.email); if (cep.Equals("FAULT")) { return(BadRequest("Impossible to Access CRM service")); } else if (cep.Equals("NOCUSTOMER")) { return(BadRequest("User is not registered")); } else { List <OrderItem> item = orders.OrderItems.ToList(); decimal largura = 0; decimal altura = 0; decimal comprimento = 0; decimal diametro = 0; decimal peso = 0; decimal preco = 0; if (item.Count != 0) { for (int i = 0; i < item.Count(); i++) { altura = altura + (item[i].product.altura * item[i].quantidade); peso = peso + (item[i].product.peso * item[i].quantidade); preco = preco + (item[i].product.preco * item[i].quantidade); if (item[i].product.comprimento > comprimento) { comprimento = item[i].product.comprimento; } if (item[i].product.largura > largura) { largura = item[i].product.largura; } if (item[i].product.diametro > diametro) { diametro = item[i].product.diametro; } } CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", cep, peso.ToString(), 1, comprimento, altura, largura, diametro, "N", preco, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { //String shipment; //shipment = "Valor Frete: " + resultado.Servicos[0].Valor + " Prazo de Entrega: " + resultado.Servicos[0].PrazoEntrega + " dias"; NumberFormatInfo numberFormatInfo = new CultureInfo("pt-BR", false).NumberFormat; orders.precoTotal = decimal.Parse(resultado.Servicos[0].Valor, numberFormatInfo) + preco; orders.pesoTotal = peso; orders.precoFrete = decimal.Parse(resultado.Servicos[0].Valor, numberFormatInfo); orders.dataEntrega = DateTime.Now.AddDays(Convert.ToDouble(resultado.Servicos[0].PrazoEntrega)); db.Entry(orders).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } else { throw; } } return(Ok(orders)); } else { return(BadRequest("Correios Message Error: " + resultado.Servicos[0].Erro + " Error: " + resultado.Servicos[0].MsgErro)); } } else { return(BadRequest("No itens in this order")); } } } catch (Exception) { throw; } } else { return(BadRequest("This order has a STATUS different than novo")); } } else { return(BadRequest("This user does not have rights to access this order")); } } else { return(BadRequest("Order not Found")); } }