コード例 #1
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason,
                                             ShoppingCartRuleResult Result)
 {
     //45479, SG:Foreign ds with SNID and foreign DS with dummy tinid are both able to add more than 12 p type products to cart.
     if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
     {
         List <TaxIdentification> tins = DistributorOrderingProfileProvider.GetTinList(cart.DistributorID, true);
         TaxIdentification        tid  = null;
         if (tins != null && (tid = tins.Find(t => t.IDType.Key == "SNID")) != null)  // have national ID
         {
             if (tid.ID == "S0000000S" || !DistributorProfileModel.ProcessingCountryCode.Equals(CountryType.SG.Key))
             // dummy TIN and foreign DS
             {
                 if (getPTypeSKUCount(cart.CartItems, cart.CurrentItems[0]) > ForeingDSLines)
                 {
                     Result.Result = RulesResult.Failure;
                     Result.AddMessage(
                         string.Format(
                             HttpContext.GetGlobalResourceObject(
                                 string.Format("{0}_Rules", HLConfigManager.Platform), "AnySKUQuantityExceeds")
                             .ToString(), ForeingDSLines.ToString()));
                     cart.RuleResults.Add(Result);
                     return(Result);
                 }
             }
         }
     }
     return(Result);
 }
コード例 #2
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                             ShoppingCartRuleReason reason,
                                             ShoppingCartRuleResult Result)
 {
     if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
     {
         try
         {
             if (!CanPurchase(cart.DistributorID, Country))
             {
                 Result.Result = RulesResult.Failure;
                 Result.AddMessage(
                     HttpContext.GetGlobalResourceObject(
                         string.Format("{0}_Rules", HLConfigManager.Platform), "CantPurchase").ToString());
                 cart.RuleResults.Add(Result);
             }
         }
         catch (Exception ex)
         {
             LoggerHelper.Error(
                 string.Format(
                     "Error while performing Add to Cart Rule for Peruvian distributor: {0}, Cart Id:{1}, \r\n{2}",
                     cart.DistributorID, cart.ShoppingCartID, ex));
         }
     }
     return(Result);
 }
コード例 #3
0
        /// <summary>
        /// Performs shopping cart rules.
        /// </summary>
        /// <param name="cart">The cart.</param>
        /// <param name="reason">The reason.</param>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result)
        {
            var hlCart = cart as MyHLShoppingCart;

            if (cart == null || hlCart == null)
            {
                return(result);
            }

            switch (reason)
            {
            case ShoppingCartRuleReason.CartItemsBeingAdded:
                // Avoid the DS adds the promo sku to the cart
                if (cart.CurrentItems[0].SKU.Equals(PromoSKU))
                {
                    cart.CurrentItems.Clear();
                }
                break;

            case ShoppingCartRuleReason.CartItemsBeingRemoved:
                hlCart.IsPromoDiscarted = cart.CurrentItems[0].SKU.Equals(PromoSKU) ? true : hlCart.IsPromoDiscarted;
                break;

            case ShoppingCartRuleReason.CartItemsAdded:
            case ShoppingCartRuleReason.CartItemsRemoved:
                hlCart.IsPromoDiscarted = (reason == ShoppingCartRuleReason.CartItemsAdded) ? false : hlCart.IsPromoDiscarted;
                if (!hlCart.IsPromoDiscarted)
                {
                    result = CheckPromoInCart(cart, hlCart, result);
                }
                break;
            }
            return(result);
        }
