Exemplo n.º 1
0
    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);
    }