protected void ContinueButton_Click(object sender, EventArgs e) { List <ShippableItem> shippableItems = GetShippableItems(false); foreach (GridViewRow gridRow in BasketGrid.Rows) { if (gridRow.RowType == DataControlRowType.DataRow) { int basketItemId = (int)BasketGrid.DataKeys[gridRow.DataItemIndex].Value; DropDownList shippingAddress = (DropDownList)gridRow.FindControl("ShippingAddress"); int addressId = AlwaysConvert.ToInt(shippingAddress.SelectedValue); int index = IndexOfShippableItem(shippableItems, basketItemId); if (index > -1) { ShippableItem shippableItem = shippableItems[index]; if (shippableItem.Destinations.ContainsKey(addressId)) { shippableItem.Destinations[addressId] += 1; } else { shippableItem.Destinations[addressId] = 1; } } } } //CLEAR ALL DESTINATIONS IN THE EXISTING SHIPMENTS ClearShipments(); //NOW LOOP SHIPPABLE ITEMS AND ADJUST BASKET AS NEEDED RepackageBasket(shippableItems); Response.Redirect("ShipMethod.aspx"); }
protected BasketItem GetBasketItem(object dataItem) { ShippableItem si = dataItem as ShippableItem; if (si != null) { return(GetBasketItem(si.BasketItemId)); } return(null); }
public PurchasableSnapshot() { ProductId = string.Empty; VariantId = string.Empty; Name = string.Empty; Sku = string.Empty; Description = string.Empty; BasePrice = 0m; IsTaxExempt = false; TaxScheduleId = 0; SelectionData = new OptionSelections(); ShippingDetails = new ShippableItem(); IsBundle = false; IsGiftCard = false; IsRecurring = false; }
/// <summary> /// Gets the ShippableItem list for the current basket /// </summary> /// <param name="multiplyQuantity">If true, creates a ShippableItem record for each quantity of the basket items.</param> /// <returns>A ShippableItem list for the current basket.</returns> private List <ShippableItem> GetShippableItems(bool multiplyQuantity) { List <ShippableItem> shippableItems = new List <ShippableItem>(); // KEEP TRACK OF MASTER KIT PRODUCTS THAT ARE ADDED TO THE SHIPPABLE ITEMS LIST List <int> kitMasterItems = new List <int>(); Basket basket = _Basket; basket.Items.Sort(new BasketItemComparer()); foreach (BasketItem basketItem in basket.Items) { ShippableItem shippableItem = GetShippableItem(basketItem, kitMasterItems); if (shippableItem != null) { if (multiplyQuantity) { // MUST DUPLICATE THE ITEM FOR EACH QUANTITY TO ALLOW MULTIPLE SHIPPING ADDRESSES // IF THE ITEM IS A CHILD ITEM, ONLY DUPLICATE FOR PARENT QUANTITY int shippableQuantity; if (basketItem.IsChildItem) { BasketItem parentItem = basketItem.GetParentItem(true); if (parentItem != null) { shippableQuantity = parentItem.Quantity; } else { shippableQuantity = basketItem.Quantity; } } else { shippableQuantity = basketItem.Quantity; } for (int i = 0; i < shippableQuantity; i++) { shippableItems.Add(shippableItem); } } else { shippableItems.Add(shippableItem); } } } return(shippableItems); }
private List <int> RepackageBasketItem(BasketItem originalBasketItem, List <int> parentItemIds, ShippableItem shippableItem, int quantityMultiplier, Product kitMasterProduct) { List <int> newBasketItemIds = new List <int>(); int i = 0; foreach (int addressId in shippableItem.Destinations.Keys) { int warehouseId; if (kitMasterProduct != null && !kitMasterProduct.Kit.ItemizeDisplay) { warehouseId = kitMasterProduct.Warehouse.Id; } else { warehouseId = originalBasketItem.Product.Warehouse.Id; } BasketShipment shipment = GetShipment(warehouseId, addressId, true); if (i == 0) { //ADJUST THE FIRST ITEM originalBasketItem.Shipment = shipment; originalBasketItem.Quantity = (short)(shippableItem.Destinations[addressId] * quantityMultiplier); if (parentItemIds != null) { originalBasketItem.ParentItemId = GetParentItemId(parentItemIds, addressId, originalBasketItem.ParentItemId); } originalBasketItem.Save(); newBasketItemIds.Add(originalBasketItem.Id); } else { //CREATE ADDITIONAL ITEMS TO SPLIT DESTINATIONS BasketItem splitBasketItem = originalBasketItem.Copy(); splitBasketItem.Basket = _Basket; splitBasketItem.Quantity = (short)(shippableItem.Destinations[addressId] * quantityMultiplier); splitBasketItem.Shipment = shipment; if (parentItemIds != null) { splitBasketItem.ParentItemId = GetParentItemId(parentItemIds, addressId, splitBasketItem.ParentItemId); } _Basket.Items.Add(splitBasketItem); splitBasketItem.Save(); if (splitBasketItem.ParentItemId == 0) { splitBasketItem.ParentItemId = splitBasketItem.Id; splitBasketItem.Save(); } newBasketItemIds.Add(splitBasketItem.Id); } i++; } return(newBasketItemIds); }