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 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)); } }
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")); } } }
public cResultado calculateFreightAndDelivery(List <Item> items, string destiny, decimal value) { CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); string totalWeight = calculateTotalWeight(items).ToString(); decimal totalLength = calculateTotalLength(items); decimal totalHeight = calculateTotalHeight(items); decimal totalWidth = calculateTotalWidth(items); decimal totalDiameter = calculateTotalDiameter(items); return(correios.CalcPrecoPrazo("", "", "40010", "01311200", destiny, totalWeight, 1, totalLength, totalHeight, totalWidth, totalDiameter, "N", value, "S")); }
/// <summary> /// Calculates the shipping costs with Correios web service. /// </summary> /// <returns>List of results returned from Correios web service.</returns> public cResultado Calculate() { int count = Pacotes.Count(); if (count == 0) { return(null); } else if (count == 1) { System.Threading.Thread.CurrentThread.CurrentCulture = PtBrCulture; Pacote p = Pacotes[0]; try { using (CalcPrecoPrazoWS client = new CalcPrecoPrazoWS()) { #if DEBUG client.Proxy = new System.Net.WebProxy("127.0.0.1:8888"); #endif return(client.CalcPrecoPrazo( CodigoEmpresa, Senha, Servicos, CepOrigem, CepDestino, p.Peso.ToString("0.00", PtBrCulture), (p.FormatoPacote ? 1 : 2), p.Comprimento, p.Altura, p.Largura, p.Diametro, (MaoPropria ? "S" : "N"), p.ValorDeclarado, (AvisoRecebimento ? "S" : "N"))); } } catch (Exception ex) { _logger.Error("Plugin.Shipping.Correios: - Erro ao chamar WS dos Correios.\n" + ex.ToString()); return(null); } } else { //Para uma lógica futura de divisão de produtos em pacotes. return(null); } }
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 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)); } }
private cResultado calculaFretePrazoEntrega(Order order) { string codigoEmpresa = ""; //Empresa não conveniada com os correios string senhaEmpresa = ""; //Empresa não conveniada com os correios string codigoServico = "40010"; //Sedex varejo string cepOrigem = "37540000"; //Empresa situada em Santa Rita do Sapucaí string cepDestino = recuperaCepDoUsuarioNoCRM(order.userName); string pesoTotalEmKg = calculaPesoTotal(order).ToString(); int formatoEmbalagem = 1; //Formato de envio fixo usando caixa decimal comprimentoTotalEmCm = calculaComprimentoTotal(order); decimal itemDeMaiorAlturaEmCm = calculaMaiorAltura(order); decimal itemDeMaiorLarguraEmCm = calculaMaiorLargura(order); decimal itemDeMaiorDiametroEmCm = 0; //Fixado em zero dado que só enviaremos produtos em caixa e não em embalagem do tipo Rolo ou Prisma string avisoMaoPropia = "N"; decimal valorDeclarado = 0; string avisoRecebimento = "N"; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); return(correios.CalcPrecoPrazo(codigoEmpresa, senhaEmpresa, codigoServico, cepOrigem, cepDestino, pesoTotalEmKg, formatoEmbalagem, comprimentoTotalEmCm, itemDeMaiorAlturaEmCm, itemDeMaiorLarguraEmCm, itemDeMaiorDiametroEmCm, avisoMaoPropia, valorDeclarado, avisoRecebimento)); }
public IHttpActionResult CalculaFrete(int id) { Order order = db.Orders.Find(id); if (order == null) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Pedido não encontrado!"))); } if (!order.userName.Equals(User.Identity.Name) && User.IsInRole("USER")) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Usuário não autorizado!"))); } if (order.OrderItems.Count == 0) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "Não há items no pedido!"))); } if (order.status != "Novo") { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.Forbidden, "O Status do pedido deve ser Novo!"))); } //Busca o cep pelo e-mail CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(order.userName); if (customer == null) { return(BadRequest("Falha ao consultar o CRM")); } order.setPesoPedido(); //Função que efetua a soma dos pesos dos produtos contidos no pedido decimal comp = order.getComprimento(); decimal larg = order.getLargura(); decimal alt = order.getAltura(); //decimal diam = (decimal) Math.Sqrt(Math.Pow(Decimal.ToDouble(comp), 2) + Math.Pow(Decimal.ToDouble(larg), 2)); //Cálculo do diametro antes de eu ter visto que o valor era atributo do produto decimal diam = order.getDiametro(); order.setPrecoPedido(); //Função que efetua a soma dos preços dos produtos contidos no pedido string frete = "0", prazo = "0"; // O frete será calculado tendo como base o cep de origem sendo do Paraná (59950-000) CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "04510", "59950000", customer.zip.Replace("-", ""), order.peso_pedido.ToString(), 1, comp, alt, larg, diam, "N", order.preco_pedido, "S"); //Este cálculo mostrou-se ser muito sensivel ao tamanho dos pacotes, conforme dito por e-mail. if (!resultado.Servicos[0].Erro.Equals("0")) { return(BadRequest("Código do erro: " + resultado.Servicos[0].Erro + " - " + resultado.Servicos[0].MsgErro)); } frete = resultado.Servicos[0].Valor; prazo = resultado.Servicos[0].PrazoEntrega; // Atualiza o frete recebido e o prazo de entrega previsto supondo que o pedido seja fechado hoje order.preco_frete = Decimal.Parse(frete.Replace(",", ".")); order.data_entrega = TimeZoneInfo.ConvertTime(DateTime.Now.AddDays(Double.Parse(prazo)), TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time")).ToString("dd-MM-yyyy HH:mm:ss"); db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.NotFound, "Pedido não encontrado!"))); } else { throw; } } return(Ok("Frete calculado no valor de: " + frete + " e entrega estimada em " + prazo + " dia(s)")); }
public IHttpActionResult CalculaFreteData(int id) { string frete; Order order = db.Orders.Find(id); Customer customer; if (order == null) { return(BadRequest("O pedido não existe.")); } CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); if (IsAuthorized(order.Email)) { CRMRestClient client = new CRMRestClient(); customer = client.GetCustomerByEmail(User.Identity.Name); if (customer == null) { return(BadRequest("Falha ao consultar CEP: usuário não existe.")); } else { //.count = .length if (order.OrderItems.Count <= 0) { return(BadRequest("O pedido não contêm itens.")); } decimal pesoTotal = 0; decimal larguraTotal = 0; decimal comprimentoTotal = 0; decimal alturaTotal = 0; decimal diametroTotal = 0; foreach (OrderItem orderItem in order.OrderItems) { if (Convert.ToInt32(orderItem.Product.peso) > 0) { pesoTotal = pesoTotal + (Convert.ToInt32(orderItem.Product.peso) * orderItem.Quantity); } if (Convert.ToInt32(orderItem.Product.largura) > 0) { larguraTotal += (Convert.ToInt32(orderItem.Product.largura) * orderItem.Quantity); } if (Convert.ToInt32(orderItem.Product.comprimento) > 0) { if (Convert.ToInt32(orderItem.Product.comprimento) > comprimentoTotal) { comprimentoTotal = Convert.ToInt32(orderItem.Product.comprimento); } } if (Convert.ToInt32(orderItem.Product.altura) > 0) { if (Convert.ToInt32(orderItem.Product.altura) > alturaTotal) { alturaTotal = Convert.ToInt32(orderItem.Product.altura); } } if (Convert.ToInt32(orderItem.Product.diametro) > 0) { if (Convert.ToInt32(orderItem.Product.diametro) > diametroTotal) { diametroTotal = Convert.ToInt32(orderItem.Product.diametro); } } } string nCdServico = "40010"; string sCdCepOrigem = "69096010"; string sCdCepDestino = customer.zip.Trim().Replace("-", ""); string nVIPeso = pesoTotal.ToString(); int nCdFormato = 1; decimal nVIComprimento = comprimentoTotal; decimal nVIAltura = alturaTotal; decimal nVILargura = larguraTotal; decimal nVIDiametro = diametroTotal; string sCdMaoPropria = "N"; decimal nVIValorDeclarado = order.PrecoTotal; string sCdAvisoRecebimento = "S"; cResultado resultado; resultado = correios.CalcPrecoPrazo("", "", nCdServico, sCdCepOrigem, sCdCepDestino, nVIPeso, nCdFormato, nVIComprimento, nVIAltura, nVILargura, nVIDiametro, sCdMaoPropria, nVIValorDeclarado, sCdAvisoRecebimento); if (resultado == null) { return(BadRequest("Falha ao calcular o frete e prazo de entrega.")); } if (!resultado.Servicos[0].MsgErro.Equals("")) { return(BadRequest("Falha ao calcular o frete e prazo de entrega: " + resultado.Servicos[0].MsgErro)); } frete = "Valor do frete: "+ resultado.Servicos[0].Valor + " - Prazo de entrega:"+ resultado.Servicos[0].PrazoEntrega + " dia(s)"; order.PrecoFrete = decimal.Parse(resultado.Servicos[0].Valor); order.DataEntrega = DateTime.Now.AddDays(int.Parse(resultado.Servicos[0].PrazoEntrega)); order.PesoTotal = pesoTotal; order.PrecoTotal = order.PrecoTotal + decimal.Parse(resultado.Servicos[0].Valor); db.Entry(order).State = EntityState.Modified; db.SaveChanges(); return(Ok(db.Orders.Find(id))); } } else { return(BadRequest("Usuário não autorizado.")); } }
public List <Shipping> GetShipping(string cep) { string origem = "04094-050"; string destino = cep; double peso = 0; int largura = 0; int altura = 0; int comprimento = 0; Shipping freteFacil = new Shipping { Id = "frete-facil", Name = "PayPal Frete Fácil" }; Shipping freteECT = new Shipping { Id = "sedex", Name = "SEDEX Correios" }; foreach (Item item in items) { if (item.Product.Length > comprimento) { comprimento = item.Product.Length; } if (item.Product.Width > largura) { largura = item.Product.Width; } altura += item.Product.Height; peso += item.Product.Weight; } FreteFacilApi wsFreteFacil = PayPalApiFactory.instance.FreteFacil(); freteFacil.Value = wsFreteFacil.getPreco( origem, destino, largura, altura, comprimento, peso.ToString() ); CalcPrecoPrazoWS wsECT = new CalcPrecoPrazoWS(); freteECT.Value = Double.Parse(wsECT.CalcPrecoPrazo( "", "", "40010", origem, destino, peso.ToString(), 1, comprimento, altura, largura, 0, "n", 0, "n" ).Servicos[0].Valor); return(new List <Shipping> { freteFacil, freteECT }); }
public IHttpActionResult GetFreightAndDate(int id) { Order order = db.Orders.Find(id); if (order == null) { return(BadRequest("O pedido não existe.")); } if (IsAuthorized(order.Email)) { Customer customer; try { CRMRestClient client = new CRMRestClient(); customer = client.GetCustomerByEmail(User.Identity.Name); } catch (Exception e) { return(BadRequest("Falha ao consultar CEP: ocorreu um erro ao acessar o serviço de CRM.")); } if (customer == null) { return(BadRequest("Falha ao consultar CEP: usuário não existente.")); } else { if (order.OrderItems.Count <= 0) { return(BadRequest("O pedido não contêm itens.")); } decimal alturaFinal = 0; decimal larguraFinal = 0; decimal comprimentoFinal = 0; decimal diametroFinal = 0; decimal pesoFinal = 0; foreach (OrderItem oi in order.OrderItems) { // Incrementando peso pesoFinal += oi.Product.Peso * oi.Quantidade; // Incrementando a largura larguraFinal += (oi.Product.Largura * oi.Quantidade); // Pegando o maior comprimento if (oi.Product.Comprimento > comprimentoFinal) { comprimentoFinal = oi.Product.Comprimento; } // Pegando a maior largura if (oi.Product.Altura > alturaFinal) { alturaFinal = oi.Product.Altura; } // Pegando o maior diametro if (oi.Product.Diametro > diametroFinal) { diametroFinal = oi.Product.Diametro; } } CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); string nCdServico = "40010"; // SEDEX string sCdCepOrigem = "69096010"; string sCdCepDestino = customer.zip.Trim().Replace("-", ""); string nVIPeso = pesoFinal.ToString(); int nCdFormato = 1; // Caixa decimal nVIComprimento = comprimentoFinal; decimal nVIAltura = alturaFinal; decimal nVILargura = larguraFinal; decimal nVIDiametro = diametroFinal; string sCdMaoPropria = "N"; decimal nVIValorDeclarado = order.PrecoTotal; string sCdAvisoRecebimento = "S"; cResultado corresiosResult; try { corresiosResult = correios.CalcPrecoPrazo("", "", nCdServico, sCdCepOrigem, sCdCepDestino, nVIPeso, nCdFormato, nVIComprimento, nVIAltura, nVILargura, nVIDiametro, sCdMaoPropria, nVIValorDeclarado, sCdAvisoRecebimento); } catch (Exception e) { return(BadRequest("Falha ao calcular o frete e prazo de entrega: ocorreu um erro ao tentar acessar o serviço dos correios.")); } if (!corresiosResult.Servicos[0].MsgErro.Equals("")) { return(BadRequest("Falha ao calcular o frete e prazo de entrega: " + corresiosResult.Servicos[0].MsgErro)); } int prazo = int.Parse(corresiosResult.Servicos[0].PrazoEntrega); decimal valorFrete = decimal.Parse(corresiosResult.Servicos[0].Valor); // Atualizar pedido order.PrecoFrete = valorFrete; order.DataEntrega = DateTime.Now.AddDays(prazo); order.PesoTotal = pesoFinal; order.PrecoTotal += valorFrete; db.Entry(order).State = EntityState.Modified; db.SaveChanges(); return(Ok(db.Orders.Find(id))); } } else { return(BadRequest("Acesso não autorizado.")); } }
public IHttpActionResult CalcShipping(int id) { var order = db.Orders.Find(id); if (order == null) { return(BadRequest("The order cannot be found.")); } if (!order.status.Equals("NOVO") && !order.status.Equals("novo")) { return(BadRequest("The status of this order is not 'NOVO'.")); } if (!User.IsInRole("ADMIN") && !User.Identity.Name.Equals(order.email)) { return(BadRequest("User not Authorized.")); } if (order.OrderItems == null || order.OrderItems.Count == 0) { return(BadRequest("This order doesn't have any items.")); } Customer customer; try { CRMRestClient crmClient = new CRMRestClient(); customer = crmClient.GetCustomerByEmail(order.email); } catch (Exception e) { return(BadRequest("It is not possible to access the CRM service.")); } cResultado resultado; try { decimal totalWeight = 0; decimal totalWidth = 0; decimal totalHeight = 0; decimal totalDiameter = 0; decimal totalLength = 0; decimal totalOrder = 0; foreach (OrderItem orderItem in order.OrderItems) { var product = db.Products.Find(orderItem.ProductId); totalHeight = product.height; totalDiameter = product.diameter; totalLength = product.length; for (int i = 0; i < orderItem.quantity; i++) { totalWeight += product.weight; totalWidth += product.width; totalOrder += product.price; } } CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); try { resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", customer.zip, totalWeight.ToString(), 1, totalLength, totalHeight, totalWidth, totalDiameter, "N", totalOrder, "S"); } catch (Exception e) { return(BadRequest("It is not possible to access the CORREIOS service.")); } if (!resultado.Servicos[0].Erro.Equals("0")) { return(BadRequest("Correios response error. Error code: " + resultado.Servicos[0].Codigo + " | Message: " + resultado.Servicos[0].MsgErro)); } try { NumberFormatInfo nfi = new CultureInfo("pt-BR", false).NumberFormat; order.shippingPrice = decimal.Parse(resultado.Servicos[0].Valor, nfi); order.orderTotalPrice = totalOrder; order.orderTotalWeight = totalWeight; DateTime dt = DateTime.Today.AddDays(Convert.ToInt16(resultado.Servicos[0].PrazoEntrega)); order.deliveryDate = dt; } catch (Exception e2) { return(BadRequest("The order was not updated.")); } } catch (Exception e) { return(BadRequest("It is not possible to access the CORREIOS service.")); } db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(BadRequest("This order doesn't exist.")); } } return(Ok(resultado)); }
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 IHttpActionResult GetFrete(int orderId) { decimal pesoPedido = 0, alturaTotal = 0, largura = 0, comprimento = 0, diametro = 0, precoTotal = 0, valorFrete = 0; String CEPDestino, prazoEntrega; cResultado resultado; Order order = db.Orders.Where(p => p.Id == orderId).FirstOrDefault(); if (order == null) { return(BadRequest("Pedido de N. " + orderId + " não exisrte.")); } else if (order.OrderItems.Count == 0) { return(BadRequest("Pedido de N. " + orderId + " não possui itens.")); } else if (order.statusPedido != "novo") { return(BadRequest("Pedido de N. " + orderId + " com status diferente de 'novo'")); } if ((order.userEmail == User.Identity.Name) || (User.IsInRole("ADMIN"))) { CRMRestClient crmClient = new CRMRestClient(); try { Customer customer = crmClient.GetCustomerByEmail(User.Identity.Name); CEPDestino = customer.zip; } catch { return(BadRequest("Não foi possivel acessar o serviço de CRM.Verifique se o e-mail do usuário existe no crm")); } for (int itensPed = 0; itensPed < order.OrderItems.Count; itensPed++) { pesoPedido += (order.OrderItems.ElementAt(itensPed).quantidade *order.OrderItems.ElementAt(itensPed).Product.peso); alturaTotal += order.OrderItems.ElementAt(itensPed).Product.altura; precoTotal += (order.OrderItems.ElementAt(itensPed).quantidade *order.OrderItems.ElementAt(itensPed).Product.preco); if (order.OrderItems.ElementAt(itensPed).Product.largura > largura) { largura = order.OrderItems.ElementAt(itensPed).Product.largura; } if (order.OrderItems.ElementAt(itensPed).Product.comprimento > comprimento) { comprimento = (order.OrderItems.ElementAt(itensPed).quantidade *order.OrderItems.ElementAt(itensPed).Product.comprimento); } diametro = order.OrderItems.ElementAt(itensPed).Product.diametro; } CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); try { resultado = correios.CalcPrecoPrazo("", "", "40010", "37550000", CEPDestino, pesoPedido.ToString(), 1, comprimento, alturaTotal, largura, diametro, "N", 0, "S"); prazoEntrega = resultado.Servicos.ElementAt(0).PrazoEntrega; } catch { return(BadRequest("Ocorreu um erro ao acessar o servicço dos Correios")); } if (resultado.Servicos[0].Erro.Equals("0")) { NumberFormatInfo nfi = new CultureInfo("pt-BR", false).NumberFormat; valorFrete = decimal.Parse(resultado.Servicos[0].Valor, nfi); int prazo = int.Parse(resultado.Servicos.Single().PrazoEntrega); DateTime atual = DateTime.Now; atual = atual.AddDays(prazo); order.pesoPedido = pesoPedido; order.precoFrete = valorFrete; order.precoPedido = precoTotal; order.dataEntrega = atual; db.SaveChanges(); return(Ok("Frete Pedido N. " + orderId + " calculado com Sucesso. Frete: R$ " + resultado.Servicos.Single().Valor + " - Prazo: " + resultado.Servicos.Single().PrazoEntrega + " dias )")); } else { return(BadRequest("Código do erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } else { return(Ok("Acesso não autorizado.")); } }
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 CalculaFrete(int id) { Order order = db.Orders.Find(id); if (User.Identity.Name == order.userMail || User.IsInRole("ADMIN")) { if (order == null) { return(BadRequest("Pedido não existe!")); } if (order.OrderItems.Count == 0) { return(BadRequest("Pedido sem itens!")); } if (order.status != "novo") { return(BadRequest("Pedido não está com status de novo!")); } string cepDest = getCEP(order.userMail); if (cepDest == "0") { return(BadRequest("Falha ao consultar o CRM!")); } decimal valorTotal = calcValorTotal(order); decimal peso = calcPesoTotal(order); //para calculo do comprimento, altura, largura e diametro sempre pego o valor mais alto de cada item no pedido. decimal comprimento = (calcComprimento(order) < 16) ? 16 : calcComprimento(order); decimal altura = calcAltura(order); decimal largura = (calcLargura(order) < 11) ? 11 : calcLargura(order); decimal diametro = calcDiametro(order); string freteMsg; string frete; DateTime prazoEntrega; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", cepDest, peso.ToString(), 1, comprimento, altura, largura, diametro, "N", valorTotal, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { frete = resultado.Servicos[0].Valor; prazoEntrega = DateTime.Today.AddDays(Convert.ToInt16(resultado.Servicos[0].PrazoEntrega)); freteMsg = "Valor do frete: " + resultado.Servicos[0] .Valor + " - Prazo de entrega: " + resultado.Servicos[0].PrazoEntrega + " dia(s)"; order.pesoTotal = peso; order.precoFrete = decimal.Parse(frete, new CultureInfo("pt-BR", false).NumberFormat); order.precoTotal = valorTotal; order.dataEntrega = prazoEntrega; db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } } return(Ok(freteMsg)); } else { return(BadRequest("Código do erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } else { return(BadRequest("Acesso negado!")); } }
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 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 CalculaFrete(int id) { Order order = db.Orders.Find(id); if (order == null) { return(NotFound()); } if (order.email.Equals(User.Identity.Name) || User.IsInRole("ADMIN")) { if (!order.status.Equals("novo")) { return(BadRequest("Pedido com status diferente de: novo!")); } if (order.OrderItems == null) { return(BadRequest("Pedido sem itens de Produto")); } //Pegando o Cliente do Pedido: CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(order.email); if (customer == null) { return(BadRequest("Não foi possicel acessar o CRM.")); } //Calculando dimensoes da caixa para embalar os Produtos decimal AlturaDoMaiorProduto = 0; decimal ComprimentoDosProdutos = 0; decimal LaguraDoMaiorProduto = 0; decimal DiametroDoMaiorProduto = 0; decimal PesoDosProdutos = 0; decimal PrecoDosProdutos = 0; for (int i = 0; i < order.OrderItems.Count; i++) { PrecoDosProdutos += order.OrderItems.ElementAt(i).Product.preco; PesoDosProdutos += order.OrderItems.ElementAt(i).Product.peso; ComprimentoDosProdutos += order.OrderItems.ElementAt(i).Product.comprimento *order.OrderItems.ElementAt(i).QuantidadeDoProduto; if (order.OrderItems.ElementAt(i).Product.altura > AlturaDoMaiorProduto) { AlturaDoMaiorProduto = order.OrderItems.ElementAt(i).Product.altura; } if (order.OrderItems.ElementAt(i).Product.largura > LaguraDoMaiorProduto) { LaguraDoMaiorProduto = order.OrderItems.ElementAt(i).Product.largura; } if (order.OrderItems.ElementAt(i).Product.diametro > DiametroDoMaiorProduto) { DiametroDoMaiorProduto = order.OrderItems.ElementAt(i).Product.diametro; } } string frete; CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); cResultado resultado = correios.CalcPrecoPrazo("", "", "40010", "37540000", customer.zip, PesoDosProdutos.ToString(), 1, ComprimentoDosProdutos, AlturaDoMaiorProduto, LaguraDoMaiorProduto, DiametroDoMaiorProduto, "N", PrecoDosProdutos, "S"); if (resultado.Servicos[0].Erro.Equals("0")) { frete = "Identificado do Pedido: " + order.Id + " - Valor do seu frete: " + resultado.Servicos[0].Valor + " - Prazo de entrega: " + resultado.Servicos[0].PrazoEntrega + " dia(s)"; //Atualizando o Pedido: string FreteCalculado = resultado.Servicos[0].Valor.Replace(",", "."); order.precoFrete = Convert.ToDecimal(FreteCalculado); order.precoDoPedido = PrecoDosProdutos + Convert.ToDecimal(FreteCalculado); order.pesoTotal = PesoDosProdutos; order.dataDaEntrega = order.dataDoPedido.AddDays(Convert.ToDouble(resultado.Servicos[0].PrazoEntrega)); //Salvando o Pedido atualizado: db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } else { throw; } } //Retorno da mensagem do frete return(Ok(frete)); } else { return(BadRequest("Código do erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } } else { return(StatusCode(HttpStatusCode.Forbidden)); } }
public Frete() { ws = new CalcPrecoPrazoWS(); }
//public List<TodoItem> Items { get; private set; } = new List<TodoItem>(); public SoapService() { todoService = new br.com.correios.ws.CalcPrecoPrazoWS(); //todoService.Url = Constants.SoapUrl; }
private void button1_Click(object sender, EventArgs e) { CalcPrecoPrazoWS cs = new CalcPrecoPrazoWS(); cResultado res_sedex; cResultado res_pac; pnl_resultado_calc_prec_praz.Visible = false; lbl_vlrtotalsedex.Text = ""; lbl_prazo_sedex.Text = ""; lbl_vlrtotalpac.Text = ""; lbl_prazopac.Text = ""; string SEDEX = "40010"; string PAC = "41106"; string CEP_Origem = txtbox_ceporigem.Text.ToString(); string CEP_Destino = txtbox_cepdestino.Text.ToString(); string VlPeso = txtbox_peso.Text.ToString(); // kg int formatoencomenda; //Formato da encomenda (incluindo embalagem). //Valores possíveis: 1, 2 ou 3 //1 – Formato caixa/pacote //2 – Formato rolo/prisma //3 - Envelope System.Net.ServicePointManager.Expect100Continue = false; if (PegaDadosEndereco(CEP_Origem, CEP_Destino) == -1) { return; } Int32.TryParse(cmbbox_tipoencomenda.Text.Substring(0, 1), out formatoencomenda); decimal Comprimento; Decimal.TryParse(txtbox_compimento.Text.ToString(), out Comprimento); decimal altura; Decimal.TryParse(txtbox_altura.Text.ToString(), out altura); decimal largura; Decimal.TryParse(txtbox_largura.Text.ToString(), out largura); decimal diametro; Decimal.TryParse(txtbox_diametro.Text.ToString(), out diametro); string sCdMaoPropria = (chkbox_maopropria.Checked == true)?"S":"N"; decimal VlrDeclardo;// senao optar pelo serviço informar zeros Decimal.TryParse(txtbox_valordeclarado.Text.ToString(), out VlrDeclardo); string sCdAvisoRecebimento = (chkbox_avisorecebimento.Checked == true)?"S":"N"; //precisa da linha abaixo para remover o erro ==> The request failed with HTTP status 417: Expectation failed. System.Net.ServicePointManager.Expect100Continue = false; try { pnl_resultado_calc_prec_praz.Visible = true; System.Net.ServicePointManager.Expect100Continue = false; res_sedex = cs.CalcPrecoPrazo("", "", SEDEX, CEP_Origem, CEP_Destino, VlPeso, formatoencomenda, Comprimento, altura, largura, diametro, sCdMaoPropria, VlrDeclardo, sCdAvisoRecebimento); //if (res_sedex.Servicos[0].Erro.Length > 0) // MessageBox.Show(res_sedex.Servicos[0].MsgErro, "Sedex ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error); lbl_vlrtotalsedex.Text += res_sedex.Servicos[0].Valor.ToString(); lbl_prazo_sedex.Text += res_sedex.Servicos[0].PrazoEntrega.ToString() + " Dia(s)"; res_pac = cs.CalcPrecoPrazo("", "", PAC, CEP_Origem, CEP_Destino, VlPeso, formatoencomenda, Comprimento, altura, largura, diametro, sCdMaoPropria, VlrDeclardo, sCdAvisoRecebimento); lbl_vlrtotalpac.Text += res_pac.Servicos[0].Valor.ToString(); lbl_prazopac.Text += res_pac.Servicos[0].PrazoEntrega.ToString() + " Dia(s)"; if (!res_sedex.Servicos[0].Erro.Equals("0")) { MessageBox.Show(res_sedex.Servicos[0].MsgErro, "Sedex ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (!res_pac.Servicos[0].Erro.Equals("0")) { MessageBox.Show(res_pac.Servicos[0].MsgErro, "PAC ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (Exception exp) { MessageBox.Show(exp.ToString(), "ERRO Execute", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public IHttpActionResult CalculaFrete(long id, Order order) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (id != order.Id) { return(BadRequest("Pedido não encontrado!")); } CRMRestClient crmClient = new CRMRestClient(); Customer customer = crmClient.GetCustomerByEmail(User.Identity.Name); CalcPrecoPrazoWS correios = new CalcPrecoPrazoWS(); order.totalPrice = 0; order.totalWeight = 0; totalWidth = 0; maxHeight = 0; maxLength = 0; maxDiameter = 0; if (!isAuthenticated(order.email)) { return(BadRequest("Acesso não autorizado!")); } if (customer == null) { return(BadRequest("Falha ao consultar o CRM")); } if (order.OrderItems.Count == 0) { return(BadRequest("Pedido não contem itens!")); } if (!order.orderStatus.Equals("novo")) { return(BadRequest("Pedido com status diferente de novo!")); } getFreightParameters(order); cResultado resultado = correios.CalcPrecoPrazo("", "", " 04014", "04236094", customer.zip.Replace("-", ""), Convert.ToString(order.totalWeight), 1, maxLength, maxHeight, totalWidth, maxDiameter, "N", order.totalPrice, "S"); if (!resultado.Servicos[0].Erro.Equals("0")) { return(BadRequest("Falha na consulta dos correios, erro: " + resultado.Servicos[0].Erro + "-" + resultado.Servicos[0].MsgErro)); } order.freightPrice = Decimal.Parse(resultado.Servicos[0].Valor.Replace(",", ".")); order.deliveryDate = DateTime.Now.AddDays(Double.Parse(resultado.Servicos[0].PrazoEntrega)); order.totalPrice = order.totalPrice + order.freightPrice; string result = "Valor do frete: " + order.freightPrice + " - Prazo de entrega até : " + order.deliveryDate; db.Entry(order).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateConcurrencyException) { if (!OrderExists(id)) { return(NotFound()); } else { throw; } } return(Ok(result)); }
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")); } }
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()); }