From 5264ba45cdc72150d98341d818b388d50b55aa5d Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Tue, 13 May 2025 14:12:04 -0400 Subject: [PATCH 01/38] CASH-532 CASH-532 leadgen stopped loader spinning on vehicle, handled edge case for split windshield on vehicle damage, sent motor homes to error on vehicle damage --- src/layouts/vehicle-damage/vehicle-damage.vue | 32 +++++++++++++++++-- src/layouts/vehicle/vehicle.vue | 3 ++ 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 1106f7324..7a41b2d5b 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -148,6 +148,10 @@ export default { if (store.getters.externalParameterState?.isExternalParameter) { await nextTick(); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); + if(store.getters.vehicle?.vehicleSubType === "MOTOR HOME" && store.getters.externalParameterDamage.damageType?.toUpperCase() === + "WINDSHIELDREPLACE"){ + return baseMixin.methods.ResetExternalParamsAndHideModal(); + } if (isValid) { vm.forwardButtonAction(); } else { @@ -176,6 +180,26 @@ export default { false ); } + + const selectedGlassToReplace = + resultMap.damageOptions.windshieldOptions.availableReplacementOptions; + + if (selectedGlassToReplace == damageLocationsSelected.SINGLE) { + vm.selectedWindshieldOptions.selectedWindshieldReplaceOptions.push( + damageLocationsSelected.SINGLE + ); + return vm.forwardButtonAction(); + } else if ( + selectedGlassToReplace == + `${damageLocationsSelected.DRIVER},${damageLocationsSelected.PASSENGER}` + ) { + vm.selectedWindshieldOptions.selectedWindshieldReplaceOptions.push( + damageLocationsSelected.DRIVER + ); + vm.selectedWindshieldOptions.selectedWindshieldReplaceOptions.push( + damageLocationsSelected.PASSENGER + ); + } baseMixin.methods.ResetExternalParamsAndHideModal(); } } else { @@ -322,9 +346,11 @@ export default { ) { windShieldOptions.selectedWindshieldDamageType = damageLocationsSelected.REPLACE; - windShieldOptions.selectedWindshieldReplaceOptions.push( - damageLocationsSelected.SINGLE - ); + if (!store.getters.externalParameterState.isExternalParameter) { + windShieldOptions.selectedWindshieldReplaceOptions.push( + damageLocationsSelected.SINGLE + ); + } } if ( diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 131073f90..8a6e13500 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -532,6 +532,9 @@ export default { if (!closestShops || closestShops.data?.providers?.length === 0) { this.displayNoServiceAlert = true; + if (store.getters.externalParameterState?.isExternalParameter) { + return baseMixin.methods.ResetExternalParamsAndHideModal(); + } return this.$refs.navbar.removeLoader(); } } From 0034c12a7562201326584a0c914111ad8e38a0ec Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Tue, 13 May 2025 14:20:52 -0400 Subject: [PATCH 02/38] CASH-532 CASH-532 formatting --- src/layouts/vehicle-damage/vehicle-damage.vue | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 7a41b2d5b..920063853 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -148,9 +148,12 @@ export default { if (store.getters.externalParameterState?.isExternalParameter) { await nextTick(); const isValid = await baseMixin.methods.isFormValid(vm.$refs.theForm); - if(store.getters.vehicle?.vehicleSubType === "MOTOR HOME" && store.getters.externalParameterDamage.damageType?.toUpperCase() === - "WINDSHIELDREPLACE"){ - return baseMixin.methods.ResetExternalParamsAndHideModal(); + if ( + store.getters.vehicle?.vehicleSubType === "MOTOR HOME" && + store.getters.externalParameterDamage.damageType?.toUpperCase() === + "WINDSHIELDREPLACE" + ) { + return baseMixin.methods.ResetExternalParamsAndHideModal(); } if (isValid) { vm.forwardButtonAction(); From b69cd08e89ca83e6d50c3b8ed8007cfe0ddea98a Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Tue, 13 May 2025 15:31:38 -0400 Subject: [PATCH 03/38] CASH-429 adjust calendar spacing. --- src/digital-components/date-picker/date-picker.vue | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue index b23ccece2..30c285b6a 100644 --- a/src/digital-components/date-picker/date-picker.vue +++ b/src/digital-components/date-picker/date-picker.vue @@ -854,7 +854,7 @@ export default { } .calendar-grid-container { margin: 0 auto 1rem auto; - max-width: 400px; + max-width: 360px; position: relative; transition: height ease 2s, @@ -864,9 +864,6 @@ export default { justify-content: center; align-items: center; padding: 0; - @include media-breakpoint-up(md) { - padding: 0 0.75rem; - } opacity: 1; .grid-item { From 887999ce8625c415a876ec6c10219ceae1298e29 Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Tue, 13 May 2025 16:44:19 -0400 Subject: [PATCH 04/38] CASH-532 CASH-532 fixed unit tests --- src/layouts/vehicle-damage/vehicle-damage.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index f6202337c..3194c73fd 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -646,6 +646,9 @@ describe("vehicle-damage.vue", () => { isRepair: null, numberOfChips: null, }, + externalParameterState: { + isExternalParameter: false, + } }; var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore(); From fbeafdacb4386ed85fbd9fad5a51ee13a42121d0 Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Tue, 13 May 2025 16:49:30 -0400 Subject: [PATCH 05/38] CASH-532 CASH-532 more formatting --- src/layouts/vehicle-damage/vehicle-damage.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 3194c73fd..7ea899fda 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -648,7 +648,7 @@ describe("vehicle-damage.vue", () => { }, externalParameterState: { isExternalParameter: false, - } + }, }; var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore(); From 565b4bd41cab684a1dd64ead6e641f655cf16650 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Wed, 14 May 2025 13:24:51 +0530 Subject: [PATCH 06/38] CASH-688 handle two async call simultaneous in case of single service type that cause availability indicators. --- .../shop-question/shop-question.vue | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/layouts/service-location/shop-question/shop-question.vue b/src/layouts/service-location/shop-question/shop-question.vue index 72862440b..5a9278d78 100644 --- a/src/layouts/service-location/shop-question/shop-question.vue +++ b/src/layouts/service-location/shop-question/shop-question.vue @@ -225,6 +225,15 @@ export default { return index; }, + async handleUpdate(selectedShopIndex = null) { + this.resetAnswers(); + if (selectedShopIndex >= 3) { + await this.getNextShopsFromList(selectedShopIndex + 1); + } else { + await this.getNextShopsFromList(); + await nextTick(); + } + }, }, watch: { selectedAppointmentType: { @@ -233,27 +242,16 @@ export default { // nothing to do with this component. We could mitigate this by showing / hiding this component with v-if but that messes // up the component initialization on page load. async handler() { - await nextTick(); - this.resetAnswers(); - this.getNextShopsFromList(); + this.handleUpdate(); }, }, shopProviders: { async handler(newValue) { - this.resetAnswers(); - - await nextTick(); const selectedShopIndex = this.getSelectedProviderIndex( newValue, this.selectedProviderNumber ); - - if (selectedShopIndex >= 3) { - await this.getNextShopsFromList(selectedShopIndex + 1); - } else { - await this.getNextShopsFromList(); - await nextTick(); - } + this.handleUpdate(selectedShopIndex); }, }, }, From 6a26eeea01047a5707e7f4844cf45d35fe69e0a6 Mon Sep 17 00:00:00 2001 From: Minojhini Valaiyapathi Date: Wed, 14 May 2025 13:42:30 -0400 Subject: [PATCH 07/38] CASH-696 - updated cashPriceSubTotal to be grabbed from store after it's saved. --- src/mixins/analytics-mixin.js | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index b1df7156c..27ebb3048 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -313,15 +313,7 @@ export default { } // Cash Quote or Cash Price Sub Total - if (isPricingAvailable) { - const subtotal = baseMixin.methods - .getTotalPriceOfAllLineItemsAndChildParts(combinedLineItems, false) - .toFixed(2); - - payload.cashPriceSubTotal = parseFloat(subtotal); - } else { - payload.cashPriceSubTotal = ""; - } + payload.cashPriceSubTotal = store.getters.order?.cashPriceSubTotal ?? ""; //unverified (in scenarios we don’t display the price) if ( From dfa5ac9f48e0453619f98b0eb8151c257a758e22 Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Thu, 15 May 2025 12:30:31 -0400 Subject: [PATCH 08/38] CASH-532v2 CASH-532 removed autoselecting driver and passenger glass coming from leadgen with a split windshield truck --- src/layouts/vehicle-damage/vehicle-damage.vue | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index a08b3656b..391004a70 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -193,16 +193,6 @@ export default { damageLocationsSelected.SINGLE ); return vm.forwardButtonAction(); - } else if ( - selectedGlassToReplace == - `${damageLocationsSelected.DRIVER},${damageLocationsSelected.PASSENGER}` - ) { - vm.selectedWindshieldOptions.selectedWindshieldReplaceOptions.push( - damageLocationsSelected.DRIVER - ); - vm.selectedWindshieldOptions.selectedWindshieldReplaceOptions.push( - damageLocationsSelected.PASSENGER - ); } baseMixin.methods.ResetExternalParamsAndHideModal(); } From 0e7d2430ce8065e49b3908a55d9f885e3e6e08fa Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Fri, 16 May 2025 12:30:14 +0530 Subject: [PATCH 09/38] CASH-708 validate zip code length --- .../mobile-location-modal-questions.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/layouts/service-location/mobile-location-modal-questions/mobile-location-modal-questions.vue b/src/layouts/service-location/mobile-location-modal-questions/mobile-location-modal-questions.vue index fc83f041a..36efad975 100644 --- a/src/layouts/service-location/mobile-location-modal-questions/mobile-location-modal-questions.vue +++ b/src/layouts/service-location/mobile-location-modal-questions/mobile-location-modal-questions.vue @@ -237,7 +237,10 @@ export default { async setMobileLocation() { this.resetAlerts(); // Validate the Zip Code - if (this.internalModel.addressQuestions.zipCode === "") { + if ( + this.internalModel.addressQuestions.zipCode === "" || + this.internalModel.addressQuestions.zipCode.length !== 5 + ) { this.setMobileLocationInvalid(true); return; } From 8004028d3f9b8283ce4cae32b997a9b93609e005 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Fri, 16 May 2025 13:14:04 +0530 Subject: [PATCH 10/38] CASH-709 removing addressfield focus as we are no longer using inside modal --- src/fmg-components/address-questions/address-questions.vue | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/fmg-components/address-questions/address-questions.vue b/src/fmg-components/address-questions/address-questions.vue index 4e4cf6b56..a9e92ea40 100644 --- a/src/fmg-components/address-questions/address-questions.vue +++ b/src/fmg-components/address-questions/address-questions.vue @@ -452,12 +452,6 @@ export default { this.loadGooglePlacesAutocompleteScript(); } }, - beforeUpdate() { - // It is necessary to set focus on the street address on this lifecycle hook when this component is used in a modal. - if (!this.addressField1.matches(":focus")) { - this.addressField1.focus(); - } - }, unmounted() { this.unloadAutocomplete(); }, From 85bc78dc27f5be4d7af85cb4f9c3f25979c345d5 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Fri, 16 May 2025 16:23:26 +0530 Subject: [PATCH 11/38] CASH-710 mobile validation --- src/layouts/service-location/service-location.spec.js | 2 ++ src/layouts/service-location/service-location.vue | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/layouts/service-location/service-location.spec.js b/src/layouts/service-location/service-location.spec.js index 24030fb1f..8a8b7ae55 100644 --- a/src/layouts/service-location/service-location.spec.js +++ b/src/layouts/service-location/service-location.spec.js @@ -355,6 +355,7 @@ describe("service-location.vue", () => { zipCode: "61606", }, isVehicleProtected: null, + isMobileSelected: false, }; // Act @@ -468,6 +469,7 @@ describe("service-location.vue", () => { zipCode: "43054", }, isVehicleProtected: true, + isMobileSelected: false, }; //wrapper.vm.closeModalAction = jest.fn(); diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 3b37c8406..2690f09d4 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -175,12 +175,12 @@ const MOBILE_FEE_PART_TYPE = "MOBILE FEE"; // DEFINE VALIDATION RULES defineRule("mobile-location-required", (value) => { if ( + value.isMobileSelected && (!value.addressQuestions.streetAddress || !value.addressQuestions.city || !value.addressQuestions.state || !value.addressQuestions.zipCode || - !value.isVehicleProtected) && - value.isMobileSelected + !value.isVehicleProtected) ) { return errorMessages.MOBILE_LOCATION_REQUIRED; } @@ -305,9 +305,15 @@ export default { zipCode: this.zipCode, }, isVehicleProtected: this.isVehicleProtected, + isMobileSelected: + this.selectedAppointmentType === AppointmentTypeStrings.MOBILE && + !this.isMobileLocationOpened, }; }, }, + isMobileLocationOpened() { + return this.$refs.mobileLocationQuestions.isMobileLocationOpened; + }, isServiceableMobile() { if (this.isRecalibrationServiceableMobile !== null) { return ( From 8a770d20a21047dc9c923e03b02ad54b4fb49e7c Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Fri, 16 May 2025 08:42:10 -0400 Subject: [PATCH 12/38] CASH-313 | First implementation --- .../salesforce-helper-qa.js | 15 +++++-- .../salesforce-webchat/salesforce-webchat.vue | 43 ++++++++++++++++--- .../funnel-header/funnel-header.vue | 9 ++-- 3 files changed, 54 insertions(+), 13 deletions(-) diff --git a/src/digital-components/salesforce-webchat/salesforce-helper-qa.js b/src/digital-components/salesforce-webchat/salesforce-helper-qa.js index ef08d42de..a4ceb3f00 100644 --- a/src/digital-components/salesforce-webchat/salesforce-helper-qa.js +++ b/src/digital-components/salesforce-webchat/salesforce-helper-qa.js @@ -1,3 +1,4 @@ +/* eslint-disable */ /* The code below is generated from salesforce but modified in the following ways: * Only the javascript inside the second diff --git a/src/fmg-components/funnel-header/funnel-header.vue b/src/fmg-components/funnel-header/funnel-header.vue index 33a398428..12782b2aa 100644 --- a/src/fmg-components/funnel-header/funnel-header.vue +++ b/src/fmg-components/funnel-header/funnel-header.vue @@ -2,7 +2,8 @@
- +