示例#1
0
        public Collection <ShippingRateDisplay> GetRates(List <ShippingGroup> groups)
        {
            Accounts.Store currentStore = RequestContext.GetCurrentRequestContext().CurrentStore;

            Collection <ShippingRateDisplay> result = new Collection <ShippingRateDisplay>();

            MerchantTribe.Shipping.IShippingService p = Shipping.AvailableServices.FindById(this.ShippingProviderId, currentStore);
            if (p != null)
            {
                p.BaseSettings.Clear();
                p.BaseSettings.Merge(this.Settings);

                List <IShippingRate> tempRates = p.RateShipment(ConvertGroupsToShipments(groups));
                if (tempRates != null)
                {
                    for (int i = 0; i <= tempRates.Count - 1; i++)
                    {
                        ShippingRateDisplay r = new ShippingRateDisplay(tempRates[i]);
                        r.ShippingMethodId = this.Bvin;
                        if (r.DisplayName == string.Empty)
                        {
                            r.DisplayName = this.Name;
                        }
                        AdjustRate(r);
                        result.Add(r);
                    }
                }
            }

            return(result);
        }
示例#2
0
        private void AdjustRate(ShippingRateDisplay r)
        {
            switch (this.AdjustmentType)
            {
            case ShippingMethodAdjustmentType.Amount:
                r.Rate = r.Rate + this.Adjustment;
                break;

            case ShippingMethodAdjustmentType.None:
                // Do Nothing
                break;

            case ShippingMethodAdjustmentType.Percentage:
                r.Rate = r.Rate + (r.Rate * (this.Adjustment / 100m));
                break;
            }
        }
示例#3
0
 private void AdjustRate(ShippingRateDisplay r)
 {
     switch (this.AdjustmentType) {
         case ShippingMethodAdjustmentType.Amount:
             r.Rate = r.Rate + this.Adjustment;
             break;
         case ShippingMethodAdjustmentType.None:
         // Do Nothing
             break;
         case ShippingMethodAdjustmentType.Percentage:
             r.Rate = r.Rate + (r.Rate * (this.Adjustment / 100m));
             break;
     }
 }
示例#4
0
        public Collection<ShippingRateDisplay> GetRates(List<ShippingGroup> groups)
        {
            Accounts.Store currentStore = RequestContext.GetCurrentRequestContext().CurrentStore;

            Collection<ShippingRateDisplay> result = new Collection<ShippingRateDisplay>();

            MerchantTribe.Shipping.IShippingService p = Shipping.AvailableServices.FindById(this.ShippingProviderId, currentStore);
            if (p != null) {
                p.BaseSettings.Clear();
                p.BaseSettings.Merge(this.Settings);

                List<IShippingRate> tempRates = p.RateShipment(ConvertGroupsToShipments(groups));
                if (tempRates != null) {
                    for (int i = 0; i <= tempRates.Count - 1; i++) {
                        ShippingRateDisplay r= new ShippingRateDisplay(tempRates[i]);
                        r.ShippingMethodId = this.Bvin;
                        if (r.DisplayName == string.Empty) {
                            r.DisplayName = this.Name;
                        }
                        AdjustRate(r);
                        result.Add(r);
                    }
                }
            }

            return result;
        }
        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, MTApp.CurrentStore);
                }

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

            return result;
        }
示例#6
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, MTApp.CurrentStore);

                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);
        }