public void Can_get_shoppingCartItem_additional_shippingCharge() { var product1 = new Product { Weight = 1.5M, Height = 2.5M, Length = 3.5M, Width = 4.5M, AdditionalShippingCharge = 5.5M, IsShipEnabled = true }; _productService.InsertProduct(product1); var product2 = new Product { Weight = 11.5M, Height = 12.5M, Length = 13.5M, Width = 14.5M, AdditionalShippingCharge = 6.5M, IsShipEnabled = true }; _productService.InsertProduct(product2); var sci1 = new ShoppingCartItem { AttributesXml = string.Empty, Quantity = 3, ProductId = product1.Id }; var sci2 = new ShoppingCartItem { AttributesXml = string.Empty, Quantity = 4, ProductId = product2.Id }; //sci3 is not shippable var product3 = new Product { Weight = 11.5M, Height = 12.5M, Length = 13.5M, Width = 14.5M, AdditionalShippingCharge = 7.5M, IsShipEnabled = false }; _productService.InsertProduct(product3); var sci3 = new ShoppingCartItem { AttributesXml = string.Empty, Quantity = 5, ProductId = product3.Id }; var cart = new List <ShoppingCartItem> { sci1, sci2, sci3 }; _orderTotalCalcService.GetShoppingCartAdditionalShippingCharge(cart).Should().Be(42.5M); }
public void CanGetShoppingCartItemAdditionalShippingCharge() { var product = _productService.GetProductBySku("FR_451_RB"); product.AdditionalShippingCharge = 21.25M; product.IsFreeShipping = false; _productService.UpdateProduct(product); var additionalShippingCharge = _orderTotalCalcService.GetShoppingCartAdditionalShippingCharge(ShoppingCart); product.AdditionalShippingCharge = 0M; product.IsFreeShipping = true; _productService.UpdateProduct(product); additionalShippingCharge.Should().Be(42.5M); }
/// <summary> /// Gets available shipping options /// </summary> /// <param name="getShippingOptionRequest">A request for getting shipping options</param> /// <returns>Represents a response of getting shipping rate options</returns> public GetShippingOptionResponse GetShippingOptions(GetShippingOptionRequest getShippingOptionRequest) { if (getShippingOptionRequest == null) { throw new ArgumentNullException("getShippingOptionRequest"); } var response = new GetShippingOptionResponse(); if (getShippingOptionRequest.Items == null) { response.AddError("Sem items para enviar"); return(response); } if (getShippingOptionRequest.ShippingAddress == null) { response.AddError("Endereço de envio em branco"); return(response); } if (getShippingOptionRequest.ShippingAddress.ZipPostalCode == null) { response.AddError("CEP de envio em branco"); return(response); } var result = ProcessShipping(getShippingOptionRequest, response); if (result == null) { response.AddError("Não há serviços disponíveis no momento"); return(response); } else { List <string> group = new List <string>(); foreach (cServico servico in result.Servicos.OrderBy(s => s.Valor)) { Debug.WriteLine("Plugin.Shipping.Correios: Retorno WS"); Debug.WriteLine("Codigo: " + servico.Codigo); Debug.WriteLine("Valor: " + servico.Valor); Debug.WriteLine("Valor Mão Própria: " + servico.ValorMaoPropria); Debug.WriteLine("Valor Aviso Recebimento: " + servico.ValorAvisoRecebimento); Debug.WriteLine("Valor Declarado: " + servico.ValorValorDeclarado); Debug.WriteLine("Prazo Entrega: " + servico.PrazoEntrega); Debug.WriteLine("Entrega Domiciliar: " + servico.EntregaDomiciliar); Debug.WriteLine("Entrega Sabado: " + servico.EntregaSabado); Debug.WriteLine("Erro: " + servico.Erro); Debug.WriteLine("Msg Erro: " + servico.MsgErro); if (servico.Erro == "0") { string name = CorreiosServices.GetServicePublicNameById(servico.Codigo.ToString()); if (!group.Contains(name)) { ShippingOption option = new ShippingOption(); option.Name = name; option.Description = "Prazo médio de entrega " + (servico.PrazoEntrega + _correiosSettings.DiasUteisAdicionais) + " dias úteis"; option.Rate = decimal.Parse(servico.Valor, CultureInfo.GetCultureInfo("pt-BR")) + _orderTotalCalculationService.GetShoppingCartAdditionalShippingCharge(getShippingOptionRequest.Items) + _correiosSettings.CustoAdicionalEnvio; response.ShippingOptions.Add(option); group.Add(name); } } else { _logger.Error("Plugin.Shipping.Correios: erro ao calcular frete: (" + CorreiosServices.GetServiceName(servico.Codigo.ToString()) + ")( " + servico.Erro + ") " + servico.MsgErro); } } return(response); } }