コード例 #4
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult Result)
        {
            if (cart == null)
            {
                return(Result);
            }

            var myhlCart = cart as MyHLShoppingCart;

            if (myhlCart == null)
            {
                return(Result);
            }

            if (reason == ShoppingCartRuleReason.CartItemsAdded || reason == ShoppingCartRuleReason.CartItemsRemoved ||
                reason == ShoppingCartRuleReason.CartCalculated || reason == ShoppingCartRuleReason.CartCreated)
            {
                //check volume in cart and the quantity of todays magazine sku
                myhlCart.TodaysMagaZineQuantity = AllowedTodaysMagazineQuantity(myhlCart.VolumeInCart);

                var tmSku = (from i in myhlCart.ShoppingCartItems
                             where i.SKU == HLConfigManager.Configurations.DOConfiguration.TodayMagazineSku
                             select i).FirstOrDefault();
                if (tmSku != null)
                {
                    if (tmSku.Quantity > myhlCart.TodaysMagaZineQuantity)
                    {
                        myhlCart.DeleteTodayMagazine(tmSku.SKU);
                        myhlCart.AddTodayMagazine(myhlCart.TodaysMagaZineQuantity, tmSku.SKU);
                    }
                }
            }

            return(Result);
        }
コード例 #5
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                    ShoppingCartRuleReason reason,
                                                    ShoppingCartRuleResult result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                string TodaysMagazineAllowedLoales = Settings.GetRequiredAppSetting("TodaysMagazineAllowedLocales", "");
                if (cart.CurrentItems[0].SKU != HLConfigManager.Configurations.DOConfiguration.TodayMagazineSku && !TodaysMagazineAllowedLoales.Contains(cart.Locale))
                {
                    result = CheckForInvalidSKU(cart, result);
                    result = CheckForInvalidQuantity(cart, result);
                }
            }

            else if (reason == ShoppingCartRuleReason.CartBeingClosed)
            {
                //for non-mobile clients, need to do all the usual cleanup done by web
                CleanupCart(cart as MyHLShoppingCart);
            }

            else if (reason == ShoppingCartRuleReason.CartItemsAdded)
            {
                if (HLConfigManager.Configurations.DOConfiguration.CheckSKUExpirationDate)
                {
                    GetMessagesForEntireCart(cart, result);
                }
            }

            return(result);
        }
コード例 #6
0
        protected virtual ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                              ShoppingCartRuleResult result,
                                                              ShoppingCartRuleReason reason)
        {
            //Do the rules
            if (null == cart.RuleResults)
            {
                cart.RuleResults = new List <ShoppingCartRuleResult>();
            }

            else if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                if (_iEventTicketProviderLoader == null)
                {
                    _iEventTicketProviderLoader = new EventTicketProviderLoader();
                }
                return(CartItemBeingAddedRuleHandler(cart, result));
            }
            else if (reason == ShoppingCartRuleReason.CartRetrieved)
            {
                return(CartRetrievedRuleHandler(cart, result));
            }

            return(result);
        }
コード例 #7
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                    ShoppingCartRuleReason reason,
                                                    ShoppingCartRuleResult Result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded && cart != null)
            {
                var item = from c in cart.CartItems
                           from n in cart.CurrentItems
                           where c.SKU == n.SKU
                           select c;

                if (item.ToList().Count == 0)
                {
                    if (cart.CartItems.Count >= NTSLines)
                    {
                        Result.Result = RulesResult.Failure;
                        Result.AddMessage(
                            string.Format(
                                HttpContext.GetGlobalResourceObject(
                                    string.Format("{0}_Rules", HLConfigManager.Platform), "AnySKUQuantityExceeds")
                                .ToString(), NTSLines.ToString()));
                        cart.RuleResults.Add(Result);
                    }
                }
            }
            return(Result);
        }
コード例 #8
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsAdded || reason == ShoppingCartRuleReason.CartItemsRemoved ||
                reason == ShoppingCartRuleReason.CartCalculated || reason == ShoppingCartRuleReason.CartCreated)
            {
                if (cart != null)
                {
                    var myHLCart = cart as MyHLShoppingCart;
                    if (myHLCart != null)
                    {
                        var maxQty = GetFTMMaxQuantity(cart);
                        myHLCart.TodaysMagaZineQuantity = maxQty;

                        var tmSku = (from i in myHLCart.ShoppingCartItems
                                     where i.SKU == HLConfigManager.Configurations.DOConfiguration.TodayMagazineSku
                                     select i).FirstOrDefault();
                        if (tmSku != null)
                        {
                            if (tmSku.Quantity > maxQty)
                            {
                                myHLCart.DeleteTodayMagazine(tmSku.SKU);
                                myHLCart.AddTodayMagazine(maxQty, tmSku.SKU);
                            }
                        }
                    }
                }
            }
            return(result);
        }
