From f78d1c4192b5fe93db51bb279a739f4113a350e3 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Wed, 17 Dec 2025 05:38:15 -0500 Subject: [PATCH 1/2] CASH-2037 CASH-2037 change the products logged in the session name to use the part number and part type. Also add the service package selected for the data analytics team. --- src/helpers/service-package-helper.js | 13 +++++++++++++ src/layouts/quote/quote.vue | 7 ++++++- .../service-package-question.vue | 8 ++++++++ src/mixins/analytics-mixin.js | 17 ++++++++++++++++- 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js index 4144c44e7..d3fc3f01b 100644 --- a/src/helpers/service-package-helper.js +++ b/src/helpers/service-package-helper.js @@ -254,6 +254,19 @@ export function getDiscountedPackageName(discountPackage) { return package_names[discountPackage] || null; } +export function getPackageLabel(packageName) { + switch (packageName) { + case packageNames.TIER_ONE: + return externalParamPackageLabels.GLASS_ONLY; + case packageNames.TIER_TWO: + return externalParamPackageLabels.STANDARD; + case packageNames.TIER_THREE: + return externalParamPackageLabels.PREMIUM; + default: + return null; + } +} + function maxTier(tierA, tierB) { if (tierA === packageNames.TIER_THREE || tierB === packageNames.TIER_THREE) { return packageNames.TIER_THREE; diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 01b585349..26dc1af16 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -33,6 +33,7 @@ @vapsItemsSelected="vapsItemsSelectedAction" @quotePageDiscountSelected="quotePageDiscountSelectedAction" @currentNumberOfPackages="currentNumberOfPackagesAction" + @servicePackageSelected="servicePackageSelectedAction" :servicePackage="servicePackage" :activePromos="lineItems.promos" :availableQuotePageDiscounts="quoteDiscountPartsInfo" @@ -564,6 +565,7 @@ export default { isSaveProgressComplete: null, packageNumber: null, skipToInsurance: null, + servicePackageSelected: null, }; }, async mounted() { @@ -670,6 +672,9 @@ export default { vapsItemsSelectedAction(vapsItemsSelected) { this.lineItems.vaps = vapsItemsSelected; }, + servicePackageSelectedAction(newValue) { + this.servicePackageSelected = newValue; + }, quotePageDiscountSelectedAction(supportingItemsSelected) { this.lineItems.supportingItems = supportingItemsSelected; }, @@ -758,7 +763,7 @@ export default { false ); - await savePageData(this.pageName, { saveProgressPopupSkipped: true }, true); + await savePageData(this.pageName, { saveProgressPopupSkipped: true, servicePackageSelected: this.servicePackageSelected }, true); const payment = this.$store.getters.payment; if (payment.isInsurance) { diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index e45147295..43910c61e 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -34,6 +34,7 @@ import { findLineItemsWithPartType, getPackageNameByType, getDiscountedPackageName, + getPackageLabel, } from "@/helpers/service-package-helper"; import { getPromosThatMatchLineItemsOnOrder, @@ -45,6 +46,7 @@ import { containsRecalParts, getItemsWithoutRecalParts } from "@/helpers/recal-h import experimentMixin from "@/mixins/experiment-mixin.js"; import { experimentSettings } from "@/constants/experiments"; import { savePageData } from "@/router/methods/helpers/save-page-data"; +import { debugLog } from "@/helpers/debug-log-helper"; export default { name: "servicePackageQuestion", @@ -84,6 +86,12 @@ export default { if (this.activePromos?.length) this.selectDefaultPackage(); }, selectedPackageName(newValue) { + debugLog("selectedPackageName:", newValue); + const packageLabel = getPackageLabel(newValue); + + debugLog("getPackageLabel:", packageLabel); + this.$emit("servicePackageSelected", `ServicePackage-${packageLabel}`); + const VapsProductsInSelectedPackage = this.getVapsLineItemsForSelectedPackage(newValue); this.$emit("vapsItemsSelected", VapsProductsInSelectedPackage); const discountPartInSelectedPackage = this.getDiscountPartForSelectedPackage(newValue); diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index a77fe930a..0be50a8be 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -232,6 +232,21 @@ export default { (part) => `${part.glassLocation}-${part.glassName}` ); + const format = (part) => `${part?.partNumber}-${part?.partType ? part.partType : ""}`; + const mapParts = (arr) => (arr ?? []).map(format); + + const glassParts = mapParts(order?.lineItems?.glassParts); + const supportingItems = mapParts(order?.lineItems?.supportingItems); + const vaps = mapParts(order?.lineItems?.vaps); + const childParts = [].concat( + ...(order?.lineItems?.glassParts ?? []).map((gp) => mapParts(gp?.childParts)) + ); + const allParts = [...glassParts, ...supportingItems, ...vaps, ...childParts]; + + if (applicationUser?.pageData?.quote?.servicePackageSelected) { + allParts.push(applicationUser.pageData.quote.servicePackageSelected); + } + var appointment = `${order?.schedule?.date ?? ""} ${order?.schedule?.startTime ?? ""}`; var sessionData = {}; @@ -251,7 +266,7 @@ export default { ? "Insurance" : "Cash"; sessionData.damageType = order?.damage?.isRepair ? "Repair" : "Replace"; - sessionData.productType = glassProducts; + sessionData.productType = allParts; sessionData.eon = order?.eon; sessionData.referralNumber = order?.referralNumber; sessionData.referralSequenceNumber = order?.referralSequenceNumber; From 882076f259081527ed5bc842b9f7526ffc25565c Mon Sep 17 00:00:00 2001 From: CarlNation Date: Wed, 17 Dec 2025 07:06:17 -0500 Subject: [PATCH 2/2] prettier --- src/layouts/quote/quote.vue | 9 ++++++++- .../service-package-question.vue | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 26dc1af16..dabc39fd7 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -763,7 +763,14 @@ export default { false ); - await savePageData(this.pageName, { saveProgressPopupSkipped: true, servicePackageSelected: this.servicePackageSelected }, true); + await savePageData( + this.pageName, + { + saveProgressPopupSkipped: true, + servicePackageSelected: this.servicePackageSelected, + }, + true + ); const payment = this.$store.getters.payment; if (payment.isInsurance) { diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index 43910c61e..436e98b24 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -88,7 +88,7 @@ export default { selectedPackageName(newValue) { debugLog("selectedPackageName:", newValue); const packageLabel = getPackageLabel(newValue); - + debugLog("getPackageLabel:", packageLabel); this.$emit("servicePackageSelected", `ServicePackage-${packageLabel}`);