public static void ClearCache(string storeID)
        {
            string cachekey = string.Format("{0}{1}", INVENTORY_CACHE_PREFIX, storeID);

            HttpRuntime.Cache.Remove(cachekey);
            var catalog = Providers.CatalogProvider.GetCatalog("CN");

            if (catalog == null)
            {
                LoggerHelper.Info("Clear Cache : No catalog");
                return;
            }
            var productCatalog = Providers.CatalogProvider.GetProductInfoCatalog("zh-CN");

            if (productCatalog == null)
            {
                LoggerHelper.Info("Clear Cache : No productCatalog");
                return;
            }
            var varSKU = productCatalog.AllSKUs;

            LoggerHelper.Info(string.Format("CN ClearCache {0}", storeID));
            foreach (var sku in varSKU)
            {
                if (catalog.Items.ContainsKey(sku.Value.SKU))
                {
                    sku.Value.CatalogItem = catalog.Items[sku.Value.SKU] as CatalogItem_V01;
                }
            }
        }
예제 #2
0
        private bool IsElegibleForPromo(ShoppingCart_V02 cart, MyHLShoppingCart hlCart, out decimal volume)
        {
            var isElegible = false;

            volume = 0;

            LoggerHelper.Info(
                string.Format("CheckPromoInCart.ShoppingCart V02 items {0}",
                              string.Concat(cart.CartItems.Select(i => string.Format("{0},", i.SKU)))));
            LoggerHelper.Info(
                string.Format("CheckPromoInCart.MyHLShoppingCart items {0}",
                              string.Concat(hlCart.CartItems.Select(i => string.Format("{0},", i.SKU)))));
            LoggerHelper.Info(
                string.Format("AllowedSKUToAddPromoSKU {0}",
                              string.Concat(AllowedSKUToAddPromoSKU.Select(i => string.Format("{0},", i)))));

            var cartItemsV02 = (from a in AllowedSKUToAddPromoSKU
                                join b in cart.CartItems on a equals b.SKU
                                select
                                new
            {
                Sku = b.SKU,
                Qty = b.Quantity,
                Volume = CatalogProvider.GetCatalogItem(b.SKU, "IT").VolumePoints
            }).ToList();

            if (cartItemsV02.Any())
            {
                isElegible = true;
                volume     = cartItemsV02.Sum(oi => oi.Qty * oi.Volume);
            }
            else
            {
                var shoppingcartItemsV02 = (from a in AllowedSKUToAddPromoSKU
                                            join b in hlCart.ShoppingCartItems on a equals b.SKU
                                            select
                                            new { Sku = b.SKU, Qty = b.Quantity, Volume = b.CatalogItem.VolumePoints })
                                           .ToList();

                if (shoppingcartItemsV02.Any())
                {
                    isElegible = true;
                    volume     = shoppingcartItemsV02.Sum(oi => oi.Qty * oi.Volume);
                }
                else
                {
                    LoggerHelper.Info("No Items in Cart or MyHLCart. Rule fails");
                }
            }

            return(isElegible);
        }