コード例 #9
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                             ShoppingCartRuleReason reason,
                                             ShoppingCartRuleResult Result)
 {
     //Nothing defined yet
     return(Result);
 }
コード例 #10
0
        public List <ShoppingCartRuleResult> ProcessPromoInCart(ShoppingCart_V02 cart,
                                                                List <string> skus,
                                                                ShoppingCartRuleReason reason)
        {
            var result        = new List <ShoppingCartRuleResult>();
            var defaultResult = new ShoppingCartRuleResult
            {
                RuleName = "Promotional Rules",
                Result   = RulesResult.Unknown
            };

            if (IsRuleTime())
            {
                if (reason == ShoppingCartRuleReason.CartItemsBeingRemoved)
                {
                    PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList();
                    var hlCart = cart as MyHLShoppingCart;
                    if (cart != null && hlCart != null)
                    {
                        if (skus.Any(i => PromoSKUs.Contains(i)))
                        {
                            hlCart.IsPromoDiscarted = true;
                            defaultResult.Result    = RulesResult.Success;
                            cart.RuleResults.Add(defaultResult);
                        }
                    }
                }
            }
            result.Add(defaultResult);
            return(result);
        }
コード例 #11
0
        /// <summary>
        /// Performs shopping cart rules.
        /// </summary>
        /// <param name="cart">The cart.</param>
        /// <param name="reason">The reason.</param>
        /// <param name="result">The result.</param>
        /// <returns></returns>
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result)
        {
            var hlCart = cart as MyHLShoppingCart;

            if (cart == null || hlCart == null)
            {
                return(result);
            }

            if (!IsRuleTime())
            {
                return(result);
            }

            switch (reason)
            {
            case ShoppingCartRuleReason.CartItemsBeingAdded:
                if (cart.CurrentItems[0].SKU == promoSkuZ479 || cart.CurrentItems[0].SKU == promoSkuZ480)
                {
                    cart.CurrentItems.Clear();
                }
                break;

            case ShoppingCartRuleReason.CartItemsAdded:
            case ShoppingCartRuleReason.CartItemsRemoved:
                result = CheckPromoIncart(hlCart, result, AllowedSKUToAddPromoSKU_Z479, promoSkuZ479);
                result = CheckPromoIncart(hlCart, result, AllowedSKUToAddPromoSKU_Z480, promoSkuZ480);
                break;
            }

            return(result);
        }
コード例 #12
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result)
 {
     if (reason == ShoppingCartRuleReason.CartItemsAdded || reason == ShoppingCartRuleReason.CartItemsRemoved ||
         reason == ShoppingCartRuleReason.CartCalculated || reason == ShoppingCartRuleReason.CartCreated ||
         reason == ShoppingCartRuleReason.CartWarehouseCodeChanged || reason == ShoppingCartRuleReason.CartFreightCodeChanging)
     {
         if (cart != null)
         {
             var myHLCart = cart as MyHLShoppingCart;
             if (myHLCart != null && myHLCart.DeliveryInfo.Option == ServiceProvider.ShippingSvc.DeliveryOptionType.Shipping)
             {
                 var shippingProvider = ShippingProvider.GetShippingProvider(Country);
                 //get URB locales GetFreightCodeAndWarehouseFromService
                 var FCandWH = shippingProvider.GetFreightCodeAndWarehouse(myHLCart.DeliveryInfo.Address);
                 if (FCandWH != null && FCandWH[0] == "URB")
                 {
                     //User Story 229708
                     //a.Orders under 500.9999 VP = Remains as URB freight code
                     if (myHLCart.VolumeInCart < URBVP)
                     {
                         myHLCart.DeliveryInfo.FreightCode =
                             myHLCart.FreightCode          = "URB";
                     }
                     //b.Order above 501.0000 VP = System should be redirected and calculate PMS freight code instead of URB.
                     else if ((myHLCart.VolumeInCart >= URBVP))
                     {
                         myHLCart.DeliveryInfo.FreightCode =
                             myHLCart.FreightCode          = "PMS";
                     }
                 }
             }
         }
     }
     return(result);
 }
