From a9e5dc2bf33e492258a9ce7e642c82a969f23fd2 Mon Sep 17 00:00:00 2001 From: tkostuch Date: Fri, 7 Feb 2020 15:16:27 +0100 Subject: [PATCH 1/4] 4053 change action order for configure products list --- config/default.json | 7 ++++--- core/modules/catalog-next/store/category/actions.ts | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/config/default.json b/config/default.json index b266cbefb5..f39dd992d8 100644 --- a/config/default.json +++ b/config/default.json @@ -290,6 +290,7 @@ "sort": "updated_at:desc", "includeFields": [ "activity", + "configurable_children.id", "configurable_children.final_price", "configurable_children.color", "configurable_children.original_price", @@ -527,9 +528,9 @@ "filterUnavailableVariants": false, "listOutOfStockProducts": true, "preventConfigurableChildrenDirectAccess": true, - "alwaysSyncPlatformPricesOver": false, - "clearPricesBeforePlatformSync": false, - "waitForPlatformSync": false, + "alwaysSyncPlatformPricesOver": true, + "clearPricesBeforePlatformSync": true, + "waitForPlatformSync": true, "setupVariantByAttributeCode": true, "endpoint": "/api/product", "defaultFilters": [ diff --git a/core/modules/catalog-next/store/category/actions.ts b/core/modules/catalog-next/store/category/actions.ts index e081c43eba..484550f479 100644 --- a/core/modules/catalog-next/store/category/actions.ts +++ b/core/modules/catalog-next/store/category/actions.ts @@ -97,9 +97,9 @@ const actions: ActionTree = { * Configures products */ async processCategoryProducts ({ dispatch, rootState }, { products = [], filters = {} } = {}) { - await dispatch('tax/calculateTaxes', { products: products }, { root: true }) + const consfiguredProducts = await dispatch('configureProducts', { products, filters }) dispatch('registerCategoryProductsMapping', products) // we don't need to wait for this - return dispatch('configureProducts', { products, filters }) + return dispatch('tax/calculateTaxes', { products: consfiguredProducts }, { root: true }) }, /** * Configure configurable products to have first available options selected From 6d735e35a7dfabc81967813166b3d83907bdb408 Mon Sep 17 00:00:00 2001 From: tkostuch Date: Tue, 7 Apr 2020 13:42:51 +0200 Subject: [PATCH 2/4] add same configuration for product/list like is in category products --- config/default.json | 6 ++--- .../catalog-next/store/category/actions.ts | 8 +++---- core/modules/catalog/store/product/actions.ts | 22 ++++++++++--------- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/config/default.json b/config/default.json index f39dd992d8..9d8a568d5f 100644 --- a/config/default.json +++ b/config/default.json @@ -528,9 +528,9 @@ "filterUnavailableVariants": false, "listOutOfStockProducts": true, "preventConfigurableChildrenDirectAccess": true, - "alwaysSyncPlatformPricesOver": true, - "clearPricesBeforePlatformSync": true, - "waitForPlatformSync": true, + "alwaysSyncPlatformPricesOver": false, + "clearPricesBeforePlatformSync": false, + "waitForPlatformSync": false, "setupVariantByAttributeCode": true, "endpoint": "/api/product", "defaultFilters": [ diff --git a/core/modules/catalog-next/store/category/actions.ts b/core/modules/catalog-next/store/category/actions.ts index 484550f479..01dbfea9d7 100644 --- a/core/modules/catalog-next/store/category/actions.ts +++ b/core/modules/catalog-next/store/category/actions.ts @@ -97,17 +97,17 @@ const actions: ActionTree = { * Configures products */ async processCategoryProducts ({ dispatch, rootState }, { products = [], filters = {} } = {}) { - const consfiguredProducts = await dispatch('configureProducts', { products, filters }) + const configuredProducts = await dispatch('configureProducts', { products, filters }) dispatch('registerCategoryProductsMapping', products) // we don't need to wait for this - return dispatch('tax/calculateTaxes', { products: consfiguredProducts }, { root: true }) + return dispatch('tax/calculateTaxes', { products: configuredProducts }, { root: true }) }, /** * Configure configurable products to have first available options selected * so they can be added to cart/wishlist/compare without manual configuring */ - async configureProducts ({ rootState }, { products = [], filters = {} } = {}) { + async configureProducts ({ rootState }, { products = [], filters = {}, populateRequestCacheTags = config.server.useOutputCacheTagging } = {}) { return products.map(product => { - product = Object.assign({}, preConfigureProduct({ product, populateRequestCacheTags: config.server.useOutputCacheTagging })) + product = Object.assign({}, preConfigureProduct({ product, populateRequestCacheTags })) const configuredProductVariant = configureProductAsync({ rootState, state: { current_configuration: {} } }, { product, configuration: filters, selectDefaultVariant: false, fallbackToDefaultWhenNoAvailable: true, setProductErorrs: false }) return Object.assign(product, omit(configuredProductVariant, ['visibility'])) }) diff --git a/core/modules/catalog/store/product/actions.ts b/core/modules/catalog/store/product/actions.ts index 1638e07a65..aad6c1a88c 100644 --- a/core/modules/catalog/store/product/actions.ts +++ b/core/modules/catalog/store/product/actions.ts @@ -327,19 +327,21 @@ const actions: ActionTree = { return prod }, async configureLoadedProducts (context, { products, isCacheable, cacheByKey, populateRequestCacheTags, configuration }) { - if (products.items && products.items.length) { // preconfigure products; eg: after filters - for (let product of products.items) { - product = await context.dispatch('preConfigureProduct', { product, populateRequestCacheTags, configuration }) // preConfigure(product) - } - } - - await context.dispatch('tax/calculateTaxes', { products: products.items }, { root: true }) + const configuredProducts = await context.dispatch( + 'category-next/configureProducts', + { + products: products.items, + filters: configuration || {}, + populateRequestCacheTags + }, + { root: true } + ) - for (let prod of products.items) { // we store each product separately in cache to have offline access to products/single method - prod = configureChildren(prod) + await context.dispatch('tax/calculateTaxes', { products: configuredProducts }, { root: true }) + for (let product of configuredProducts) { // we store each product separately in cache to have offline access to products/single method if (isCacheable) { // store cache only for full loads - storeProductToCache(prod, cacheByKey) + storeProductToCache(product, cacheByKey) } } From 2717d74317b24e54ae6d34705d23daddf4840fd7 Mon Sep 17 00:00:00 2001 From: tkostuch Date: Tue, 7 Apr 2020 14:12:25 +0200 Subject: [PATCH 3/4] add deprecated --- core/modules/catalog/store/product/actions.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core/modules/catalog/store/product/actions.ts b/core/modules/catalog/store/product/actions.ts index aad6c1a88c..26a1363af7 100644 --- a/core/modules/catalog/store/product/actions.ts +++ b/core/modules/catalog/store/product/actions.ts @@ -47,6 +47,7 @@ const actions: ActionTree = { * Setup product breadcrumbs path */ async setupBreadcrumbs (context, { product }) { + console.warn('deprecated, will be removed in 1.13') let breadcrumbsName = null let setBreadcrumbRoutesFromPath = (path) => { if (path.findIndex(itm => { @@ -317,6 +318,7 @@ const actions: ActionTree = { } }, preConfigureProduct (context, { product, populateRequestCacheTags, configuration }) { + console.warn('deprecated, will be removed in 1.13') let prod = preConfigureProduct({ product, populateRequestCacheTags }) if (configuration) { From d3c947a4be0d11463b9fe404ad8fada265a3ec2f Mon Sep 17 00:00:00 2001 From: tkostuch Date: Tue, 7 Apr 2020 15:27:28 +0200 Subject: [PATCH 4/4] update changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ecd75b769..d740807b76 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - add missing cache tags for category and product - @gibkigonzo (#4173) - add ssrAppId to avoid second meta render on csr - @gibkigonzo (#4203) - take control over default broswer behavior and use saved category page size to load prev products - @gibkigonzo (#4201) +- configure products before price update - this is needed to have variant sku as product sku - @gibkigonzo (#4053) ## [1.11.2] - 2020.03.10