private void CalculateShippingCost( ShippingOption shippingOption, out decimal shippingCost, out decimal handlingFee) { OrderCalculator orderCalculator = new OrderCalculator(); ShippingMethod shippingMethod = shippingOption.CreateNonRealTimeShippingMethod(); if (StoreContext.CheckoutDetails.Coupon.DiscountType == Vevo.Domain.Discounts.Coupon.DiscountTypeEnum.FreeShipping) { shippingCost = 0; } else { decimal shippingCostProduct = orderCalculator.GetShippingCost( shippingMethod, StoreContext.ShoppingCart.SeparateCartItemGroups(), StoreContext.WholesaleStatus, StoreContext.GetOrderAmount().Discount); decimal shippingCostPromotion = CartItemPromotion.GetShippingCostFromPromotion(shippingMethod, StoreContext.ShoppingCart.SeparateCartItemGroups(), StoreContext.WholesaleStatus, StoreContext.GetOrderAmount().Discount); if (shippingMethod.GetType().IsAssignableFrom(typeof(FixedShippingMethod))) { if (shippingCostProduct > shippingCostPromotion) { shippingCost = shippingCostProduct; } else { shippingCost = shippingCostPromotion; } } else { shippingCost = shippingCostProduct + shippingCostPromotion; } } handlingFee = orderCalculator.GetHandlingFee( shippingMethod, StoreContext.ShoppingCart.SeparateCartItemGroups(), StoreContext.WholesaleStatus); }