コード例 #13
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                    ShoppingCartRuleReason reason,
                                                    ShoppingCartRuleResult result)
        {
            if (reason == ShoppingCartRuleReason.CartCalculated)
            {
                result = CheckForInvalidSKUs(cart, result);
                result = CheckForDuplicateSKUs(cart, result);
                result = CheckForInvalidQuantities(cart, result);
                if (result.Result == RulesResult.Failure)
                {
                    LoggerHelper.Error(string.Join("\r\n", result.Messages.ToArray()));
                }
            }
            //prevent to able to add products blocked by the skuToNoDisplayForNonQualifyMembers and EventId config key
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                var DSType = DistributorOrderingProfileProvider.CheckDsLevelType(cart.DistributorID, cart.Locale.Substring(3, 2));
                if (DSType == ServiceProvider.DistributorSvc.Scheme.Member)
                {
                    string errormessage =
                        HttpContext.GetGlobalResourceObject("MyHL_ErrorMessage", "PMTypeRestrictOrdering").ToString();

                    result.AddMessage(errormessage);
                    result.Result = RulesResult.Failure;
                }
                else
                {
                    result = checkForConfigBlockedSKU(cart, result);
                }
            }

            return(result);
        }
コード例 #14
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult Result)
 {
     if (reason == ShoppingCartRuleReason.CartRetrieved)
     {
         try
         {
             if (CanPurchase(cart.DistributorID, Country))
             {
                 MyHLShoppingCart myShoppingCart = ShoppingCartProvider.GetShoppingCart(cart.DistributorID, cart.Locale, true);
                 if (myShoppingCart != null && myShoppingCart.DeliveryInfo != null && myShoppingCart.DeliveryInfo.Option == ServiceProvider.ShippingSvc.DeliveryOptionType.Shipping)
                 {
                     if (myShoppingCart.VolumeInCart > 250M)
                     {
                         myShoppingCart.DeliveryInfo.FreightCode =
                             myShoppingCart.FreightCode          = "NOF";
                     }
                     else
                     {
                         myShoppingCart.DeliveryInfo.FreightCode =
                             myShoppingCart.FreightCode          = "MCF";
                     }
                     //ShoppingCartProvider.UpdateShoppingCart(myShoppingCart);
                 }
             }
         }
         catch (Exception ex)
         {
             LoggerHelper.Error(string.Format("Error while performing Add to Cart Rule for Macau distributor: {0}, Cart Id:{1}, \r\n{2}", cart.DistributorID, cart.ShoppingCartID, ex.ToString()));
         }
     }
     return(Result);
 }
コード例 #15
0
        public List <ShoppingCartRuleResult> ProcessCart(ShoppingCartRuleReason reason, MyHLShoppingCart shoppingCart)
        {
            if (shoppingCart == null)
            {
                return(null);
            }

            // if reason is CartCreated
            // set parameters
            if (reason == ShoppingCartRuleReason.CartCreated)
            {
                IPurchaseRestrictionManager manager = GetPurchaseRestrictionManager(shoppingCart.DistributorID);
                SetPurchaseRestriction(manager.Tins, shoppingCart.OrderMonth, shoppingCart.DistributorID, manager);
            }
            else if (reason == ShoppingCartRuleReason.CartItemsBeingAdded || reason == ShoppingCartRuleReason.CartBeingPaid || reason == ShoppingCartRuleReason.CartClosed)
            {
                var result        = new List <ShoppingCartRuleResult>();
                var defaultResult = new ShoppingCartRuleResult();
                defaultResult.RuleName = "PurchaseRestriction Rules";
                defaultResult.Result   = RulesResult.Unknown;
                result.Add(PerformRules(shoppingCart, reason, defaultResult));
                return(result);
            }
            return(shoppingCart.RuleResults);
        }
