private void LoadShippingMethodsForOrder(Order o)
        {
            SortableCollection<ShippingRateDisplay> rates = MTApp.OrderServices.FindAvailableShippingRates(o);

            string rateKey = o.ShippingMethodUniqueKey;
            bool rateIsAvailable = false;

            // See if rate is available
            if ((rateKey.Length > 0))
            {
                foreach (MerchantTribe.Commerce.Shipping.ShippingRateDisplay r in rates)
                {
                    if ((r.UniqueKey == rateKey))
                    {
                        rateIsAvailable = true;
                        MTApp.OrderServices.OrdersRequestShippingMethod(r, o);
                    }
                }
            }

            // if it's not availabe, pick the first one or default
            if ((rateIsAvailable == false))
            {
                if ((rates.Count > 0))
                {
                    MTApp.OrderServices.OrdersRequestShippingMethod(rates[0], o);
                    rateKey = rates[0].UniqueKey;
                }
                else
                {
                    o.ClearShippingPricesAndMethod();
                }
            }

            ViewBag.ShippingRates = HtmlRendering.ShippingRatesToRadioButtons(rates, 300, o.ShippingMethodUniqueKey);
        }
        public bool OrdersRequestShippingMethod(Shipping.ShippingRateDisplay r, Order o)
		{
			bool result = false;            
			if (r != null) {
                o.ClearShippingPricesAndMethod();
				o.ShippingMethodId = r.ShippingMethodId;
                o.ShippingProviderId = r.ProviderId;
                o.ShippingProviderServiceCode = r.ProviderServiceCode;
				result = true;
			}
			return result;
		}