BVC 2004 - Hotfix A,B and C Changes ================================== Summary ---------------------------------- The primary purpose of this hotfix is to correct a memory issue that can occur on certain products when the number of customer choices creates a large number of variants for a single product. The memory issue was caused by the redim statement used when creating product variant objects. The .NET Framework allocates double the current array size of memory when an array is resized. This can cause an exponetial increase in memory use when many reallocations are done quickly as is the case when a single product has many variants. The solution to this issue was to completely remove the need to create and thus allocate memory for product variants. This service pack affects the code of the product detail page and product edit pages heavily. Inventory keys are now created only when a merchant explicitly sets a non zero inventory qty for a given variant. The product page now adds items by inventory key instead of by variant index when adding from grid mode. Summary B --------------------------------- Hot Fix B includes all changes to Hot Fix A and additional resolves an inventory bug introduced in Hot Fix A. It also solves an issue where "Charge at Checkout" orders were not marked as completed immediately. It also removes a referring URL check in checkout_receipt.aspx.vb that had the potential to cause problems with Norton Personal Firewall. Summary C --------------------------------- Hot Fix C includes all changes to Hot Fixes A and B and only corrects an order status bug in the receive order pipeline code. Changes --------------------------------- + Corrects memory issue on items with large numbers of choices + Adds inventory checks on product page when in “individual field mode” + Corrects bug where only minimum qty was checked for inventory when in grid mode. Now each selection is checked against it’s true available qty o Change: Text and HTML fields now display above the choice grid when in Single and Multi grid mode. Reduces screen realestate and viewstate o Change: Viewstate reduction on the product detail page + Adds: “Disable product caching” checkbox in admin + Adds: “Disable inventory” checkbox in admin Cart.aspx.vb --------------------------------- + Added "if" statement to skip inventory checks when disabled in admin WebCatalogServices.asmx.vb --------------------------------- o Changed ProductChoices_GetVariantListForChoices to return nothing as it is now depricated WebAppSettings.vb --------------------------------- + Added DisableInventory + Added DisableProductCaching CatalogServices.vb --------------------------------- + Added cache skip to GetProduct() method + Added inventory skip to EvaluateInventoryStatus() method o Changed AddProductChoiceByID() method to clear inventory keys on major choice changes - RebuildInventoryKeysForProduct() marked Obsolete - GetVariantListForChoices() marked Obsolete - GetVariantArrayList() marked Obsolete - GenerateInventoryKeysForVariants() marked Obsolete + New Method: GenerateInventoryKeyForItemIds() Configuration_Display_Options.aspx & .vb -------------------------------------- + Added Disable Product Caching Checkbox Configuration_Inventory.aspx & .vb -------------------------------------- + Added Disable Inventory Checkbox products_products_edit.aspx.vb ------------------------------ - Removed call to obsolete RebuildInventoryKeys() method products_products_edit_inventory.aspx.vb ---------------------------------------- + Major rewrite of almost all code on the page Global.asax.vb ------------------------------ + Added event log entries to track clean up script runs productinfo.aspx.vb ------------------- + Rewrote LoadProductChoices() Method + New Method: LoadProductChoices_IndividualFields() + New Method: LoadProductChoices_Grid() + New Method: LoadProductChoices_NonGridChoices() + New Method: LoadProductChoices_AddGridHeader() + New Method: AddVariants() + New Method: ProcessChoices() + New Method: AddRowToTable() + New Method: IsInventoryKeyInStock() + Rewrote: AddToCart_MultipleGrid() + Rewrote: AddToCart_SingelGrid() - Removed: AddToCart_ByVariantIndex() + New Method : AddToCart_InventoryKey() o Changed: AddToCart_IndividualFields() with inventory checks