コード例 #16
0
 public List <ShoppingCartRuleResult> processCart(MyHLShoppingCart cart,
                                                  List <ShoppingCartItem_V01> items,
                                                  ShoppingCartRuleReason reason)
 {
     return(Providers.ShoppingCartProvider.processCart(cart,
                                                       items,
                                                       reason));
 }
コード例 #17
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                result = CheckQualifiedEventSkus(cart, result);
            }

            return(result);
        }
コード例 #18
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult result)
 {
     if (reason == ShoppingCartRuleReason.CartCreated && cart != null)
     {
         var myHLCart = cart as MyHLShoppingCart;
         validateAndUpdateWH(ref myHLCart);
     }
     return(result);
 }
コード例 #19
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                    ShoppingCartRuleReason reason,
                                                    ShoppingCartRuleResult Result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                var SKUIds = new List <string[]>();
                SKUIds.Add(new[] { HLConfigManager.Configurations.DOConfiguration.TodayMagazineSku, "3" });
                SKUIds.Add(new[] { "4150", "10" });

                if (cart.CurrentItems[0].SKU == HLConfigManager.Configurations.DOConfiguration.TodayMagazineSku)
                {
                    var catItems = CatalogProvider.GetCatalogItems((from c in cart.CartItems
                                                                    select c.SKU.Trim()).ToList <string>(),
                                                                   Country);
                    if (catItems != null)
                    {
                        if (!catItems.Any(c => c.Value.ProductType == ProductType.Product))
                        {
                            Result.Result = RulesResult.Failure;
                            Result.AddMessage(
                                string.Format(
                                    HttpContext.GetGlobalResourceObject(
                                        string.Format("{0}_Rules", HLConfigManager.Platform), "AddProductFirst")
                                    .ToString(), cart.CurrentItems[0].SKU));
                            cart.RuleResults.Add(Result);
                            return(Result);
                        }
                    }
                }

                foreach (string[] sku in SKUIds)
                {
                    int quantity = 0;
                    if (cart.CurrentItems[0].SKU == sku[0])
                    {
                        quantity += cart.CurrentItems[0].Quantity;
                        if (cart.CartItems.Exists(item => item.SKU == sku[0]))
                        {
                            quantity += cart.CartItems.Where(item => item.SKU == sku[0]).First().Quantity;
                        }
                        if (quantity > Convert.ToInt32(sku[1]))
                        {
                            Result.Result = RulesResult.Failure;
                            Result.AddMessage(
                                string.Format(
                                    HttpContext.GetGlobalResourceObject(
                                        string.Format("{0}_Rules", HLConfigManager.Platform), "SKUQuantityExceeds")
                                    .ToString(), sku[1], sku[0]));
                            cart.RuleResults.Add(Result);
                        }
                    }
                }
            }
            return(Result);
        }
コード例 #20
0
        public List <ShoppingCartRuleResult> ProcessCart(ShoppingCart_V02 cart, ShoppingCartRuleReason reason)
        {
            var result        = new List <ShoppingCartRuleResult>();
            var defaultResult = new ShoppingCartRuleResult();

            defaultResult.RuleName = "SkuLimitation Rules";
            defaultResult.Result   = RulesResult.Unknown;
            result.Add(PerformRules(cart, reason, defaultResult));
            return(result);
        }
コード例 #21
0
        public List <ShoppingCartRuleResult> ProcessCart(ShoppingCart_V02 cart, ShoppingCartRuleReason reason)
        {
            List <ShoppingCartRuleResult> result        = new List <ShoppingCartRuleResult>();
            ShoppingCartRuleResult        defaultResult = new ShoppingCartRuleResult();

            defaultResult.RuleName = "PurchasingPermission Rules";
            defaultResult.Result   = RulesResult.Unknown;
            result.Add(PerformRules(cart, reason, defaultResult));
            return(result);
        }
コード例 #22
0
 protected override ShoppingCartRuleResult PerformRules(MyHLShoppingCart cart,
                                                        ShoppingCartRuleReason reason,
                                                        ShoppingCartRuleResult Result)
 {
     ///volume on orders placed against the French Polynesia warehouse in Oracle, only warehouses defined in “PFT” inventory org should be considered
     if (IsWHOrderForPF(cart))
     {
         Result = base.PerformRules(cart, reason, Result);
     }
     return(Result);
 }