예제 #3
0
        public static bool CNPQueryRespnse(string response, string orderNumber)
        {
            if (response.IndexOf("xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"") > 1)
            {
                response = response.Replace(" xmlns=\"http://www.99bill.com/mas_cnp_merchant_interface\"", "");
            }
            var xmlDoc        = new XmlDocument();
            var encodedString = Encoding.UTF8.GetBytes(response);
            var ms            = new MemoryStream(encodedString);

            ms.Flush();
            ms.Position = 0;
            // Build the XmlDocument from the MemorySteam of UTF-8 encoded bytes
            xmlDoc.Load(ms);
            var list = xmlDoc.SelectNodes("//TxnMsgContent");

            if (list != null && list.Count == 0)
            {
                var selectSingleNode = xmlDoc.SelectSingleNode("MasMessage/ErrorMsgContent/errorMessage");
                if (selectSingleNode != null)
                {
                    LoggerHelper.Info(string.Format(PaymentGatewayLogEntryType.Response.ToString(), orderNumber,
                                                    string.Empty, "CN_99BillPaymentGateway",
                                                    PaymentGatewayRecordStatusType.Declined,
                                                    response + selectSingleNode.InnerText));
                }
            }
            else
            {
                var approved         = false;
                var selectSingleNode = xmlDoc.SelectSingleNode("MasMessage/TxnMsgContent/responseCode");
                if (selectSingleNode != null)
                {
                    var responseCode = selectSingleNode.InnerText;
                    approved = responseCode == "00";
                }

                return(approved);
            }
            return(false);
        }
예제 #4
0
        private ShoppingCartRuleResult ClosePromo(MyHLShoppingCart shoppingCart, ShoppingCartRuleResult result)
        {
            var promo = ShoppingCartProvider.GetEligibleForPromo(shoppingCart.DistributorID, shoppingCart.Locale);

            PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList();

            if ((promo != null && shoppingCart.CartItems.Any(i => promo.Sku == i.SKU)) ||
                shoppingCart.CartItems.Any(i => PromoSKUs.Contains(i.SKU)))
            {
                if (promo != null)
                {
                    int    storedShoppingCartId = 0;
                    string storedOrderNumber    = string.Empty;
                    var    updated = ShoppingCartProvider.SaveEligibleForPromo(promo, shoppingCart.ShoppingCartID,
                                                                               shoppingCart.OrderNumber,
                                                                               ref storedShoppingCartId,
                                                                               ref storedOrderNumber);
                    if (updated != null && updated.IsDisable && shoppingCart.ShoppingCartID == storedShoppingCartId)
                    {
                        result.Result = RulesResult.Success;
                        shoppingCart.RuleResults.Add(result);
                    }
                    else if (updated == null)
                    {
                        LoggerHelper.Info("Promo for DS was closed in another cart");
                        result.Result = RulesResult.Feedback;
                        shoppingCart.RuleResults.Add(result);
                    }
                }
                else
                {
                    LoggerHelper.Info("DS is not eligible for promo");
                    result.Result = RulesResult.Feedback;
                    shoppingCart.RuleResults.Add(result);
                }
            }
            return(result);
        }
예제 #5
0
        private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart,
                                                    ShoppingCartRuleReason reason,
                                                    ShoppingCartRuleResult result)
        {
            var hlCart = cart as MyHLShoppingCart;

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

            if (!string.IsNullOrEmpty(HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalBeginDate))
            {
                DateTime beginDate;
                DateTime.TryParseExact(
                    HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalBeginDate,
                    "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out beginDate);

                if (DateUtils.GetCurrentLocalTime(Country).Date < beginDate.Date)
                {
                    // Promotion have not started
                    LoggerHelper.Info("Promo not started");
                    result.Result = RulesResult.Success;
                    result.AddMessage("PromoOutOfDate");
                    cart.RuleResults.Add(result);
                    return(result);
                }
            }

            bool isPromoEnded = DateUtils.GetCurrentLocalTime(Country).Date > PromotionalEndDate;

            if (isPromoEnded || (AllowedSKUToAddPromoSKU.Count > 0 &&
                                 PromotionalRequiredVolumePoints > 0 &&
                                 !string.IsNullOrEmpty(PromotionalSku)))
            {
                if (isPromoEnded)
                {
                    // Remove the promo sku if it exists in cart
                    if (hlCart.CartItems.Any(i => i.SKU.Equals(PromotionalSku)))
                    {
                        hlCart.DeleteItemsFromCart(new List <string> {
                            PromotionalSku
                        }, true);
                    }

                    LoggerHelper.Info("Promo sku removed for ended promo");
                    result.Result = RulesResult.Success;
                    result.AddMessage("PromoOutOfDate");
                    cart.RuleResults.Add(result);
                    return(result);
                }

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

                case ShoppingCartRuleReason.CartItemsAdded:
                case ShoppingCartRuleReason.CartItemsRemoved:
                    result = CheckPromoInCart(cart, hlCart, result);
                    break;
                }
            }
            else
            {
                var message =
                    string.Format("Rule not executed: IsEnded={0}, cart {1}, AllowedSku quantity {2}, rule reason:{3}",
                                  isPromoEnded.ToString(), (cart == null ? "is null" : "is not null"),
                                  AllowedSKUToAddPromoSKU.Count.ToString(), reason.ToString());
                LoggerHelper.Info(message);
            }
            return(result);
        }
예제 #6
0
        private ShoppingCartRuleResult CheckPromoInCart(ShoppingCart_V02 shoppingCart,
                                                        MyHLShoppingCart cart,
                                                        ShoppingCartRuleResult result)
        {
            LoggerHelper.Info(string.Format("Entered CheckPromoInCart."));
            // Define the promo quantity to add
            decimal volumeInCartForPromo = 0;
            var     applyForPromo        = IsElegibleForPromo(shoppingCart, cart, out volumeInCartForPromo);

            var allSkus = CatalogProvider.GetAllSKU(Locale);

            if (applyForPromo && !allSkus.Keys.Contains(PromotionalSku))
            {
                LoggerHelper.Info("No promo sku in catalog");
                if (Environment.MachineName.IndexOf("PROD", StringComparison.Ordinal) < 0)
                {
                    var    country = new RegionInfo(new CultureInfo(Locale, false).LCID);
                    string message = "NoPromoSku";
                    var    globalResourceObject =
                        HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform),
                                                            "NoPromoSku");
                    if (globalResourceObject != null)
                    {
                        message = string.Format(globalResourceObject.ToString(), country.DisplayName, PromotionalSku);
                    }
                    LoggerHelper.Error(message);
                    result.Result = RulesResult.Feedback;
                    result.AddMessage(message);
                    cart.RuleResults.Add(result);
                    return(result);
                }
                return(result);
            }

            // Define the promo quantity to add
            var elegibleQuantity = Convert.ToInt32(Math.Truncate(volumeInCartForPromo / PromotionalRequiredVolumePoints)) *
                                   PromoQuantity;
            var promoSkuInCart = (from c in cart.CartItems where c.SKU.Equals(PromotionalSku) select c).FirstOrDefault();

            if (elegibleQuantity == 0 && promoSkuInCart == null)
            {
                // Nothing to do
                LoggerHelper.Info("Not elegible for promo and not promo sku in cart");
                result.Result = RulesResult.Success;
                cart.RuleResults.Add(result);
                return(result);
            }

            if (promoSkuInCart != null)
            {
                if (promoSkuInCart.Quantity == elegibleQuantity)
                {
                    // Check if nothing to do
                    LoggerHelper.Info("Not quantity change to do in promo sku");
                    result.Result = RulesResult.Success;
                    cart.RuleResults.Add(result);
                    return(result);
                }
                if (promoSkuInCart.Quantity > elegibleQuantity)
                {
                    // Remove the promo sku if quantity to add is minor than the quantity in cart
                    LoggerHelper.Info("Removing promo sku from cart");
                    cart.DeleteItemsFromCart(new List <string> {
                        PromotionalSku
                    }, true);
                    if (elegibleQuantity == 0)
                    {
                        result.Result = RulesResult.Success;
                        cart.RuleResults.Add(result);
                        return(result);
                    }
                }
                else
                {
                    // Change item quantity adding the excess to the existent sku
                    elegibleQuantity -= promoSkuInCart.Quantity;
                }
            }

            // Adding promo if it has inventory and if it is allowed
            if (applyForPromo && cart.DeliveryInfo != null && !string.IsNullOrEmpty(cart.DeliveryInfo.WarehouseCode))
            {
                LoggerHelper.Info("Checking Inventory");
                WarehouseInventory warehouseInventory;
                var catItemPromo = CatalogProvider.GetCatalogItem(PromotionalSku, Country);
                if (catItemPromo.InventoryList.TryGetValue(cart.DeliveryInfo.WarehouseCode, out warehouseInventory))
                {
                    if (warehouseInventory != null)
                    {
                        var warehouseInventory01 = warehouseInventory as WarehouseInventory_V01;
                        if (warehouseInventory01 != null && warehouseInventory01.QuantityAvailable > elegibleQuantity)
                        {
                            cart.AddItemsToCart(
                                new List <ShoppingCartItem_V01>(new[]
                                                                { new ShoppingCartItem_V01(0, PromotionalSku, elegibleQuantity, DateTime.Now) }), true);
                            result.Result = RulesResult.Success;
                            cart.RuleResults.Add(result);
                        }
                        else
                        {
                            LoggerHelper.Info("Warehouse information is null or not enough quantity is available");
                        }
                    }
                }
                else
                {
                    LoggerHelper.Info("Not inventory list was gotten for promo sku");
                }
            }
            return(result);
        }
        private bool ValidateCreditCardInfo(ref string errorMessage)
        {
            bool   isValid = true;
            int    month, year;
            string cardType = ddlCards.SelectedValue;
            string ccNumber = txtCardNumber.Text.ToString().Trim();
            string cvv      = txtCVV.Text.ToString().Trim();

            // check credit card number length
            if (string.IsNullOrEmpty(ccNumber) || ccNumber.Length < 15)
            {
                errorMessage = GetLocalResourceObject("InvalidCreditCard") as string;
                return(false);
            }

            // validate credit card number using regular expression
            if (!ValidateCreditCardNumber(cardType, ccNumber))
            {
                errorMessage = GetLocalResourceObject("InvalidCreditCard") as string;
                return(false);
            }

            if (!int.TryParse(ddlExpYear.SelectedValue, out year))
            {
                LoggerHelper.Info(string.Format("PaymentInfo_es_CR.ValidateCreditCardInfo - Invalid Year - {0}", ddlExpYear.SelectedValue));
                errorMessage = GetLocalResourceObject("InvalidExpirationDate") as string;
                return(false);
            }

            if (!int.TryParse(ddlExpMonth.SelectedValue, out month))
            {
                LoggerHelper.Info(string.Format("PaymentInfo_es_CR.ValidateCreditCardInfo - Invalid Month - {0}", ddlExpYear.SelectedValue));
                errorMessage = GetLocalResourceObject("InvalidExpirationDate") as string;
                return(false);
            }

            // validate expiration date. Assumption: load the Year drop down by code and won't be earlier than this year
            if (Convert.ToInt32(ddlExpYear.SelectedValue) == DateTime.Now.Year)
            {
                if (month < DateTime.Now.Month)
                {
                    errorMessage = GetLocalResourceObject("InvalidExpirationDate") as string;
                    return(false);
                }
            }

            // check CVV
            switch (cardType)
            {
            case "VI":
            case "MC":
                if (txtCVV.Text.ToString().Trim().Length != 3)
                {
                    errorMessage = GetLocalResourceObject("InvalidCVV") as string;
                    return(false);
                }
                break;

            case "AX":
                if (txtCVV.Text.ToString().Trim().Length != 4)
                {
                    errorMessage = GetLocalResourceObject("InvalidCVV") as string;
                    return(false);
                }
                break;

            default:
                break;
            }

            // 3. validate expiration date
            return(isValid);
        }
