Exemplo n.º 1
0
        private void CalculateShipping(Order order)
        {
            ShippingRateDisplay rate = null;

            if (!string.IsNullOrEmpty(order.ShippingMethodId) && order.HasShippingItems)
            {
                rate = _app.OrderServices.FindShippingRateByUniqueKey(order);
            }

            if (rate != null)
            {
                order.ShippingMethodDisplayName    = rate.DisplayName ?? string.Empty;
                order.ShippingProviderId           = rate.ProviderId;
                order.ShippingProviderServiceCode  = rate.ProviderServiceCode;
                order.TotalShippingBeforeDiscounts = Money.RoundCurrency(rate.Rate);
            }
            else
            {
                order.ClearShippingPricesAndMethod();
                order.TotalShippingBeforeDiscounts = order.TotalHandling;
            }

            if (order.TotalShippingBeforeDiscountsOverride >= 0)
            {
                order.TotalShippingBeforeDiscounts = order.TotalShippingBeforeDiscountsOverride;
            }
        }
Exemplo n.º 2
0
        private void LoadShippingMethods(Order o)
        {
            var rates = new SortableCollection <ShippingRateDisplay>();

            if (!o.HasShippingItems)
            {
                var r = new ShippingRateDisplay
                {
                    DisplayName         = GlobalLocalization.GetString("NoShippingRequired"),
                    ProviderId          = string.Empty,
                    ProviderServiceCode = string.Empty,
                    Rate             = 0,
                    ShippingMethodId = "NOSHIPPING"
                };
                rates.Add(r);
            }
            else
            {
                // Shipping Methods
                rates = HccApp.OrderServices.FindAvailableShippingRates(o);

                if (rates.Count < 1)
                {
                    var result = new ShippingRateDisplay();
                    result.DisplayName      = GlobalLocalization.GetString("ToBeDetermined");
                    result.ShippingMethodId = "TOBEDETERMINED";
                    result.Rate             = 0;
                    rates.Add(result);
                }
            }

            litShippingMethods.Text = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, o.ShippingMethodUniqueKey);
        }
Exemplo n.º 3
0
        private void LoadShippingMethods(Order o)
        {
            SortableCollection <ShippingRateDisplay> Rates = new SortableCollection <ShippingRateDisplay>();

            if (o.HasShippingItems == false)
            {
                ShippingRateDisplay r = new ShippingRateDisplay();
                r.DisplayName         = SiteTerms.GetTerm(SiteTermIds.NoShippingRequired);
                r.ProviderId          = "";
                r.ProviderServiceCode = "";
                r.Rate             = 0;
                r.ShippingMethodId = "NOSHIPPING";
                Rates.Add(r);
            }
            else
            {
                // Shipping Methods

                Rates = MTApp.OrderServices.FindAvailableShippingRates(o);

                if ((Rates.Count < 1))
                {
                    ShippingRateDisplay result = new ShippingRateDisplay();
                    result.DisplayName      = "Shipping can not be calculated at this time. We will contact you after receiving your order with the exact shipping charges.";
                    result.ShippingMethodId = "TOBEDETERMINED";
                    result.Rate             = 0;
                    Rates.Add(result);
                }
            }

            this.litShippingMethods.Text = MerchantTribe.Commerce.Utilities.HtmlRendering.ShippingRatesToRadioButtons(Rates, 300, o.ShippingMethodUniqueKey);
        }
Exemplo n.º 4
0
        private ShippingRateDisplay FindSelectedRate(string uniqueKey, Order o)
        {
            ShippingRateDisplay result = null;

            if (o.HasShippingItems == false)
            {
                result                     = new ShippingRateDisplay();
                result.DisplayName         = "No Shipping Required";
                result.ProviderId          = "NOSHIPPING";
                result.ProviderServiceCode = "NOSHIPPING";
                result.Rate                = 0m;
                result.ShippingMethodId    = "NOSHIPPING";
            }
            else
            {
                MerchantTribe.Commerce.Utilities.SortableCollection <ShippingRateDisplay> rates = SessionManager.LastShippingRates;
                if ((rates == null) | (rates.Count < 1))
                {
                    rates = MTApp.OrderServices.FindAvailableShippingRates(o);
                }

                foreach (ShippingRateDisplay r in rates)
                {
                    if (r.UniqueKey == uniqueKey)
                    {
                        result = r;
                        break;
                    }
                }
            }

            return(result);
        }
Exemplo n.º 5
0
        public bool OrdersRequestShippingMethod(ShippingRateDisplay r, Order o)
        {
            var result = false;

            if (r != null)
            {
                o.ClearShippingPricesAndMethod();
                o.ShippingMethodId            = r.ShippingMethodId;
                o.ShippingProviderId          = r.ProviderId;
                o.ShippingProviderServiceCode = r.ProviderServiceCode;
                result = true;
            }
            return(result);
        }
