private void ReadFromData() { DistributorOrderingProfile distributorOrderingProfile = DistributorOrderingProfileProvider.GetProfile(DistributorID, CountryCode); _distributorId = DistributorID; _apfDueDate = distributorOrderingProfile.ApfDueDate; if (_testing) { APFDueProvider.UpdateAPFDuePaid(_distributorId, _apfDueDate); } _apfSku = APFDueProvider.GetAPFSku(); _cart = (Page as ProductsBase).ShoppingCart; _apfIsDue = APFDueProvider.IsAPFDueAndNotPaid(_distributorId, HLConfigManager.Configurations.Locale); _apfDueWithinOneYear = APFDueProvider.IsAPFDueWithinOneYear(_distributorId, CountryCode); _apfDueGreaterThanOneYear = APFDueProvider.IsAPFDueGreaterThanOneYear(_distributorId, CountryCode); if (_apfIsDue) { _apfsDue = APFDueProvider.APFQuantityDue(_distributorId, HLConfigManager.Configurations.Locale); } List <ShoppingCartItem_V01> item = (from c in _cart.CartItems where c.SKU == _apfSku select c).ToList(); _apfsInCart = 0; if (item.Count > 0) { _apfsInCart = item[0].Quantity; } }
private void DisplayData() { if (HLConfigManager.Configurations.DOConfiguration.IsChina) { List <Tuple <string, bool> > cartItems = new List <Tuple <string, bool> >(); foreach (var i in ShoppingCart.ShoppingCartItems) { cartItems.Add(new Tuple <string, bool>(i.SKU, i.IsPromo)); } if (ShoppingCart.ItemsBeingAdded != null) { foreach (var i2 in ShoppingCart.ItemsBeingAdded) { if (!cartItems.Contains(new Tuple <string, bool>(i2.SKU, i2.IsPromo))) { cartItems.Add(new Tuple <string, bool>(i2.SKU, i2.IsPromo)); } } } //var apfsku = this.ShoppingCart.ShoppingCartItems.Find(s => s.SKU ==APFDueProvider.GetAPFSku()); if (cartItems != null) { if (cartItems.Count == 1) { if (cartItems[0].Item1 == APFDueProvider.GetAPFSku()) { OvalSaveCartLink.Visible = false; imgSavedCartsHelp.Visible = false; } else if (cartItems[0].Item2 == true) { OvalSaveCartLink.Visible = false; imgSavedCartsHelp.Visible = false; } else { OvalSaveCartLink.Visible = true; imgSavedCartsHelp.Visible = true; } } else if (cartItems.Count < 1) { OvalSaveCartLink.Visible = false; imgSavedCartsHelp.Visible = false; } else { OvalSaveCartLink.Visible = true; imgSavedCartsHelp.Visible = true; } } } }
private ShoppingCartRuleResult PerformRules(ShoppingCart_V02 cart, ShoppingCartRuleResult result, ShoppingCartRuleReason reason) { if (null != cart && ((reason == ShoppingCartRuleReason.CartCreated) || (reason == ShoppingCartRuleReason.CartRetrieved))) { var myhlCart = cart as MyHLShoppingCart; var sku = APFDueProvider.GetAPFSku(); myhlCart.DeleteItemsFromCart( (from a in cart.CartItems where a.SKU == sku.Trim() select a.SKU).ToList(), true); } return(result); }
private ShoppingCartRuleResult CheckHonors2016Warehouse(ShoppingCart_V01 shoppingCart, ShoppingCartRuleResult ruleResult) { var cart = shoppingCart as MyHLShoppingCart; if (cart != null && cart.OrderCategory == OrderCategoryType.RSO && cart.DeliveryInfo != null) { var honors2016Skus = GetHonors2016Skus(); if (cart.DeliveryInfo.Option == DeliveryOptionType.Pickup && cart.DeliveryInfo.WarehouseCode == HLConfigManager.Configurations.PickupOrDeliveryConfiguration.SpecialEventWareHouse) { // Remove items from other categories var itemsToRemove = (from item in shoppingCart.CartItems where !honors2016Skus.Contains(item.SKU) select item).ToList(); if (!itemsToRemove.Any()) { return(ruleResult); } //Do not remove APF SKU if exists in the cart var apfSku = APFDueProvider.GetAPFSku(); itemsToRemove.RemoveAll(a => a.SKU.Equals(apfSku)); if (itemsToRemove.Any()) { var notValidSkus = itemsToRemove.Select(s => s.SKU).ToList(); cart.DeleteItemsFromCart(notValidSkus, true); ruleResult.Result = RulesResult.Success; } } else if (cart.DeliveryInfo.Option != DeliveryOptionType.Pickup || cart.DeliveryInfo.WarehouseCode != HLConfigManager.Configurations.PickupOrDeliveryConfiguration.SpecialEventWareHouse) { // Remove Honors 2016 items var itemsToRemove = (from item in shoppingCart.CartItems where honors2016Skus.Contains(item.SKU) select item).ToList(); if (itemsToRemove.Any()) { var notValidSkus = itemsToRemove.Select(s => s.SKU).ToList(); cart.DeleteItemsFromCart(notValidSkus, true); ruleResult.Result = RulesResult.Success; } } } return(ruleResult); }
/// <summary> /// Saves the cart. /// </summary> /// <param name="cartName">Cart name.</param> /// <param name="update">Flag to update the same saved cart</param> private void SaveCart(string cartName, bool update) { if (!update) { if (HLConfigManager.Configurations.DOConfiguration.IsChina) { ShoppingCart.removeItem(APFDueProvider.GetAPFSku()); } var optionType = (ServiceProvider.CatalogSvc.DeliveryOptionType)Enum.Parse(typeof(ServiceProvider.CatalogSvc.DeliveryOptionType), ProductsBase.OptionType.ToString()); this.ShoppingCart.CopyCartWithShippingInfo(true, cartName, ProductsBase.ShippingAddresssID, ProductsBase.DeliveryOptionID, optionType); } this.lblSavedCartMessage1.Text = string.Format( GetLocalResourceObject("lblSavedCartMessage1.Text") as string, cartName); this.updSavedCart.Update(); this.ShowContinuePopup(); }
public void GracePeriodAPFDisplay() { _apfSku = APFDueProvider.GetAPFSku(); List <ShoppingCartItem_V01> item = (from c in _cart.CartItems where c.SKU == _apfSku select c).ToList(); _APFExempted = APFDueProvider.IsAPFExemptOn200VP(DistributorOrderingProfile, _cart.VolumeInCart); if (_APFStatus != 2) { return; } if (_APFExempted) { pnlAPFPaid.Visible = false; } if (item.Count >= 1) { ShowApfAddedMessage(); } else { var apfSku = new List <ShoppingCartItem_V01>(); if (!_APFExempted) { if (_quantityToAdd < 1) { _quantityToAdd = 1; } apfSku.Add(new ShoppingCartItem_V01(0, APFDueProvider.GetAPFSku(), _quantityToAdd, DateTime.Now)); _cart.AddItemsToCart(apfSku); } item = (from c in _cart.CartItems where c.SKU == _apfSku select c).ToList(); if (item.Count >= 1) { ShowApfAddedMessage(); } } }
private ShoppingCartRuleResult CartItemBeingAddedRuleHandler(ShoppingCart_V01 cart, ShoppingCartRuleResult result, string level) { var hlCart = cart as MyHLShoppingCart; if (null != hlCart) { foreach (ShoppingCartItem_V01 item in cart.CurrentItems) { if (APFDueProvider.IsAPFSku(item.SKU)) { bool canAddAPF = ShouldAddAPFPT(cart as MyHLShoppingCart); if (!canAddAPF) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CannotAddAPFSku") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "CannotRemoveAPFSku"); cart.RuleResults.Add(result); cart.APFEdited = false; return(result); } } } Global.APFRules globalRules = new Global.APFRules(); hlCart.RuleResults = globalRules.ProcessCart(hlCart, ShoppingCartRuleReason.CartItemsBeingAdded); } return(result); }
protected void btnAddToCart_Click(object sender, EventArgs e) { if (_APFStatus == 1) // due in 3 months { if (_apfsInCart >= 1) { DisplayData(); return; } } MyHLShoppingCart cart = (Page as ProductsBase).ShoppingCart; //Add the APF amount to cart if (HLConfigManager.Configurations.APFConfiguration.DistributorSku != null) { try { if (_quantityToAdd > 0) { var apfSku = new List <ShoppingCartItem_V01>(); apfSku.Add(new ShoppingCartItem_V01(0, APFDueProvider.GetAPFSku(), _quantityToAdd, DateTime.Now)); if (ShoppingCart.DeliveryInfo == null) { lblAPFMessage.Text = PlatformResources.GetGlobalResourceString("ErrorMessage", "CantVisitWithNoDeliveryInfo"); return; } if (CatalogProvider.IsPreordering(ShoppingCart.CartItems, ShoppingCart.DeliveryInfo.WarehouseCode)) { lblAPFMessage.Text = String.Format( PlatformResources.GetGlobalResourceString("ErrorMessage", "PreOrderingSku")); } else { ProductsBase.AddItemsToCart(apfSku); } // Verify if any validation rule fails to show the error in the APF module IEnumerable <string> ruleResultMessages = from r in ShoppingCart.RuleResults where r.Result == RulesResult.Failure select r.Messages[0]; if (null != ruleResultMessages && ruleResultMessages.Count() > 0) { lblError.Text = ruleResultMessages.FirstOrDefault(); lblError.Visible = true; return; } } } catch (Exception ex) { LoggerHelper.Error("APF Could not be added to cart!\n" + ex); } DisplayData(); } }
private void DoApfDue(string distributorID, ShoppingCart_V01 result, string cacheKey, string locale, bool cartHasItems, ShoppingCartRuleResult ruleResult, bool justEntered) { var cart = result as MyHLShoppingCart; if (cart == null) { return; } try { string level; if (DistributorProfileModel != null) { level = DistributorProfileModel.TypeCode.ToUpper(); } else { level = GetMemberLevelFromDistributorProfile(cart.DistributorID); } var distributorOrderingProfile = DistributorOrderingProfileProvider.GetProfile(cart.DistributorID, cart.CountryCode); if ((distributorOrderingProfile.HardCashOnly && !HLConfigManager.Configurations.PaymentsConfiguration.AllowWireForHardCash)) { return; } var apfItems = new List <ShoppingCartItem_V01>(); if (cart.CartItems != null && cart.CartItems.Count > 0) { //Stash off all non-APF items - to be re-added if appropriate var nonApfItems = (from c in cart.CartItems where APFDueProvider.IsAPFSku(c.SKU.Trim()) == false select c) .ToList <ShoppingCartItem_V01>(); apfItems = (from c in cart.CartItems where APFDueProvider.IsAPFSku(c.SKU.Trim()) select c) .ToList <ShoppingCartItem_V01>(); if (nonApfItems.Count > 0 || HLConfigManager.Configurations.APFConfiguration.StandaloneAPFOnlyAllowed) { // Clear the cart cart.DeleteItemsFromCart(null, true); //if (APFDueProvider.CanEditAPFOrder(distributorID, locale, level)) //{ //Global rule - they can always edit the cart ie add remove products at least var list = CatalogProvider.GetCatalogItems((from p in nonApfItems select p.SKU).ToList(), Country); var products = (from c in list where c.Value.ProductType == ProductType.Product select c.Value.SKU).ToList(); var nonproducts = (from c in list where c.Value.ProductType != ProductType.Product select c.Value.SKU).ToList(); if (!HLConfigManager.Configurations.APFConfiguration.AllowNonProductItemsWithStandaloneAPF) //We don't allow non product items alone on an apf order { if (products.Count == 0) { if (nonproducts.Count > 0) { ruleResult.Result = RulesResult.Success; ruleResult.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "NonProductItemsRemovedForStandaloneAPF") as string); cart.RuleResults.Add(ruleResult); } } else { cart.AddItemsToCart(nonApfItems, true); } } else { if (!HLConfigManager.Configurations.APFConfiguration.StandaloneAPFOnlyAllowed) { cart.AddItemsToCart(nonApfItems, true); } } } } else if (null != cart && null != cart.RuleResults) { var rules = (from rule in cart.RuleResults where rule.RuleName == RuleName && rule.Result == RulesResult.Failure select rule); if (null != rules && rules.Count() > 0) { cart.RuleResults.Remove(rules.First()); } } //Add the APF in var apfSku = new List <ShoppingCartItem_V01>(); var sku = APFDueProvider.GetAPFSku(); apfSku.Add(new ShoppingCartItem_V01(0, sku, 1, DateTime.Now)); if (!cart.APFEdited) { apfSku[0].Quantity = 1; //CalcQuantity(distributorOrderingProfile.ApfDueDate); if (cart.CartItems.Exists(c => c.SKU == apfSku[0].SKU)) { var apf = (from a in cart.CartItems where a.SKU == apfSku[0].SKU select a).First(); cart.DeleteItemsFromCart( (from a in cart.CartItems where a.SKU == apfSku[0].SKU select a.SKU).ToList(), true); } if (cart.CartItems.Count == 0) //This is now a Standalone APF { SetAPFDeliveryOption(cart); } cart.AddItemsToCart(apfSku, true); if (justEntered) { ruleResult.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "APFDueAdded") as string); ruleResult.Result = RulesResult.Success; SetApfRuleResponse(ruleResult, ApfAction.None, sku, "ApfRule", TypeOfApf.CantDSRemoveAPF, "APFDueAdded"); cart.RuleResults.Add(ruleResult); } else { foreach (ShoppingCartRuleResult r in cart.RuleResults) { if (r.RuleName == RuleName) { r.Messages.Clear(); r.AddMessage(string.Empty); } } } } //else //{ // if (APFDueProvider.CanRemoveAPF(distributorID, locale, level)) // { // cart.AddItemsToCart(apfSku, true); // } //} } catch (Exception ex) { LoggerHelper.Error(string.Format("doAPFDue DS:{0} ERR:{1}", distributorID, ex)); } }
private ShoppingCartRuleResult CartItemBeingDeletedRuleHandler(ShoppingCart_V01 cart, ShoppingCartRuleResult result, string level) { if (APFDueProvider.IsAPFDueAndNotPaid(cart.DistributorID, Locale) && HLConfigManager.Configurations.APFConfiguration.StandaloneAPFOnlyAllowed) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject(string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CompleteAPFPurchase") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "CompleteAPFPurchase"); cart.RuleResults.Add(result); return(result); } //Deleting is a little different than Inserting, because delete handles multiple skus while insert only does one //so we can use the cart.CurrentItems to control this. Anything the rule says to not delete, we remove from the CurrentItems //Delete post-rule will only delete what is left in there bool isStandaloneAPF = APFDueProvider.hasOnlyAPFSku(cart.CartItems, Locale); var toRemove = new List <ShoppingCartItem_V01>(); var hlCart = cart as MyHLShoppingCart; if (null != hlCart) { foreach (ShoppingCartItem_V01 item in cart.CurrentItems) { if (APFDueProvider.IsAPFSku(item.SKU)) { if ( !APFDueProvider.CanRemoveAPF(cart.DistributorID, Thread.CurrentThread.CurrentCulture.Name, level)) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CannotRemoveAPFSku") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "CannotRemoveAPFSku"); cart.RuleResults.Add(result); } else { if (APFDueProvider.IsAPFDueAndNotPaid(cart.DistributorID, Locale)) { var originalItem = (from c in cart.CartItems where c.SKU == cart.CurrentItems[0].SKU select c).ToList(); int requiredQuantity = APFDueProvider.APFQuantityDue(cart.DistributorID, Locale); if (level == "SP") { item.Quantity = requiredQuantity; result.Result = RulesResult.Recalc; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "RequiredAPFLeftInCart") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "RequiredAPFLeftInCart"); cart.RuleResults.Add(result); //toRemove.Add(item); cart.APFEdited = false; return(result); } //Add for ChinaDO if (HLConfigManager.Configurations.APFConfiguration.CantDSRemoveAPF) { result.Result = RulesResult.Recalc; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "RequiredAPFLeftInCart") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "RequiredAPFLeftInCart"); cart.RuleResults.Add(result); //toRemove.Add(item); cart.APFEdited = false; return(result); } } cart.APFEdited = true; toRemove.Add(item); // added } } else { toRemove.Add(item); // added } } //if (toRemove.Count > 0) //{ // cart.CurrentItems.Remove(toRemove[0]); //} var remainingItems = (from c in cart.CartItems where !toRemove.Any(x => x.SKU == c.SKU) select c).ToList(); //List<ShoppingCartItem_V01> remainingItems = (from c in cart.CartItems where c.SKU != cart.CurrentItems[0].SKU select c).ToList(); var mags = CartHasOnlyTodaysMagazine(remainingItems); if (mags.Count > 0) { foreach (ShoppingCartItem_V01 item in mags) { (cart as MyHLShoppingCart).DeleteTodayMagazine(item.SKU); remainingItems.Remove(item); if (!cart.CurrentItems.Exists(c => c.SKU == item.SKU)) { cart.CurrentItems.Add(item); } } result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "NoTodayMagazineWithStandalonAPF") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "NoTodayMagazineWithStandalonAPF"); cart.RuleResults.Add(result); } // added if (remainingItems.Count > 0) { var list = new ShoppingCartItemList(); list.AddRange(remainingItems); isStandaloneAPF = APFDueProvider.hasOnlyAPFSku(list, Locale); if (isStandaloneAPF) { SetAPFDeliveryOption(hlCart); } else { if (APFDueProvider.IsAPFSkuPresent(cart.CurrentItems)) { SetNonStandAloneAPFDeliveryOption(hlCart); } } } else { SetNonStandAloneAPFDeliveryOption(hlCart); } } //if((from c in cart.CurrentItems where APFDueProvider.IsAPFSku(c.SKU) select c).Count() >0) //{ // if (isStandaloneAPF) // { // SetAPFDeliveryOption(hlCart); // } //} return(result); }
private ShoppingCartRuleResult CartItemBeingAddedRuleHandler(ShoppingCart_V01 cart, ShoppingCartRuleResult result, string level) { var distributorId = cart.DistributorID; var isAPFDueandNotPaid = APFDueProvider.IsAPFDueAndNotPaid(distributorId, Locale); if (isAPFDueandNotPaid && HLConfigManager.Configurations.APFConfiguration.StandaloneAPFOnlyAllowed) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject(string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CompleteAPFPurchase") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "CompleteAPFPurchase"); cart.RuleResults.Add(result); return(result); } else if (isAPFDueandNotPaid && HLConfigManager.Configurations.DOConfiguration.IsChina) { string cacheKey = string.Empty; bool reloadAPFs = (null != cart && null != cart.CartItems) && isAPFDueandNotPaid && !APFDueProvider.IsAPFSkuPresent(cart.CartItems); DoApfDue(cart.DistributorID, cart, cacheKey, Locale, reloadAPFs, result, true); } if ((cart as MyHLShoppingCart).OrderCategory == OrderCategoryType.ETO) //No APFs allowed in ETO cart { result.Result = RulesResult.Success; return(result); } //cart.CurrentItems[0] contains the current item being added //because the provider only adds one at a time, we just need to return a single error, but aggregate to the cart errors for the UI if (APFDueProvider.IsAPFSku(cart.CurrentItems[0].SKU)) { if (APFDueProvider.CanRemoveAPF(distributorId, Locale, level)) { if (APFDueProvider.IsAPFSku(cart.CurrentItems[0].SKU)) { var originaItem = (from c in cart.CartItems where c.SKU == cart.CurrentItems[0].SKU select c).ToList(); int previousQuantity = 0; if (null != originaItem && originaItem.Count > 0) { previousQuantity = originaItem[0].Quantity; } if (APFDueProvider.IsAPFDueAndNotPaid(distributorId, Locale)) { int requiredQuantity = APFDueProvider.APFQuantityDue(distributorId, Locale); if (cart.CurrentItems[0].Quantity + previousQuantity <= requiredQuantity) { if (level == "SP") { cart.CurrentItems[0].Quantity = requiredQuantity - previousQuantity; result.Result = RulesResult.Recalc; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "RequiredAPFLeftInCart") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.CantDSRemoveAPF, "RequiredAPFLeftInCart"); cart.RuleResults.Add(result); cart.APFEdited = false; return(result); } else { result.Result = RulesResult.Recalc; result.AddMessage(string.Empty); cart.RuleResults.Add(result); cart.APFEdited = true; return(result); } } else if (cart.CurrentItems[0].Quantity + previousQuantity > requiredQuantity) { cart.CurrentItems[0].Quantity = requiredQuantity - previousQuantity; result.Result = RulesResult.Recalc; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "RequiredAPFLeftInCart") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.CantDSRemoveAPF, "RequiredAPFLeftInCart"); cart.RuleResults.Add(result); cart.APFEdited = false; return(result); } } else { if (cart.CurrentItems[0].Quantity + previousQuantity > 1) { if (APFDueProvider.CanAddAPF(distributorId)) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CanOnlyPrepayOneAPF") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.CantDSRemoveAPF, "CanOnlyPrepayOneAPF"); cart.RuleResults.Add(result); cart.APFEdited = true; return(result); } } } } } if (!APFDueProvider.CanAddAPF(distributorId)) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CannotAddAPFSku") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.CannotAddAPFSku, "CannotAddAPFSku"); cart.RuleResults.Add(result); return(result); } else { string apfSku = APFDueProvider.GetAPFSku(); if (cart.CurrentItems[0].SKU == apfSku) { cart.APFEdited = true; } else { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "SkuNotValid") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.CannotAddAPFSku, "SkuNotValid"); cart.RuleResults.Add(result); return(result); } } } if (APFDueProvider.IsAPFSkuPresent(cart.CartItems)) { var currentSession = SessionInfo.GetSessionInfo(cart.DistributorID, cart.Locale); if ((!APFDueProvider.CanEditAPFOrder(cart.DistributorID, Thread.CurrentThread.CurrentCulture.Name, level)) || (currentSession.IsAPFOrderFromPopUp)) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "CompleteAPFPurchase") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "CompleteAPFPurchase"); cart.RuleResults.Add(result); return(result); } else { if (APFDueProvider.containsOnlyAPFSku(cart.CartItems)) { CatalogItem item = CatalogProvider.GetCatalogItem(cart.CurrentItems[0].SKU, Country); if (null != item) { if (!HLConfigManager.Configurations.APFConfiguration.AllowNonProductItemsWithStandaloneAPF) { if (item.ProductType != ProductType.Product) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "NoNonProductToStandaloneAPF") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.AllowNonProductItemsWithStandaloneAPF, "NoNonProductToStandaloneAPF"); cart.RuleResults.Add(result); return(result); } } if (item.SKU == HLConfigManager.Configurations.DOConfiguration.TodayMagazineSku || item.SKU == HLConfigManager.Configurations.DOConfiguration.TodayMagazineSecondarySku) { result.Result = RulesResult.Failure; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "NoTodayMagazineWithStandalonAPF") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "NoTodayMagazineWithStandalonAPF"); cart.RuleResults.Add(result); return(result); } //To the standalone APF, DS trying to add product then change the Freight code & warehouse code. else if (item.ProductType == ProductType.Product || item.ProductType == ProductType.Literature || item.ProductType == ProductType.PromoAccessory) { SetNonStandAloneAPFDeliveryOption(cart as MyHLShoppingCart); } } } } } //Can add if (APFDueProvider.IsAPFSku(cart.CurrentItems[0].SKU)) { if (cart.CurrentItems[0].Quantity < 0) { var originaItem = (from c in cart.CartItems where c.SKU == cart.CurrentItems[0].SKU select c).ToList(); int previousQuantity = originaItem[0].Quantity; if (APFDueProvider.IsAPFDueAndNotPaid(distributorId, Locale)) { int requiredQuantity = APFDueProvider.APFQuantityDue(distributorId, Locale); if (level == "SP" || !HLConfigManager.Configurations.APFConfiguration.AllowDSRemoveAPFWhenDue) { if (cart.CurrentItems[0].Quantity + previousQuantity < requiredQuantity) { cart.CurrentItems[0].Quantity = (previousQuantity - requiredQuantity) * -1; result.Result = RulesResult.Recalc; result.AddMessage( HttpContext.GetGlobalResourceObject( string.Format("{0}_ErrorMessage", HLConfigManager.Platform), "RequiredAPFLeftInCart") as string); var sku = APFDueProvider.GetAPFSku(); SetApfRuleResponse(result, ApfAction.None, sku, "ApfRule", TypeOfApf.StandaloneAPFOnlyAllowed, "RequiredAPFLeftInCart"); cart.RuleResults.Add(result); cart.APFEdited = false; return(result); } } } } } return(result); }
protected void btnAddToCart_Click(object sender, EventArgs e) { if (_apfDueWithinOneYear) { if (_quantityToAdd != 1) { DisplayData(); return; } } else { if (_quantityToAdd == 0 || _quantityToAdd > (_apfsDue - _apfsInCart)) { if (_apfsDue - _apfsInCart == 1) { lblError.Text = GetLocalResourceObject("QuantityMustBeOne") as string; } else { lblError.Text = string.Format((GetLocalResourceObject("InvalidQuantity") as string), 1, (_apfsDue - _apfsInCart)); } lblError.Visible = true; return; } } MyHLShoppingCart cart = (Page as ProductsBase).ShoppingCart; //Add the APF amount to cart if (HLConfigManager.Configurations.APFConfiguration.DistributorSku != null) { try { if (_quantityToAdd > 0) { var apfSku = new List <ShoppingCartItem_V01>(); apfSku.Add(new ShoppingCartItem_V01(0, APFDueProvider.GetAPFSku(), _quantityToAdd, DateTime.Now)); if (Locale == "en-IN" && cart.CartItems.Count > 0) { lblError.Text = GetLocalResourceObject("AAFWithOtherProducts") as string; lblError.Visible = true; return; } else { ProductsBase.AddItemsToCart(apfSku); } // Verify if any validation rule fails to show the error in the APF module IEnumerable <string> ruleResultMessages = from r in ShoppingCart.RuleResults where r.Result == RulesResult.Failure select r.Messages[0]; if (null != ruleResultMessages && ruleResultMessages.Count() > 0) { lblError.Text = ruleResultMessages.FirstOrDefault(); lblError.Visible = true; return; } } } catch (Exception ex) { LoggerHelper.Error("APF Could not be added to cart!\n" + ex); } DisplayData(); } }