コード例 #23
0
        /// <summary>
        /// Process shopping cart rules.
        /// </summary>
        /// <param name="cart">The cart.</param>
        /// <param name="reason">The reason.</param>
        /// <returns></returns>
        public List <ShoppingCartRuleResult> ProcessCart(ShoppingCart_V02 cart, ShoppingCartRuleReason reason)
        {
            var result        = new List <ShoppingCartRuleResult>();
            var defaultResult = new ShoppingCartRuleResult
            {
                RuleName = "Promotional Rules",
                Result   = RulesResult.Unknown
            };

            result.Add(PerformRules(cart, reason, defaultResult));
            return(result);
        }
コード例 #24
0
 private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                             ShoppingCartRuleReason reason,
                                             ShoppingCartRuleResult Result)
 {
     if (reason == ShoppingCartRuleReason.CartItemsBeingAdded ||
         reason == ShoppingCartRuleReason.CartItemsBeingRemoved)
     {
         try
         {
             if (!CanPurchase(cart.DistributorID, Country))
             {
                 Result.Result = RulesResult.Failure;
                 Result.AddMessage(
                     string.Format(
                         HttpContext.GetGlobalResourceObject(
                             string.Format("{0}_ErrorMessage", HLConfigManager.Platform),
                             "CountryOfProcessingOnly").ToString()));
                 cart.RuleResults.Add(Result);
             }
             else
             {
                 string key   = PaymentsConfiguration.GetPaymentInfoSessionKey(string.Empty, string.Empty);
                 var    items = Session[key] as List <CreditPayment>;
                 if (null != items)
                 {
                     int maxCards = HLConfigManager.Configurations.PaymentsConfiguration.MaxCardsToDisplay;
                     if (items.Count(p => (!string.IsNullOrEmpty(p.AuthorizationCode))) == maxCards)
                     {
                         if (reason == ShoppingCartRuleReason.CartItemsBeingRemoved)
                         {
                             cart.CurrentItems.Clear();
                         }
                         Result.Result = RulesResult.Failure;
                         Result.AddMessage(
                             string.Format(
                                 HttpContext.GetGlobalResourceObject(
                                     string.Format("{0}_ErrorMessage", HLConfigManager.Platform),
                                     "MustDeleteACardToChangeItemsInCart").ToString()));
                         cart.RuleResults.Add(Result);
                     }
                 }
             }
         }
         catch (Exception ex)
         {
             LoggerHelper.Error(
                 string.Format(
                     "Error while performing Add or Delete from Cart Rule for Korean distributor: {0}, Cart Id:{1}, \r\n{2}",
                     cart.DistributorID, cart.ShoppingCartID, ex));
         }
     }
     return(Result);
 }
コード例 #25
0
        protected override ShoppingCartRuleResult PerformRules(MyHLShoppingCart cart,
                                                               ShoppingCartRuleReason reason,
                                                               ShoppingCartRuleResult Result)
        {
            Result.Result = RulesResult.Success;

            if (null == cart)
            {
                LoggerHelper.Error(
                    string.Format("{0} cart is null {1}, MyHerbalife3.Ordering.Rules.PurchaseRestriction.JP.PurchaseRestrictionRules.", Locale, cart.DistributorID));
                Result.Result = RulesResult.Failure;
                return(Result);
            }
            if (Settings.GetRequiredAppSetting <bool>("EnableJPSKURestriction", false))
            {
                string orderMonth = SKULimitationProvider.GetOrderMonthString();
                if (reason == ShoppingCartRuleReason.CartItemsBeingAdded && cart.ItemsBeingAdded != null && cart.ItemsBeingAdded.Count > 0)
                {
                    var allLimits = SKULimitationProvider.SKUPurchaseRestrictionInfo(cart.DistributorID, orderMonth);
                    if (allLimits != null)
                    {
                        Result = HandleCartItemsBeingAdded(cart, Result, allLimits);
                        if (Result.Result == RulesResult.Failure)
                        {
                            return(Result);
                        }
                    }
                }
                else if (reason == ShoppingCartRuleReason.CartBeingPaid)
                {
                    var allLimits = SKULimitationProvider.SKUPurchaseRestrictionInfo(cart.DistributorID, orderMonth);
                    if (allLimits != null)
                    {
                        Result = HandleCartBeingPaid(cart, Result, allLimits);
                        if (Result.Result == RulesResult.Failure)
                        {
                            return(Result);
                        }
                    }
                }
                else if (reason == ShoppingCartRuleReason.CartClosed) // order placed
                {
                    var allLimits = SKULimitationProvider.SKUPurchaseRestrictionInfo(cart.DistributorID, cart.OrderMonth.ToString());
                    if (allLimits != null)
                    {
                        Result = HandleCartClosed(cart, Result, allLimits);
                        SKULimitationProvider.SetSKUPurchaseRestrictionInfo(cart.DistributorID, cart.OrderMonth.ToString(), allLimits);
                    }
                }
            }
            base.PerformRules(cart, reason, Result);
            return(Result);
        }
