March 16, 2019
Enhancements
Performance: Get Cart
Shopper Experience
The number of entity calls initiated and the number of calculations performed on the Cart page is reduced by enhancing ShoppingCartService and PublishProductHelper classes. Also, a new API GetCartCount is introduced which has significantly increased the performance and reduced the loading time of the Cart page.
Important:-
Team members (developers) of different projects should be educated regarding the newly introduced code before they upgrade their projects to this Znode version so that they can take the changes based on the customizations (if any) they have done in GetShoppingCart method.
Major impacted areas- All the workflows related to shopping cart like tax, promotions, GetCart, PublishProductHelper, Promotion Manager.
Performance: Loading Time Of Shipping Methods On Checkout Page
Shopper Experience
The following line of code in GetShippingEstimates method in ShoppingCartService class used to take a long time to display Shipping Methods on the Checkout page of the web store -
ZnodeShoppingCart znodeShoppingCart = _shoppingCartMap.ToZnodeShoppingCart(model);
The code from ToZnodeShoppingCart method has been modified, and following new methods are introduced to optimize the performance and to reduce the loading time of the Shipping Methods on the Checkout page:-
AddtoShoppingBagV2
BindShoppingCartDataV2
BindProductDetailsV2
in ZnodeShoppingCart.cs file
Performance: Calculation Speed Of Shipping Price On Checkout Page
Shopper Experience
The CalculateShipping method from CartAgent class used to take a long time to calculate the shipping prices on the Checkout page.
The code from ToZnodeShoppingCart method has been modified, and following new methods are introduced to increase the performance and to reduce the calculation time of the Shipping Price on the Checkout page:-
AddtoShoppingBagV2
BindShoppingCartDataV2
BindProductDetailsV2
in ZnodeShoppingCart.cs file
Performance: Loading Time Of Category Page
Shopper Experience
The GetCategorySeoDetails method used to take a long time to load the Category page on the web store.
The code from GetCategorySeoDetails method is optimized and a new method GetBreadcrum is introduced to increase the performance and to reduce the loading time of the Category page.
Performance: Loading Time Of Product Details Page
Shopper Experience
In cases of large number of products, the loading time of product details page was very slow. This was due to many possible reasons and one of the major reason was that all the data related to products (like inventory, SEO, pricing, associated products, add-ons, associated category details, product reviews, promotions, etc) was initiated through a single service call. To optimize the loading time, the service call was broke down into multiple smaller parts so that each part could be executed in a parallel fashion. This has increased the performance and reduced the loading time of the product details page. Additional Technical details can be found here.
Issues Resolved
[ZPD-4691] - Promotions & Coupons - ‘All Stores’ checkbox field was not getting displayed on Add/Edit Promotions & Coupons page because the attribute was disabled. To resolve this issue, ‘All Stores’ has been enabled.
[ZPD-4776] - Admin- On Stores & Reps >> Stores >> Manage Store >> Additional Attributes page, a subsection label Authorization was incorrect and was therefore renamed to Web store Authentication.
[ZPD-4879] - Admin - On Admin >> Shipping page, the search field was not working. To resolve this issue, changes were made in Znode Shipping XML and Shipping ID, Shipping Type Name, Shipping Name, Description, and Destination Country Code columns were enabled.
[ZPD-5065] - On web store, products were not getting displayed based on the latest published version. This was because there was no Version ID filter passed to the GetConfigurableProductFilter method. A new Version ID filter has been added to this method to fix this issue.
[ZPD-5086] - On publishing category/categories from PIM >> Categories, SEO details were not getting published because previously, deletion and insertion of SEO details was dependent on SEO ID. Since SEO ID’s are null in case of categories, therefore, SEO code is now been used to solve this issue.
[ZPD-5142] - Web store - Promotion type 'Percent Off Product' was not working correctly with configurable products and for products with tier pricing because ZnodeProductBaseEntity.cs=>SelectedQuantity property was not mapped, and quantity was not getting passed in case of configurable products from ZNodeShoppingCart.cs=>BindProductDetails to
ZNodeShoppingCart.cs=>GetZnodeProductConfigurables. To resolve this issue ZnodeProductBaseEntity.cs=>SelectedQuantity property wasmapped, and quantity was allowed to pass in case of configurable products from ZNodeShoppingCart.cs=>BindProductDetails to
ZNodeShoppingCart.cs=>GetZnodeProductConfigurables
[ZPD-5144] - ParentProductSKU property used to break the pricing for line items with add-ons during the checkout because ParentProductSKU was not mapped in the order collection model in
ZnodeCheckout.cs=>AddLineItemsInOrderLineItem. To resolve this issue, ParentProductSKU was mapped in the order collection model in
ZnodeCheckout.cs=>AddLineItemsInOrderLineItem
[ZPD-5207] - Web store - A loader was not getting displayed on the category page when sub-category/sub-categories loading was in progress. To resolve this issue, a loader was added in the HTML view _WidgetCategoryGrid