From f8f22fb619077475225c3b6c3edbe066a210505a Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Tue, 10 Oct 2023 10:24:28 -0400 Subject: [PATCH 1/7] CSR-1384: reformat updates --- src/fmg-components/cart/cart.vue | 5 ++++- src/layouts/schedule/schedule.spec.js1 | 0 2 files changed, 4 insertions(+), 1 deletion(-) delete mode 100644 src/layouts/schedule/schedule.spec.js1 diff --git a/src/fmg-components/cart/cart.vue b/src/fmg-components/cart/cart.vue index 6225010e4..a8a3c3d5a 100644 --- a/src/fmg-components/cart/cart.vue +++ b/src/fmg-components/cart/cart.vue @@ -196,7 +196,10 @@ export default { }, displayedNonPackageLineItems() { const displayedNonPackageLineItems = []; - const possibleLineItems = [...this.vaps, ...this.supportingItems]; + const possibleLineItems = [ + ...this.vaps, + ...this.supportingItems, + ]; possibleLineItems?.forEach((item) => { let price = item.sellingPrice + item.kitPrice + item.laborAmount; const isAllowed = this.allowableLineItems?.findIndex((lineItem) => { diff --git a/src/layouts/schedule/schedule.spec.js1 b/src/layouts/schedule/schedule.spec.js1 deleted file mode 100644 index e69de29bb..000000000 From 348dba428a73c4eac610e3799e20280b034ebb6e Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Tue, 10 Oct 2023 14:30:43 -0400 Subject: [PATCH 2/7] CSR-1384: updates for cart work, using lineItems instead of cartItems --- src/fmg-components/cart/cart.vue | 34 ++++--------- src/layouts/payment-method/payment-method.vue | 48 ++++++++++++------- 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/src/fmg-components/cart/cart.vue b/src/fmg-components/cart/cart.vue index a8a3c3d5a..bba4527ae 100644 --- a/src/fmg-components/cart/cart.vue +++ b/src/fmg-components/cart/cart.vue @@ -54,47 +54,34 @@ From 5a3d9c3b80021b57d3d1347311628a8fbdbe4d0b Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Tue, 10 Oct 2023 14:32:29 -0400 Subject: [PATCH 3/7] CSR-1384: formatting --- src/fmg-components/cart/cart.vue | 5 +---- src/layouts/payment-method/payment-method.vue | 6 +----- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/fmg-components/cart/cart.vue b/src/fmg-components/cart/cart.vue index bba4527ae..d798c3c38 100644 --- a/src/fmg-components/cart/cart.vue +++ b/src/fmg-components/cart/cart.vue @@ -181,10 +181,7 @@ export default { }, displayedNonPackageLineItems() { const displayedNonPackageLineItems = []; - const possibleLineItems = [ - ...this.vaps, - ...this.supportingItems, - ]; + const possibleLineItems = [...this.vaps, ...this.supportingItems]; possibleLineItems?.forEach((item) => { let price = item.sellingPrice + item.kitPrice + item.laborAmount; const isAllowed = this.allowableLineItems?.findIndex((lineItem) => { diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index afe6a5e5c..8e6aa881a 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -172,11 +172,7 @@ export default { ); const lineItems = store.getters.lineItems; - const cartItems = [ - ...clonedGlassParts, - ...lineItems.supportingItems, - ...lineItems.vaps, - ]; + const cartItems = [...clonedGlassParts, ...lineItems.supportingItems, ...lineItems.vaps]; // Call the "next" function to complete the transition to this page. next((vm) => { From ab1f47d03870d38fbc55fcbe7384e7ddcb1f6567 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Tue, 10 Oct 2023 15:37:21 -0400 Subject: [PATCH 4/7] CSR-1384: use deepClone on resultMap and glassParts --- src/layouts/payment-method/payment-method.vue | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 8e6aa881a..1827c91bb 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -105,6 +105,7 @@ import alert from "@/ux-components/alert/alert"; import baseMixin from "@/mixins/base-mixin.js"; import { settleAllPromises } from "@/helpers/layout-helper"; +import { deepClone } from "@/helpers/object-helper"; import { storeActions } from "@/constants/store-actions"; import store from "@/store"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; @@ -120,6 +121,7 @@ export default { null, "payment-method" ); + const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_RAIN_DEFENSE, null, @@ -151,28 +153,30 @@ export default { ]; const resultMap = await settleAllPromises(promiseResultMap); - const clonedGlassParts = store.getters.order.lineItems.glassParts - ? JSON.parse(JSON.stringify(store.getters.order.lineItems.glassParts)) - : []; + + const resultMapCopy = deepClone(resultMap) ?? []; + + const glassPartsCopy = deepClone(store.getters.order.lineItems.glassParts) ?? []; + const availableLineItems = [ - resultMap.rainDefense, - ...resultMap.supportingItems, - ...resultMap.wipers, - ...clonedGlassParts, + resultMapCopy.rainDefense, + ...resultMapCopy.supportingItems, + ...resultMapCopy.wipers, + ...glassPartsCopy, ]; // TODO - DO WE NEED TO GET PRICINGRESULTS HERE? SEEMS TO BE THE SAME AS availableLineItems - const pricingResults = await baseMixin.methods.dispatchStoreActionWithLogging( - storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA, - { - availableLineItems: availableLineItems, - }, - "payment-method", - false - ); + // const pricingResults = await baseMixin.methods.dispatchStoreActionWithLogging( + // storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA, + // { + // availableLineItems: availableLineItems, + // }, + // "payment-method", + // false + // ); const lineItems = store.getters.lineItems; - const cartItems = [...clonedGlassParts, ...lineItems.supportingItems, ...lineItems.vaps]; + const cartItems = [...glassPartsCopy, ...lineItems.supportingItems, ...lineItems.vaps]; // Call the "next" function to complete the transition to this page. next((vm) => { @@ -181,7 +185,7 @@ export default { vm.cartItems = cartItems; // TOBEREMOVED BY AJC IN CSR-1384 vm.setCmsContent(resultMap.cmsContent); - vm.availableLineItems = pricingResults; + vm.availableLineItems = availableLineItems; vm.lineItems = lineItems; }); }, From 575978ae6553759c64a4345dc19eb5fef3149fd4 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 11 Oct 2023 10:17:14 -0400 Subject: [PATCH 5/7] CSR-1384: refactoring re: deepClone, naming --- src/layouts/payment-method/payment-method.vue | 45 +++++++++---------- src/store/index.js | 4 +- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index bb42bf650..e451958e4 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -17,7 +17,7 @@ @@ -34,10 +34,10 @@ + v-on="{ 'buttonEvent.openModal': openModal }" />
- + Date: Wed, 11 Oct 2023 13:59:13 -0400 Subject: [PATCH 6/7] CSR-1384: update store method to avoid mutating original lineItems array --- src/store/index.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 6ca7221ac..32f004950 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -14,6 +14,7 @@ import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper import { deepEqual } from "@/helpers/object-helper"; import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants"; import { getQuerystringParameter } from "@/helpers/querystring-helper"; +import { deepClone } from "@/helpers/object-helper"; import { queryStrings } from "@/constants/query-strings"; import { partTypeStrings } from "@/constants/part-type-strings"; import { @@ -2274,7 +2275,8 @@ function convertGlassPieceNamingFromApi(glassArray) { } function addPricesToLineItems(lineItems, pricingLineItems) { - lineItems.forEach((lineItem) => { + const pricedLineItems = deepClone(lineItems); + pricedLineItems.forEach((lineItem) => { let lineItemIndex = pricingLineItems.findIndex( (pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber ); @@ -2286,7 +2288,7 @@ function addPricesToLineItems(lineItems, pricingLineItems) { lineItem.sellingPrice = pricedLineItem.sellingPrice; lineItem.kitPrice = pricedLineItem.kitPrice; }); - return lineItems; + return pricedLineItems; } function getFlattenedArrayOfLineItemsWithChildParts(lineItems) { From a47dfbc27e15ad3746d0716dc6550f722b389892 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 11 Oct 2023 14:01:50 -0400 Subject: [PATCH 7/7] CSR-1384: more cleanup, remove deep cloning --- .../add-vaps-modal-buttons.vue | 13 +++++++---- src/layouts/payment-method/payment-method.vue | 22 +++++-------------- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue b/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue index 0a6faa72f..d894f2ee8 100644 --- a/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue +++ b/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue @@ -21,9 +21,8 @@ export default { name: "add-vaps-modal-buttons", props: { cartItems: Object, - rainDefenseItem: Object, - wiperItems: Object, vapsTilesCmsName: String, + availableLineItems: Object, }, data() { return { @@ -55,13 +54,19 @@ export default { }); }, rainDefensePrice() { - const lineItem = this.rainDefenseItem; + // const lineItem = this.rainDefenseItem; + const lineItem = this.availableLineItems.find((item) => { + return item.partType === "RAIN DEFENSE"; + }); + const price = lineItem.laborAmount + lineItem.sellingPrice + lineItem.kitPrice; return parseFloat(price).toFixed(2); }, wipersPrice() { let price = 0; - const lineItems = this.wiperItems; + const lineItems = this.availableLineItems.filter((item) => { + return item.partType.includes(" WIPER"); + }); lineItems?.forEach((item) => { price += item.laborAmount + item.sellingPrice + item.kitPrice; }); diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index e451958e4..eddaa6a20 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -34,8 +34,7 @@ @@ -105,7 +104,6 @@ import alert from "@/ux-components/alert/alert"; import baseMixin from "@/mixins/base-mixin.js"; import { settleAllPromises } from "@/helpers/layout-helper"; -import { deepClone } from "@/helpers/object-helper"; import { storeActions } from "@/constants/store-actions"; import store from "@/store"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; @@ -128,6 +126,8 @@ export default { null, "payment-method" ); + console.log("rainDefensePromise: ", rainDefensePromise); + const supportingItemsPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_SUPPORTING_ITEMS, null, @@ -155,15 +155,13 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); - const resultMapCopy = deepClone(resultMap) ?? []; - - const glassPartsCopy = deepClone(store.getters.order.lineItems.glassParts) ?? []; + const glassParts = (await store.getters.order.lineItems.glassParts) ?? []; const availableLineItems = [ resultMap.rainDefense, ...resultMap.supportingItems, ...resultMap.wipers, - ...glassPartsCopy, + ...glassParts, ]; const pricedAvailableLineItems = await baseMixin.methods.dispatchStoreActionWithLogging( @@ -176,12 +174,10 @@ export default { ); const lineItems = store.getters.lineItems; - const cartItems = [...glassPartsCopy, ...lineItems.supportingItems, ...lineItems.vaps]; + const cartItems = [...glassParts, ...lineItems.supportingItems, ...lineItems.vaps]; // TOBEREMOVED BY AJC IN CSR-1384 // Call the "next" function to complete the transition to this page. next((vm) => { - vm.availableWipers = resultMap.wipers; // TOBEREMOVED BY AJC IN CSR-1384 - vm.availableRainDefense = resultMap.rainDefense; // TOBEREMOVED BY AJC IN CSR-1384 vm.cartItems = cartItems; // TOBEREMOVED BY AJC IN CSR-1384 vm.setCmsContent(resultMap.cmsContent); @@ -192,8 +188,6 @@ export default { data() { return { cartItems: [], // TOBEREMOVED BY AJC IN CSR-1384 - availableWipers: [], // TOBEREMOVED BY AJC IN CSR-1384 - availableRainDefense: {}, // TOBEREMOVED BY AJC IN CSR-1384 lineItems: [], availableLineItems: [], @@ -326,10 +320,6 @@ export default { // console.log("this.$store.getters.damage ", this.$store.getters.damage) return this.$store.getters.damage; }, - storeLineItems() { - // console.log("storeLineItems, aka lineItems from store: ", this.$store.getters.lineItems) - return this.$store.getters.lineItems; - }, }, components: { funnelHeader,