コード例 #26
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleReason reason, ShoppingCartRuleResult Result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                CatalogItem_V01 currentItem = CatalogProvider.GetCatalogItem(cart.CurrentItems[0].SKU, Country);

                try
                {
                    List <string> codes = new List <string>(CountryType.TH.HmsCountryCodes);
                    codes.Add(CountryType.TH.Key);
                    bool isCOPThai        = codes.Contains(DistributorProfileModel.ProcessingCountryCode);
                    TaxIdentification tid = null;

                    var tins = DistributorOrderingProfileProvider.GetTinList(cart.DistributorID, true);
                    tid = tins.Find(t => t.IDType.Key == "THID");
                    //Simulate the dummy tin with an foreign DS
                    //TaxIdentification ti = new TaxIdentification() { CountryCode = "TH", ID = "dummy", IDType = new TaxIdentificationType(dummyTin) };
                    //ods.Value.TinList.Add(ti);

                    if (CanPurchase(cart.DistributorID, Country))
                    {
                        //Additional Check to allow DS COP = Thai Tin = No TIN, Can place only L and A items
                        if (IsWithOutTinCode)
                        {
                            if (currentItem.ProductType == ProductType.Product)
                            {
                                Result.Result = RulesResult.Failure;
                                Result.AddMessage(HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "CantPurchase").ToString());
                                cart.RuleResults.Add(Result);
                            }
                        }
                    }
                    else
                    {
                        if (IsWithOutTinCode)
                        {
                            if (currentItem.ProductType == ProductType.Product)
                            {
                                Result.Result = RulesResult.Failure;
                                Result.AddMessage(HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "CantPurchase").ToString());
                                cart.RuleResults.Add(Result);
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    LoggerHelper.Error(string.Format("Error while performing Add to Cart Rule for Singapore distributor: {0}, Cart Id:{1}, \r\n{2}", cart.DistributorID, cart.ShoppingCartID, ex.ToString()));
                }
            }
            return(Result);
        }
