示例#1
0
        /// <summary>
        /// display Promo
        /// </summary>

        private void displayPromo()
        {
            divPromo.Visible = false;
            PromotionInformation         promo;
            List <CatalogItem>           PcPromoOnly = new List <CatalogItem>();
            Dictionary <string, SKU_V01> _AllSKUS    = null;

            if (ShoppingCart != null && ShoppingCart.CartItems.Any())
            {
                if (ShoppingCart.DeliveryInfo == null || string.IsNullOrEmpty(ShoppingCart.DeliveryInfo.WarehouseCode))
                {
                    return;
                }
                if (CatalogProvider.IsPreordering(ShoppingCart.CartItems, ShoppingCart.DeliveryInfo.WarehouseCode))
                {
                    return;
                }
            }
            else
            {
                return;
            }

            var profile = DistributorOrderingProfileProvider.GetProfile(ShoppingCart.DistributorID, ShoppingCart.DeliveryInfo.Address.Address.Country);

            if ((promo =
                     ChinaPromotionProvider.GetPCPromotion(profile.CNCustomorProfileID.ToString(), ShoppingCart.DistributorID)) !=
                null)
            {
                var     totals = ShoppingCart.Totals as MyHerbalife3.Ordering.ServiceProvider.OrderSvc.OrderTotals_V02;
                decimal currentMonthTotalDue = 0;
                if (promo.MonthlyInfo != null)
                {
                    if (promo.MonthlyInfo.Count > 0)
                    {
                        currentMonthTotalDue = promo.MonthlyInfo[0].Amount;
                    }
                }
                if (totals != null && totals.OrderFreight != null && totals.AmountDue + currentMonthTotalDue - totals.OrderFreight.FreightCharge >= promo.promoelement.AmountMinInclude)
                {
                    if (promo.IsEligible)
                    {
                        if (promo.SKUList.Count > 0)
                        {
                            if (ShoppingCart != null && ShoppingCart.CartItems.Count > 0)
                            {
                                if (rblFreeGiftlist.Items.Count > 0)
                                {
                                    rblFreeGiftlist.Items.Clear();
                                }
                                _AllSKUS = (ProductsBase).ProductInfoCatalog.AllSKUs;
                                SKU_V01 sku;
                                foreach (CatalogItem t in promo.SKUList)
                                {
                                    if (_AllSKUS.TryGetValue(t.SKU, out sku))
                                    {
                                        if (!ChinaPromotionProvider.GetPCPromoCode(t.SKU).Trim().Equals("PCPromo"))
                                        {
                                            continue;
                                        }
                                        if ((
                                                ShoppingCartProvider.CheckInventory(t as CatalogItem_V01, 1,
                                                                                    ProductsBase.CurrentWarehouse) > 0 &&
                                                (CatalogProvider.GetProductAvailability(sku,
                                                                                        ProductsBase.CurrentWarehouse) == ProductAvailabilityType.Available)))
                                        {
                                            rblFreeGiftlist.Items.Add(new ListItem(t.Description,
                                                                                   t.SKU));

                                            divPromo.Visible = true;
                                            PcPromoOnly.Add(t);
                                        }
                                    }
                                }
                                if (rblFreeGiftlist.Items.Count > 0)
                                {
                                    rblFreeGiftlist.Items[0].Selected = true;
                                }
                                var myShoppingCart = (Page as ProductsBase).ShoppingCart;

                                var promoInCart =
                                    myShoppingCart.CartItems.Select(c => c.SKU).Intersect(PcPromoOnly.Select(f => f.SKU));
                                if (promoInCart.Any())
                                {
                                    btnAddToCart.Enabled = false;
                                    divPromo.Visible     = false;
                                }
                                else
                                {
                                    btnAddToCart.Enabled = true;
                                }
                                if (ShoppingCart.CartItems.Count == 1)
                                {
                                    if (promoInCart.Any())
                                    {
                                        ShoppingCart.DeleteItemsFromCart(promoInCart.ToList(), true);
                                    }
                                }
                            }
                        }
                    }
                    else
                    {
                        var itemsInBoth =
                            ShoppingCart.CartItems.Where(x => x.IsPromo)
                            .Select(c => c.SKU)
                            .Intersect(promo.SKUList.Select(f => f.SKU));
                        if (itemsInBoth.Any())
                        {
                            ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                        }
                    }
                }
                else
                {
                    var itemsInBoth =
                        ShoppingCart.CartItems.Where(x => x.IsPromo)
                        .Select(c => c.SKU)
                        .Intersect(promo.SKUList.Select(f => f.SKU));
                    if (itemsInBoth.Any())
                    {
                        ShoppingCart.DeleteItemsFromCart(itemsInBoth.ToList(), true);
                    }
                }
            }
            promotionPanel.Update();
        }