protected void InventoryAlertUpdate() { if (_Product != null) { // WE HAVE A VALID PRODUCT, ARE ANY AVAILABLE OPTIONS SELECTED? bool allProductOptionsSelected = (_SelectedOptions.Count == _Product.ProductOptions.Count); if (allProductOptionsSelected) { // OPTIONS ARE GOOD, VERIFY ANY REQUIRED KIT OPTIONS ARE SELECTED GetSelectedKitOptions(_Product); bool requiredKitOptionsSelected = AbleCommerce.Code.ProductHelper.RequiredKitOptionsSelected(_Product, _SelectedKitProducts); if (requiredKitOptionsSelected) { // KIT OPTIONS ARE ALSO VALID, DETERMINE APPROPRIATE WARNINGS Store store = AbleContext.Current.Store; List <string> warningMessages = new List <string>(); string optionList = string.Empty; if (_Product.ProductOptions.Count > 0) { // OPTIONS ARE PRESENT, CHECK AVAILABLILITY optionList = ProductVariantDataSource.GetOptionList(_ProductId, _SelectedOptions, true); ProductVariant variant = ProductVariantDataSource.LoadForOptionList(_Product.Id, optionList); if (!variant.Available) { warningMessages.Add("The selected variant is marked as unavailable."); } // WE ALSO NEED TO ALERT INVENTORY IF ENABLED AT VARIANT LEVEL AND THIS IS NOT A KIT if (store.Settings.EnableInventory && _Product.KitStatus != KitStatus.Master && _Product.InventoryMode == InventoryMode.Variant) { warningMessages.Add("The selected variant has a current stock level of " + variant.InStock + "."); } } // CHECK STOCK QUANTITY FOR PRODUCT, IF STORE INVENTORY IS ENABLED // AND THE STOCK IS MANAGED AT THE PRODUCT LEVEL OR THIS IS A KIT if (store.Settings.EnableInventory && (_Product.InventoryMode == InventoryMode.Product || _Product.KitStatus == KitStatus.Master)) { IInventoryManager inventoryManager = AbleContext.Resolve <IInventoryManager>(); InventoryManagerData inv = inventoryManager.CheckStock(_ProductId, optionList, _SelectedKitProducts); if (!inv.AllowBackorder) { if (_Product.KitStatus == KitStatus.Master) { // INVENTORY MESSAGE FOR KIT PRODUCTS warningMessages.Add("The selected configuration has a current stock level of " + inv.InStock + "."); } else { // NOT KIT OR VARIANT warningMessages.Add("This product has a current stock level of " + inv.InStock + "."); } } } // SHOW ANY WARNING MESSAGES if (warningMessages.Count > 0) { InventoryWarningMessage.Text = "Note: " + string.Join(" ", warningMessages.ToArray()); trInventoryWarning.Visible = true; } } } } }