From 9cdf1022d0a04318852e1eeff22d45d09bac8428 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Wed, 2 Oct 2024 12:22:37 -0400 Subject: [PATCH 1/9] CSR-2242 CSR-2242 allow drop off to trigger ga event for shops displayed --- src/layouts/service-location/shop-question/shop-question.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/layouts/service-location/shop-question/shop-question.vue b/src/layouts/service-location/shop-question/shop-question.vue index d77a7eb04..08509eb40 100644 --- a/src/layouts/service-location/shop-question/shop-question.vue +++ b/src/layouts/service-location/shop-question/shop-question.vue @@ -167,7 +167,10 @@ export default { if (logFirstShopsDisplayed) { gaAction = this.GaActions.SHOPS_FIRST_DISPLAYED; } - if (this.selectedAppointmentType === AppointmentTypeStrings.IN_SHOP) { + if ( + this.selectedAppointmentType === AppointmentTypeStrings.IN_SHOP || + this.selectedAppointmentType === AppointmentTypeStrings.DROP_OFF + ) { var shops = mappedData.map((shop) => { if (shop.value.length > 5 && shop.value.startsWith("00")) { return shop.value.substring(1); From f13b2436692815c75f2c9e3c685d66e777757aa0 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 2 Oct 2024 15:27:50 -0400 Subject: [PATCH 2/9] CSR-2234: fix to enable BaseMixin ResetExternalParamsAndHideModal to work --- src/store/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/store/index.js b/src/store/index.js index 2b07d1dc1..670274c1a 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -919,6 +919,7 @@ export const getters = { externalParameterServiceZip: (state) => externalParameterState?.serviceZip, externalParameterEstimate: (state) => externalParameterState?.estimate, externalParameterSource: (state) => externalParameterState?.source, + isExternalParameter: (state) => externalParameterState?.isExternalParameter, }; function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) { From 09f53773aef9bfa106f9f92076d96974fcb3c6b1 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 2 Oct 2024 15:28:59 -0400 Subject: [PATCH 3/9] CSR-2234: remove isExternalParameter from initialization setup --- src/store/index.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index 670274c1a..135f17541 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3433,7 +3433,6 @@ async function resetScheduleIfUnavailable(context, order, pageNameToLog) { function createExternalParameterDefaultState() { // create default externalParameter state const externalParameterDefaultState = { - isExternalParameter: null, vehicle: { year: null, make: null, From 06d54dcb99f18065efae3cfac4baa45ee060d540 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 2 Oct 2024 15:30:09 -0400 Subject: [PATCH 4/9] CSR-2234: remove external param source bc it is no longer needed --- src/store/index.js | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 135f17541..a35b339b3 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -476,10 +476,6 @@ export const mutations = { externalParameterState.quote.servicePackage = servicePackage; saveExternalParameterState(externalParameterState); }, - updateExternalParameterSource(state, source) { - externalParameterState.source = source; - saveExternalParameterState(externalParameterState); - }, //RESET ExternalParameter MUTATIONS resetExternalParameterVehicleState(state) { externalParameterState.vehicle.year = null; @@ -510,10 +506,6 @@ export const mutations = { externalParameterState.quote.servicePackage = null; saveExternalParameterState(externalParameterState); }, - resetExternalParameterSourceState(state) { - externalParameterState.source = null; - saveExternalParameterState(externalParameterState); - }, resetIsExternalParameter(state) { externalParameterState.isExternalParameter = null; saveExternalParameterState(externalParameterState); @@ -918,7 +910,6 @@ export const getters = { externalParameterQuote: (state) => externalParameterState?.quote, externalParameterServiceZip: (state) => externalParameterState?.serviceZip, externalParameterEstimate: (state) => externalParameterState?.estimate, - externalParameterSource: (state) => externalParameterState?.source, isExternalParameter: (state) => externalParameterState?.isExternalParameter, }; @@ -2912,7 +2903,6 @@ export const actions = { context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_ESTIMATE_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_SERVICEZIP_STATE); context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_QUOTE_STATE); - context.commit(storeMutations.RESET_EXTERNAL_PARAMETER_SOURCE_STATE); context.commit(storeMutations.RESET_IS_EXTERNAL_PARAMETER); } }, @@ -3455,7 +3445,6 @@ function createExternalParameterDefaultState() { isInsurance: null, servicePackage: null, }, - source: null, }; // set to session storage saveExternalParameterState(externalParameterDefaultState); From 7b73a164ad20cbb9d1f194017592c6b61c0a99c5 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Wed, 2 Oct 2024 15:32:33 -0400 Subject: [PATCH 5/9] CSR-2234: refine quote page external param logic --- src/layouts/quote/quote.vue | 39 +++++++++++++++---------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index b778116e9..9bc8bace4 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -337,17 +337,10 @@ export default { experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL ); - if (!store.getters.externalParameterState?.isExternalParameter) { - // there are no external parameters + const isExternalParameter = store.getters.externalParameterState?.isExternalParameter; - if (internalThreshold) thresholdToUse = internalThreshold; - vm.isInsuranceSelected = getIsInsuranceSelectedValue( - vm.availableLineItems, - thresholdToUse - ); - baseMixin.methods.ResetExternalParamsAndHideModal(); - } else { - // there ARE external parameters + if (isExternalParameter !== undefined) { + // user is from an external source (either has value or is null) if (store.getters.externalParameterQuote.isInsurance == true) { // did user intentionally select insurance? @@ -361,26 +354,26 @@ export default { baseMixin.methods.ResetExternalParamsAndHideModal(); } } else { - // did user come from external source (LeadGen)? - let externalSource = store.getters.externalParameterSource - ? store.getters.externalParameterSource - : null; + const externalThreshold = experimentMixin.methods.getSettingValue( + experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL + ); + thresholdToUse = externalThreshold; - // Business logic to determine what "external" source is - if (externalSource?.includes("LeadGen")) { - const externalThreshold = experimentMixin.methods.getSettingValue( - experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL - ); - if (externalThreshold) thresholdToUse = externalThreshold; - } else { - if (internalThreshold) thresholdToUse = internalThreshold; - } vm.isInsuranceSelected = getIsInsuranceSelectedValue( vm.availableLineItems, thresholdToUse ); baseMixin.methods.ResetExternalParamsAndHideModal(); } + } else { + // there are no external parameters; use internal threshold + if (internalThreshold) thresholdToUse = internalThreshold; + + vm.isInsuranceSelected = getIsInsuranceSelectedValue( + vm.availableLineItems, + thresholdToUse + ); + baseMixin.methods.ResetExternalParamsAndHideModal(); } }); }, From 74749f4172df9d7646be2eb0b5569cd96654dd83 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Fri, 4 Oct 2024 05:17:05 -0400 Subject: [PATCH 6/9] CSR-1928 CSR-1928 use comma separator instead of slash --- src/layouts/service-location/shop-question/shop-question.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/service-location/shop-question/shop-question.vue b/src/layouts/service-location/shop-question/shop-question.vue index 08509eb40..a15d8bb0b 100644 --- a/src/layouts/service-location/shop-question/shop-question.vue +++ b/src/layouts/service-location/shop-question/shop-question.vue @@ -182,7 +182,7 @@ export default { this.pushEventToGA( this.GaCategories.SERVICE_LOCATION, gaAction, - shops.join("/"), + shops.join(","), true ); } From 13598aea946a36e76d8a3ead80aaea73b7bbc1df Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Fri, 4 Oct 2024 09:07:08 -0400 Subject: [PATCH 7/9] CSR-2150 | Make recal promos work --- src/store/index.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 29289db6e..be4a8784e 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -2950,7 +2950,9 @@ export const actions = { async getRecalPartsAndSaveToLineItems(context, { pageNameToLog }) { // identify each part that needs recal - const glassParts = context.state.order?.lineItems?.glassParts ?? []; + const glassParts = context.state.order?.lineItems?.glassParts + ? deepClone(context.state.order.lineItems.glassParts) + : []; for (let i = 0; i < glassParts.length; i++) { // does this part need recal? @@ -2983,6 +2985,7 @@ export const actions = { } glassParts[i].childParts.push(...recalPartResponse.data.recalibrationParts); + context.dispatch(storeActions.SAVE_GLASS_PARTS, glassParts); } } } @@ -3181,7 +3184,10 @@ export function getArrayOfAllLineItems(lineItems) { let consolidatedLineItemsArray = []; if (lineItems.glassParts != null) - consolidatedLineItemsArray = [...consolidatedLineItemsArray, ...lineItems.glassParts]; + consolidatedLineItemsArray = [ + ...consolidatedLineItemsArray, + ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.glassParts), + ]; if (lineItems.supportingItems != null) consolidatedLineItemsArray = [...consolidatedLineItemsArray, ...lineItems.supportingItems]; @@ -3269,6 +3275,9 @@ function addGuidToLineItemsIfNotAlreadyThere(lineItems) { if (!lineItem.id) { lineItem.id = crypto.randomUUID(); } + if (lineItem.childParts) { + addGuidToLineItemsIfNotAlreadyThere(lineItem.childParts); + } }); } From 48c6a56e96de9ec9dc568897b85b4b943d17b5a2 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Fri, 4 Oct 2024 09:44:02 -0400 Subject: [PATCH 8/9] CSR-2150 | Future proofing --- .../afterpay-modal-banner.vue | 6 +++--- src/store/index.js | 21 +++++++++++++------ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue index 512d0f577..bf9433301 100644 --- a/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue +++ b/src/layouts/quote/afterpay-modal-banner/afterpay-modal-banner.vue @@ -30,7 +30,7 @@ import { splitCopyOnCMSPlaceHolder } from "@/helpers/cms-content-helper"; import baseMixin from "@/mixins/base-mixin.js"; import { getPromosThatMatchLineItemsOnOrder } from "@/helpers/promotions-helper"; -import { getArrayOfAllLineItems } from "@/store"; +import { getArrayOfAllLineItemsAndChildParts } from "@/store"; const INLINE_IMAGE_TOKEN = "custom:inlineImage"; const AFTERPAY_PRICE_TOKEN = "custom:afterpayPrice"; @@ -76,7 +76,7 @@ export default { return this.getCmsContent(this.cmsWidgetName, "SubheaderText"); }, afterpayPrice() { - let allLineItems = getArrayOfAllLineItems(this.lineItems); + let allLineItems = getArrayOfAllLineItemsAndChildParts(this.lineItems); if (this.lineItems.promos) { allLineItems = allLineItems?.filter((item) => item.partType !== "PROMO_DISCOUNT"); } @@ -91,7 +91,7 @@ export default { }); if (this.lineItems.promos) { - let allLineItems = getArrayOfAllLineItems(this.lineItems); + let allLineItems = getArrayOfAllLineItemsAndChildParts(this.lineItems); const promos = getPromosThatMatchLineItemsOnOrder( this.lineItems.promos, allLineItems diff --git a/src/store/index.js b/src/store/index.js index be4a8784e..6c4b7d8e2 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -2625,7 +2625,7 @@ export const actions = { eon: order.eon, isRepair: order.damage.isRepair, glassToReplace: renameGlassToReplaceAttributes(order.damage.glassToReplace), - lineItemsOnOrder: getArrayOfAllLineItems(lineItemsToUse), + lineItemsOnOrder: getArrayOfAllLineItemsAndChildParts(lineItemsToUse), parentAccountNumber: useDefaultCashParentAccount ? applicationConfig.CASH_PARENT_ACCOUNT_NUMBER : order.payment.parentAccountNumber, @@ -2697,7 +2697,7 @@ export const actions = { eon: order.eon, isRepair: order.damage.isRepair, glassToReplace: renameGlassToReplaceAttributes(order.damage.glassToReplace), - lineItemsOnOrder: getArrayOfAllLineItems(lineItemsToUse), + lineItemsOnOrder: getArrayOfAllLineItemsAndChildParts(lineItemsToUse), parentAccountNumber: useDefaultCashParentAccount ? applicationConfig.CASH_PARENT_ACCOUNT_NUMBER : order.payment.parentAccountNumber, @@ -3180,7 +3180,7 @@ export function mapTaxedLineItemsToStoreFormat(availableLineItems, storeLineItem return lineItems; } -export function getArrayOfAllLineItems(lineItems) { +export function getArrayOfAllLineItemsAndChildParts(lineItems) { let consolidatedLineItemsArray = []; if (lineItems.glassParts != null) @@ -3190,13 +3190,22 @@ export function getArrayOfAllLineItems(lineItems) { ]; if (lineItems.supportingItems != null) - consolidatedLineItemsArray = [...consolidatedLineItemsArray, ...lineItems.supportingItems]; + consolidatedLineItemsArray = [ + ...consolidatedLineItemsArray, + ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.supportingItems), + ]; if (lineItems.vaps != null) - consolidatedLineItemsArray = [...consolidatedLineItemsArray, ...lineItems.vaps]; + consolidatedLineItemsArray = [ + ...consolidatedLineItemsArray, + ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.vaps), + ]; if (lineItems.promos != null) - consolidatedLineItemsArray = [...consolidatedLineItemsArray, ...lineItems.promos]; + consolidatedLineItemsArray = [ + ...consolidatedLineItemsArray, + ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.promos), + ]; return consolidatedLineItemsArray; } From 9fa6a4d6693cf47e8081c986ae9dab3f005d8a30 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Fri, 4 Oct 2024 10:57:31 -0400 Subject: [PATCH 9/9] set isGlass to false for adas part type set isGlass to false for adas part type now that they are child parts --- src/store/index.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index c89e04a14..3af0ec006 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3216,7 +3216,11 @@ function getFlattenedLineItemsWithGlassPartTag(lineItems) { return { partNumber: lineItem.partNumber, partType: lineItem.partType, - isGlassPart: true, + isGlassPart: + lineItem.partType == partTypeStrings.RECALIBRATION || + lineItem.partType == partTypeStrings.ADAS_RECALIBRATION + ? false + : true, }; });