예제 #8
0
        private ShoppingCartRuleResult RemovePromoOnEmptyCart(MyHLShoppingCart shoppingCart, ShoppingCartRuleResult result)
        {
            var promo = ShoppingCartProvider.GetEligibleForPromo(shoppingCart.DistributorID, shoppingCart.Locale);

            PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList();

            var promoSkuInCart = promo != null?
                                 shoppingCart.CartItems.Where(i => i.SKU == promo.Sku).Select(i => i.SKU).ToList() :
                                     shoppingCart.CartItems.Where(i => PromoSKUs.Contains(i.SKU)).Select(i => i.SKU).ToList();

            shoppingCart.IsPromoNotified = !promoSkuInCart.Any();

            if (shoppingCart.DeliveryInfo != null && shoppingCart.DeliveryInfo.Option != ServiceProvider.ShippingSvc.DeliveryOptionType.Shipping)
            {
                // Remove promo if it is in cart
                if (promoSkuInCart.Any())
                {
                    shoppingCart.DeleteItemsFromCart(promoSkuInCart, true);
                    shoppingCart.IsPromoDiscarted = true;
                    result.Result = RulesResult.Success;
                    shoppingCart.RuleResults.Add(result);
                    return(result);
                }
                else
                {
                    result.Result = RulesResult.Success;
                    shoppingCart.RuleResults.Add(result);
                    return(result);
                }
            }

            if ((promo != null && !shoppingCart.CartItems.Any(i => promo.Sku != i.SKU)) ||
                (promo == null && !shoppingCart.CartItems.Any(i => PromoSKUs.Contains(i.SKU))))
            {
                shoppingCart.DeleteItemsFromCart(promoSkuInCart, true);
                shoppingCart.IsPromoDiscarted = true;
                result.Result = RulesResult.Success;
                shoppingCart.RuleResults.Add(result);
                return(result);
            }

            // Validate if the cart has only HFF and/or APF item
            var HFFsku  = HLConfigManager.Configurations.DOConfiguration.HFFHerbalifeSku;
            var apfSkus = APFDueProvider.GetAPFSkuList();

            if (HFFsku != null && shoppingCart.CartItems.Any(i => i.SKU == HFFsku || apfSkus.Contains(i.SKU)))
            {
                if (promo != null && !shoppingCart.CartItems.Any(i => i.SKU != HFFsku && i.SKU != promo.Sku && !apfSkus.Contains(i.SKU)))
                {
                    shoppingCart.IsPromoDiscarted = true;
                    if (promoSkuInCart.Count > 0)
                    {
                        // Remove promoSkus from cart, cant apply for promo when have HFF SKU only
                        shoppingCart.DeleteItemsFromCart(promoSkuInCart, true);
                    }

                    // Just remove promo sku and nothing more to do
                    LoggerHelper.Info("No promo sku added when only HFF SKU is in cart");
                    result.Result = RulesResult.Success;
                    shoppingCart.RuleResults.Add(result);
                    return(result);
                }
            }

            return(result);
        }