コード例 #27
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                    ShoppingCartRuleReason reason,
                                                    ShoppingCartRuleResult Result)
        {
            if (reason == ShoppingCartRuleReason.CartItemsBeingAdded)
            {
                List <string> codes = new List <string>(CountryType.KZ.HmsCountryCodes);
                codes.Add(CountryType.KZ.Key);
                bool isCOPKZ = codes.Contains(DistributorProfileModel.ProcessingCountryCode);
                if (!isCOPKZ)
                {
                    return(Result);
                }

                if (!HasActiveAppTinCode(cart.DistributorID))
                {
                    try
                    {
                        var cartVolume  = 0m;
                        var currentItem = CatalogProvider.GetCatalogItem(cart.CurrentItems[0].SKU, Country);
                        var myCart      = cart as MyHLShoppingCart;
                        if (myCart != null && !string.IsNullOrEmpty(myCart.VolumeInCart.ToString()))
                        {
                            cartVolume = myCart.VolumeInCart;
                        }
                        var newVolumePoints = currentItem.VolumePoints * cart.CurrentItems[0].Quantity;

                        if (cartVolume + newVolumePoints > MaxVolPoints)
                        {
                            Result.AddMessage(
                                string.Format(
                                    HttpContext.GetGlobalResourceObject(
                                        string.Format("{0}_Rules", HLConfigManager.Platform), "VolumePointExceeds")
                                    .ToString(), cart.CurrentItems[0].SKU));
                            Result.Result = RulesResult.Failure;
                            cart.RuleResults.Add(Result);
                            return(Result);
                        }
                    }
                    catch (Exception ex)
                    {
                        LoggerHelper.Error(
                            string.Format(
                                "Error while performing Add to Cart Rule for Belarus distributor: {0}, Cart Id:{1}, \r\n{2}",
                                cart.DistributorID, cart.ShoppingCartID, ex.ToString()));
                    }
                }
            }


            return(Result);
        }
コード例 #28
0
        /// <summary>
        ///     This rule returns success if the current cart contains Event Tickets
        /// </summary>
        /// <param name="cart"></param>
        /// <param name="reason"></param>
        /// <returns></returns>
        public List <ShoppingCartRuleResult> ProcessCart(ShoppingCart_V02 cart, ShoppingCartRuleReason reason)
        {
            var result        = new List <ShoppingCartRuleResult>();
            var defaultResult = new ShoppingCartRuleResult();

            defaultResult.RuleName = "ETO Rules";
            defaultResult.Result   = RulesResult.Unknown;
            if (null != cart)
            {
                result.Add(PerformRules(cart, defaultResult, reason));
            }
            return(result);
        }
コード例 #29
0
        public List <ShoppingCartRuleResult> ProcessCart(ShoppingCart_V02 cart, ShoppingCartRuleReason reason)
        {
            var result        = new List <ShoppingCartRuleResult>();
            var defaultResult = new ShoppingCartRuleResult {
                RuleName = "APF Rules", Result = RulesResult.Unknown, ApfRuleResponse = new ApfRuleResponse()
            };

            if (cart != null)
            {
                result.Add(PerformRules(cart, defaultResult, reason));
            }
            return(result);
        }
コード例 #30
0
        protected override ShoppingCartRuleResult PerformRules(MyHLShoppingCart cart,
                                                               ShoppingCartRuleReason reason,
                                                               ShoppingCartRuleResult Result)
        {
            var currentlimits = GetCurrentPurchasingLimits(cart.DistributorID, GetCurrentOrderMonth());

            if (cart == null || currentlimits == null)
            {
                return(Result);
            }
            Result = performRules(cart, Result, currentlimits);
            if (cart.ItemsBeingAdded != null && cart.ItemsBeingAdded.Count > 0)
            {
                if (currentlimits.PurchaseLimitType == PurchaseLimitType.Earnings && cart.OrderSubType == "B1")
                {
                    bool          bExceed  = false;
                    List <string> skuToAdd = new List <string>();

                    var itemsToCalc = new List <ShoppingCartItem_V01>();
                    itemsToCalc.AddRange(cart.CartItems);

                    foreach (var item in cart.ItemsBeingAdded)
                    {
                        if (bExceed == true)
                        {
                            Result = reportError(cart, item, Result);
                            continue;
                        }
                        itemsToCalc.Add(item);
                        OrderTotals_V01 orderTotals = cart.Calculate(itemsToCalc, false) as OrderTotals_V01;
                        if (orderTotals != null)
                        {
                            decimal earningsInCart = ProductEarningsInCart(itemsToCalc, orderTotals.DiscountPercentage);

                            if (currentlimits.RemainingEarnings - earningsInCart < 0)
                            {
                                bExceed = true;
                                Result  = reportError(cart, item, Result);
                            }
                            else
                            {
                                skuToAdd.Add(item.SKU);
                            }
                        }
                    }
                    cart.ItemsBeingAdded.RemoveAll(s => !skuToAdd.Contains(s.SKU));
                }
            }

            return(Result);
        }