private Decimal GetShippingPriceCorreios(String zipcode, Decimal peso, String codServico, Decimal comprimento, Decimal altura, Decimal largura, Decimal diametro, ref CarrinhoModel carrinho) { if (String.IsNullOrWhiteSpace(zipcode)) { return new Decimal(0); } //recupera os valores dos parametros para Correios var parameters = new ParametroService().GetByParameterType((int)TipoParametro.TipoDeEntrega); var cdCorreios = parameters.FirstOrDefault(x => "Código Correios" == x.Nome); var senhaCorreios = parameters.FirstOrDefault(x => "Senha Correios" == x.Nome); var maoPropria = parameters.FirstOrDefault(x => "Entrega mão propria Correios[S/N]" == x.Nome); var valorDeclarado = parameters.FirstOrDefault(x => "Entrega com valor declarado Correios[S/N]" == x.Nome); var avisoRecebimento = parameters.FirstOrDefault(x => "Entrega com aviso de recebimento Correios[S/N]" == x.Nome); var cepOrigem = parameters.FirstOrDefault(x => "Cep Origem Correios" == x.Nome); if (largura < 11) { largura = 11; } if (comprimento < 16) { comprimento = 16; } if (altura < 2) { altura = 2; } var correio = new CalcPrecoPrazoWS(); var retorno = correio.CalcPrecoPrazo(cdCorreios.Valor, senhaCorreios.Valor, codServico, cepOrigem.Valor, zipcode, peso.ToString(CultureInfo.InvariantCulture), 1, comprimento, altura, largura, diametro, maoPropria.Valor, 0, avisoRecebimento.Valor); if (retorno.Servicos.Any()) { var valor = retorno.Servicos[0].Valor.Replace(",", ""); int prazo; int.TryParse(retorno.Servicos[0].PrazoEntrega, out prazo); carrinho.PrazoEntrega = prazo; return decimal.Parse(valor) / 100; } return new Decimal(0); }
public ActionResult ShippingMethod(CarrinhoModel carrinho) { Decimal peso = carrinho.Items.Sum(x => x.Quantidade * x.Produto.Peso) / 1000; carrinho.ValorFrete = GetShippingPriceUPS(carrinho.ZipCode, peso); //Atualiza o valor das taxas para o estado if (UserAuthenticated != null && UserAuthenticated.IdCliente.HasValue) { var endereco = new EnderecoService().GetShippingAddressesByClientId(UserAuthenticated.IdCliente.Value); if (endereco.IdEstado.HasValue) { var tax = new TaxaService().GetByEstadoId(endereco.IdEstado.Value); if (tax != null && tax.Taxa.HasValue && carrinho.ValorSubtotal > 0) carrinho.ValorTaxas = Decimal.Round(((carrinho.ValorSubtotal / 100) * tax.Taxa.Value), 2); } } return PartialView(carrinho); }