Exemplo n.º 6
0
        private bool SaveInfoToOrder(bool savePaymentData)
        {
            bool result = true;

            if (o != null)
            {
                if (this.chkBillToSame.Checked == true)
                {
                    this.BillToAddress.LoadFromAddress(this.ShipToAddress.GetAsAddress());
                }

                // Save Information to Basket in Case Save as Order Fails
                o.BillingAddress  = this.BillToAddress.GetAsAddress();
                o.ShippingAddress = this.ShipToAddress.GetAsAddress();
                TagOrderWithUser();

                o.UserEmail = this.EmailAddressTextBox.Text;

                // Save Shipping Selection
                ShippingRateDisplay r = FindSelectedRate(this.ShippingRatesList.SelectedValue, o);
                if (r != null)
                {
                    MTApp.OrderServices.OrdersRequestShippingMethodByUniqueKey(r.UniqueKey, o);
                }

                if (savePaymentData)
                {
                    // Save Payment Information
                    SavePaymentInfo(o);
                }

                MTApp.CalculateOrderAndSave(o);
            }

            else
            {
                result = false;
            }

            return(result);
        }
        private ShippingRateDisplay FindSelectedRate(string uniqueKey, Order o)
        {
            ShippingRateDisplay result = null;

            if (!o.HasShippingItems)
            {
                result = new ShippingRateDisplay
                {
                    DisplayName         = GlobalLocalization.GetString("NoShippingRequired"),
                    ProviderId          = string.Empty,
                    ProviderServiceCode = string.Empty,
                    Rate             = 0m,
                    ShippingMethodId = "NOSHIPPING"
                };
            }
            else
            {
                result = HccApp.OrderServices.FindShippingRateByUniqueKey(uniqueKey, o);
            }

            return(result);
        }
Exemplo n.º 8
0
        public Utilities.SortableCollection <Shipping.ShippingRateDisplay> FindAvailableShippingRates(Order o)
        {
            Utilities.SortableCollection <Shipping.ShippingRateDisplay> result = new Utilities.SortableCollection <Shipping.ShippingRateDisplay>();

            // Get all the methods that apply to this shipping address and store
            List <Zone>           zones   = ShippingZones.FindAllZonesForAddress(o.ShippingAddress, o.StoreId);
            List <ShippingMethod> methods = new List <ShippingMethod>();

            methods = this.ShippingMethods.FindForZones(zones);

            // Get Rates for each Method
            foreach (Shipping.ShippingMethod m in methods)
            {
                Collection <Shipping.ShippingRateDisplay> tempRates = m.GetRates(o);
                if (tempRates != null)
                {
                    for (int i = 0; i <= tempRates.Count - 1; i++)
                    {
                        ShippingRateDisplay fRate = tempRates[i].GetCopy();
                        //fRate.AdjustRate(m.AdjustmentType, m.Adjustment);
                        result.Add(fRate);
                    }
                }
            }

            // Tally up extra ship fees
            decimal totalExtraFees = 0m;

            foreach (LineItem li in o.Items)
            {
                if (li.ExtraShipCharge > 0)
                {
                    totalExtraFees += li.ExtraShipCharge;
                }
            }

            // update results with extra ship fees and handling
            foreach (Shipping.ShippingRateDisplay displayRate in result)
            {
                displayRate.Rate += totalExtraFees + o.TotalHandling;
            }


            // Apply promotions to rates here:

            // Run workflow to get shipping rate discounts
            //BusinessRules.ShippingTaskContext c = new BusinessRules.ShippingTaskContext();
            //c.Rates = result;
            //c.UserId = this.UserID;
            //c.Order = this;
            //BusinessRules.Workflow.RunByName(c, BusinessRules.WorkflowNames.ApplyShippingDiscounts);


            // Sort Rates
            result.Sort("Rate", Utilities.SortDirection.Ascending);

            if (result.Count < 1)
            {
                if (o.IsOrderFreeShipping())
                {
                    result.Add(new Shipping.ShippingRateDisplay("Free Shipping.", "", "", 0m, "FREESHIPPING"));
                }
                else
                {
                    string value = Content.SiteTerms.GetTerm(Content.SiteTermIds.ShippingUnknown);
                    if (!string.IsNullOrEmpty(value))
                    {
                        result.Add(new Shipping.ShippingRateDisplay(value, "", "", 0m, "UNKNOWN"));
                    }
                    else
                    {
                        result.Add(new Shipping.ShippingRateDisplay("To Be Determined. Contact Store for Details", "", "", 0m, "TOBEDETERMINED"));
                    }
                }
            }

            return(result);
        }