예제 #9
0
        private ShoppingCartRuleResult CheckPromoInCart(MyHLShoppingCart shoppingCart,
                                                        bool checkPayment,
                                                        ShoppingCartRuleResult result)
        {
            var promo = ShoppingCartProvider.GetEligibleForPromo(shoppingCart.DistributorID, shoppingCart.Locale);

            PromoSKUs = HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalSku.Split(',').ToList();

            var promoWarehouse = string.IsNullOrEmpty(HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalWarehouse) ?
                                 PromotionWarehouse : HLConfigManager.Configurations.ShoppingCartConfiguration.PromotionalWarehouse;

            var allSkus = CatalogProvider.GetAllSKU(Locale);

            if (promo != null && !allSkus.Keys.Contains(promo.Sku))
            {
                LoggerHelper.Info("No promo sku in catalog");
                if (Environment.MachineName.IndexOf("PROD", StringComparison.Ordinal) < 0)
                {
                    var    country = new RegionInfo(new CultureInfo(Locale, false).LCID);
                    string message = "NoPromoSku";
                    var    globalResourceObject =
                        HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform),
                                                            "NoPromoSku");
                    if (globalResourceObject != null)
                    {
                        message = string.Format(globalResourceObject.ToString(), country.DisplayName, promo.Sku);
                    }
                    LoggerHelper.Error(message);
                    result.Result = RulesResult.Feedback;
                    result.AddMessage(message);
                    shoppingCart.RuleResults.Add(result);
                    return(result);
                }
                return(result);
            }

            result = RemovePromoOnEmptyCart(shoppingCart, result);

            int selectedPaymentMethod = 0;

            if (checkPayment)
            {
                var session = SessionInfo.GetSessionInfo(shoppingCart.DistributorID, shoppingCart.Locale);
                selectedPaymentMethod = session.SelectedPaymentMethod;
            }

            var promoSkuInCart = promo != null?
                                 shoppingCart.CartItems.Where(i => i.SKU == promo.Sku).Select(i => i.SKU).ToList() :
                                     shoppingCart.CartItems.Where(i => PromoSKUs.Contains(i.SKU)).Select(i => i.SKU).ToList();

            if (promo == null && promoSkuInCart.Count == 0)
            {
                // Nothing to do
                LoggerHelper.Info("Not elegible for promo and not promo sku in cart");
                result.Result = RulesResult.Success;
                shoppingCart.RuleResults.Add(result);
                return(result);
            }

            if (shoppingCart.Totals == null)
            {
                // Nothing to do
                LoggerHelper.Info("Not able to add or remove sku. Totals are null");
                result.Result = RulesResult.Failure;
                shoppingCart.RuleResults.Add(result);
                return(result);
            }

            if (shoppingCart.CartItems.Count == 0)
            {
                // Just remove promo sku and nothing more to do
                LoggerHelper.Info("No items in cart to add promo");
                result.Result = RulesResult.Success;
                shoppingCart.RuleResults.Add(result);
                return(result);
            }

            if (promoSkuInCart.Count > 0)
            {
                // Remove promoSkus from cart
                shoppingCart.DeleteItemsFromCart(promoSkuInCart, true);

                if (!AlowedOrderSubTypes.Contains(shoppingCart.OrderSubType) ||
                    (promo != null && !shoppingCart.CartItems.Any(i => !i.SKU.Equals(promo.Sku))) ||
                    (checkPayment && selectedPaymentMethod > 1) || shoppingCart.IsPromoDiscarted)
                {
                    // Just remove promo sku and nothing more to do
                    LoggerHelper.Info("Removed promo sku in cart");
                    result.Result = RulesResult.Success;
                    shoppingCart.RuleResults.Add(result);
                    return(result);
                }
                else if (shoppingCart.IgnorePromoSKUAddition)
                {
                    shoppingCart.IgnorePromoSKUAddition = false;
                    result.Result = RulesResult.Failure;
                    string message = string.Format(HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "SKUCantBePurchased").ToString(), promoSkuInCart[0]);
                    result.AddMessage(message);
                    shoppingCart.RuleResults.Add(result);
                }
            }

            // Adding promo if it has inventory and if it is allowed
            if (promo != null && AlowedOrderSubTypes.Contains(shoppingCart.OrderSubType) && shoppingCart.CartItems.Any() &&
                shoppingCart.DeliveryInfo != null && !string.IsNullOrEmpty(shoppingCart.DeliveryInfo.WarehouseCode) && shoppingCart.DeliveryInfo.WarehouseCode.Equals(promoWarehouse) &&
                ((checkPayment && selectedPaymentMethod <= 1) || !checkPayment) && !shoppingCart.IsPromoDiscarted && !APFDueProvider.IsAPFSkuPresent(shoppingCart.CartItems))
            {
                LoggerHelper.Info("Checking Inventory");
                WarehouseInventory warehouseInventory;
                var catItemPromo = CatalogProvider.GetCatalogItem(promo.Sku, Country);
                if (catItemPromo.InventoryList.TryGetValue(shoppingCart.DeliveryInfo.WarehouseCode,
                                                           out warehouseInventory))
                {
                    if (warehouseInventory != null)
                    {
                        var warehouseInventory01 = warehouseInventory as WarehouseInventory_V01;
                        if (warehouseInventory01 != null && warehouseInventory01.QuantityAvailable > promo.Quantity)
                        {
                            var    country = new RegionInfo(new CultureInfo(Locale, false).LCID);
                            string message = "PromoInCart";
                            var    globalResourceObject = HttpContext.GetGlobalResourceObject(string.Format("{0}_Rules", HLConfigManager.Platform), "PromoInCart");
                            if (globalResourceObject != null)
                            {
                                message = string.Format(globalResourceObject.ToString(), country.DisplayName);
                            }

                            shoppingCart.AddItemsToCart(
                                new List <ShoppingCartItem_V01>(new[]
                                                                { new ShoppingCartItem_V01(0, promo.Sku, promo.Quantity, DateTime.Now) }), true);

                            if (result.Result != RulesResult.Failure)
                            {
                                result.Result = checkPayment ? RulesResult.Success : (shoppingCart.IsPromoNotified ? RulesResult.Feedback : RulesResult.Success);
                                result.AddMessage(message);
                                shoppingCart.RuleResults.Add(result);
                            }
                            shoppingCart.IsPromoNotified = false;
                        }
                        else
                        {
                            LoggerHelper.Info("Warehouse information is null or not enough quantity is available");
                        }
                    }
                }
                else
                {
                    LoggerHelper.Info("Not inventory list was gotten for promo sku");
                }
            }
            return(result);
        }