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