From 5264ba45cdc72150d98341d818b388d50b55aa5d Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Tue, 13 May 2025 14:12:04 -0400 Subject: [PATCH 01/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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/21] 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 6e146a455226624bfe98a49e60d5aebba5664095 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Fri, 16 May 2025 18:35:04 +0530 Subject: [PATCH 12/21] CASH-710 mobile validation fixed --- .../service-location/service-location.vue | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 2690f09d4..5eef66e21 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -306,14 +306,11 @@ export default { }, isVehicleProtected: this.isVehicleProtected, isMobileSelected: - this.selectedAppointmentType === AppointmentTypeStrings.MOBILE && - !this.isMobileLocationOpened, + this.selectedAppointmentType == AppointmentTypeStrings.MOBILE && + !this.getIsMobileLocationOpened(), }; }, }, - isMobileLocationOpened() { - return this.$refs.mobileLocationQuestions.isMobileLocationOpened; - }, isServiceableMobile() { if (this.isRecalibrationServiceableMobile !== null) { return ( @@ -759,11 +756,16 @@ export default { }, displayMobileAddressQuestion(openMobileLocation) { var mobileLocationQuestionsRef = this.$refs.mobileLocationQuestions; - var isMobileAddressComplete = mobileLocationQuestionsRef.isMobileAddressComplete; - if (isMobileAddressComplete) { + var isMobileAddressComplete = mobileLocationQuestionsRef?.isMobileAddressComplete; + if (isMobileAddressComplete?.()) { + mobileLocationQuestionsRef.isMobileLocationOpened = false; + } else { mobileLocationQuestionsRef.isMobileLocationOpened = openMobileLocation; } }, + getIsMobileLocationOpened() { + return this.$refs.mobileLocationQuestions?.isMobileLocationOpened; + }, }, watch: { zipCode: { From 6aaa89c9062b6ec7e53873e5d6eb5c9af615ffaf Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Fri, 16 May 2025 12:26:08 -0400 Subject: [PATCH 13/21] CASH-429 fix current day dot shifting. --- src/digital-components/date-picker/date-picker.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/digital-components/date-picker/date-picker.vue b/src/digital-components/date-picker/date-picker.vue index f14075c16..e0c054071 100644 --- a/src/digital-components/date-picker/date-picker.vue +++ b/src/digital-components/date-picker/date-picker.vue @@ -1001,6 +1001,7 @@ export default { min-width: 2.5rem; width: 2.5rem; height: 2.5rem; + border: 2px solid transparent; span { &.small { From b144d147a83826967a641e95e22f0c27f61f12f0 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 19 May 2025 14:51:20 +0530 Subject: [PATCH 14/21] CASH-712 Defect fixed --- .../mobile-location-modal-questions.vue | 5 +---- src/layouts/service-location/service-location.vue | 10 ++++------ 2 files changed, 5 insertions(+), 10 deletions(-) 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 36efad975..bde24ed09 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 @@ -236,12 +236,12 @@ export default { }, async setMobileLocation() { this.resetAlerts(); + this.setMobileLocationInvalid(true); // Validate the Zip Code if ( this.internalModel.addressQuestions.zipCode === "" || this.internalModel.addressQuestions.zipCode.length !== 5 ) { - this.setMobileLocationInvalid(true); return; } const zipCodeData = await this.getZipCodeData( @@ -251,11 +251,9 @@ export default { if (!zipCodeData.isValid) { this.displayInvalidZipAlert = true; - this.setMobileLocationInvalid(true); return; } else if (zipCodeData.state != this.internalModel.addressQuestions.state) { this.displayMismatchStateAndZipAlert = true; - this.setMobileLocationInvalid(true); return; } else if ( this.internalModel.addressQuestions.zipCode !== @@ -295,7 +293,6 @@ export default { } // update the page level model this.$emit("setMobileLocation", this.internalModel); - this.setMobileLocationInvalid(false); }, toggleMobileLocation() { this.isMobileLocationOpened = !this.isMobileLocationOpened; diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 5eef66e21..76e42bad9 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -526,6 +526,7 @@ export default { } if (this.isServiceableMobile) { this.setMobileLocation(newValue); + this.setMobileLocationInValid(false); } else { await getZipCodeData(newZipCode).then((zipCodeData) => { this.serviceZipCodeQuestion = { @@ -754,13 +755,13 @@ export default { setMobileLocationInValid(isMobileLocationInValid) { this.isMobileAddressValid = !isMobileLocationInValid; }, - displayMobileAddressQuestion(openMobileLocation) { + displayMobileAddressQuestion() { var mobileLocationQuestionsRef = this.$refs.mobileLocationQuestions; var isMobileAddressComplete = mobileLocationQuestionsRef?.isMobileAddressComplete; if (isMobileAddressComplete?.()) { mobileLocationQuestionsRef.isMobileLocationOpened = false; } else { - mobileLocationQuestionsRef.isMobileLocationOpened = openMobileLocation; + mobileLocationQuestionsRef.isMobileLocationOpened = true; } }, getIsMobileLocationOpened() { @@ -777,10 +778,8 @@ export default { this.selectedProvider = new Provider( this.shopProviderData.mobileProviderNumber ); - this.displayMobileAddressQuestion(true); } else { this.selectedProvider = new Provider(); - this.displayMobileAddressQuestion(false); } }); } @@ -792,10 +791,9 @@ export default { this.selectedProvider = new Provider( this.shopProviderData.mobileProviderNumber ); - this.displayMobileAddressQuestion(true); + this.displayMobileAddressQuestion(); } else { this.selectedProvider = new Provider(); - this.displayMobileAddressQuestion(false); } }, }, From 482591cf2229d96a7a0b8dd5bfb38a40e8ca3466 Mon Sep 17 00:00:00 2001 From: Johnny shultz Date: Mon, 19 May 2025 08:58:52 -0400 Subject: [PATCH 15/21] CASH-719 CASH-719 defect fix for coming in from leadgen using other/not sure for vehicleDamage option --- src/layouts/vehicle-damage/vehicle-damage.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 391004a70..3912979ea 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -192,7 +192,12 @@ export default { vm.selectedWindshieldOptions.selectedWindshieldReplaceOptions.push( damageLocationsSelected.SINGLE ); - return vm.forwardButtonAction(); + if ( + store.getters.externalParameterState.isExternalParameter && + store.getters.externalParameterDamage.damageType !== "other" + ) { + return vm.forwardButtonAction(); + } } baseMixin.methods.ResetExternalParamsAndHideModal(); } From f245bfe6308f96b6ffc1f6b4dd5d9fd929067f91 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Mon, 19 May 2025 09:44:13 -0400 Subject: [PATCH 16/21] CASH-715 policy vehicle change CASH-715 lineItems empty can happen when a customer goes all the way through scheduling as cash but then switches to insurance AND also switches vehicles during policy lookup. If you call shop-time-slots without parts, you get 500 errors so skip the call. --- src/store/index.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 753d8509b..4662c02e2 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3788,8 +3788,16 @@ function supportingItemsEqual(supportingItemsA, supportingItemsB) { // check to see if we have an appointment date on the order object. // if so, make sure it's not in the past. if in the past, clear schedule info in store. // if date not in past, then call schedule service to verify appointment is still available. -async function resetScheduleIfUnavailable(context, order, pageNameToLog) { - if (!order.schedule?.date) { +async function resetScheduleIfUnavailable(context, order, pageNameToLog) { + // lineItems empty can happen when a customer goes all the way through scheduling as cash but then + // switches to insurance AND also switches vehicles during policy lookup. If you call shop-time-slots + // without parts, you get 500 errors so skip the call. + const lineItems = getArrayOfAllLineItemsAndChildParts(order.lineItems); + + if (!order.schedule?.date || lineItems.length === 0) { + console.log(new Date() + " no schedule date or lineItems. skip resetSchedule logic.") + console.log(new Date() + " schedule.schedule.date" + JSON.stringify(order.schedule)); + console.log(new Date() + " lineItems" + JSON.stringify(order.lineItems)); return; } From 6f8718e835caf2602c8c18ff0c375a78148d69cc Mon Sep 17 00:00:00 2001 From: CarlNation Date: Mon, 19 May 2025 09:47:06 -0400 Subject: [PATCH 17/21] prettier --- src/store/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 4662c02e2..c7f823c3c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3788,14 +3788,14 @@ function supportingItemsEqual(supportingItemsA, supportingItemsB) { // check to see if we have an appointment date on the order object. // if so, make sure it's not in the past. if in the past, clear schedule info in store. // if date not in past, then call schedule service to verify appointment is still available. -async function resetScheduleIfUnavailable(context, order, pageNameToLog) { +async function resetScheduleIfUnavailable(context, order, pageNameToLog) { // lineItems empty can happen when a customer goes all the way through scheduling as cash but then // switches to insurance AND also switches vehicles during policy lookup. If you call shop-time-slots // without parts, you get 500 errors so skip the call. const lineItems = getArrayOfAllLineItemsAndChildParts(order.lineItems); if (!order.schedule?.date || lineItems.length === 0) { - console.log(new Date() + " no schedule date or lineItems. skip resetSchedule logic.") + console.log(new Date() + " no schedule date or lineItems. skip resetSchedule logic."); console.log(new Date() + " schedule.schedule.date" + JSON.stringify(order.schedule)); console.log(new Date() + " lineItems" + JSON.stringify(order.lineItems)); return; From 473ac2ad6630ef6f74f4f73ea4b23ba824b9e0bc Mon Sep 17 00:00:00 2001 From: CarlNation Date: Mon, 19 May 2025 10:25:43 -0400 Subject: [PATCH 18/21] CASH-715 CASH-715 undefined check --- src/store/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index c7f823c3c..4f360cc18 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3621,25 +3621,25 @@ export function mapTaxedLineItemsToStoreFormat(availableLineItems, storeLineItem export function getArrayOfAllLineItemsAndChildParts(lineItems) { let consolidatedLineItemsArray = []; - if (lineItems.glassParts != null) + if (lineItems?.glassParts != null) consolidatedLineItemsArray = [ ...consolidatedLineItemsArray, ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.glassParts), ]; - if (lineItems.supportingItems != null) + if (lineItems?.supportingItems != null) consolidatedLineItemsArray = [ ...consolidatedLineItemsArray, ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.supportingItems), ]; - if (lineItems.vaps != null) + if (lineItems?.vaps != null) consolidatedLineItemsArray = [ ...consolidatedLineItemsArray, ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.vaps), ]; - if (lineItems.promos != null) + if (lineItems?.promos != null) consolidatedLineItemsArray = [ ...consolidatedLineItemsArray, ...getFlattenedArrayOfLineItemsWithChildParts(lineItems.promos), From 393147292dc93f711fb7f70a6b9c3752495f5464 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 19 May 2025 22:03:44 +0530 Subject: [PATCH 19/21] CASH-712 hide mobile address question for Inshop and drop off --- src/layouts/service-location/service-location.vue | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 76e42bad9..28d3c5d94 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -755,13 +755,13 @@ export default { setMobileLocationInValid(isMobileLocationInValid) { this.isMobileAddressValid = !isMobileLocationInValid; }, - displayMobileAddressQuestion() { + displayMobileAddressQuestion(openMobileLocation) { var mobileLocationQuestionsRef = this.$refs.mobileLocationQuestions; var isMobileAddressComplete = mobileLocationQuestionsRef?.isMobileAddressComplete; if (isMobileAddressComplete?.()) { mobileLocationQuestionsRef.isMobileLocationOpened = false; } else { - mobileLocationQuestionsRef.isMobileLocationOpened = true; + mobileLocationQuestionsRef.isMobileLocationOpened = openMobileLocation; } }, getIsMobileLocationOpened() { @@ -791,9 +791,10 @@ export default { this.selectedProvider = new Provider( this.shopProviderData.mobileProviderNumber ); - this.displayMobileAddressQuestion(); + this.displayMobileAddressQuestion(true); } else { this.selectedProvider = new Provider(); + this.displayMobileAddressQuestion(false); } }, }, From e56174f012f174be5454dd65aba1461688a41c12 Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 19 May 2025 22:43:44 +0530 Subject: [PATCH 20/21] CASH-709 remove fluctuation issue --- .../mobile-location-modal-questions.vue | 6 +++++- .../vehicle-protected-question.vue | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) 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 36efad975..9304db190 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 @@ -235,7 +235,6 @@ export default { this.displayMismatchStateAndZipAlert = false; }, async setMobileLocation() { - this.resetAlerts(); // Validate the Zip Code if ( this.internalModel.addressQuestions.zipCode === "" || @@ -250,10 +249,12 @@ export default { ); if (!zipCodeData.isValid) { + this.displayMismatchStateAndZipAlert = false; this.displayInvalidZipAlert = true; this.setMobileLocationInvalid(true); return; } else if (zipCodeData.state != this.internalModel.addressQuestions.state) { + this.displayInvalidZipAlert = false; this.displayMismatchStateAndZipAlert = true; this.setMobileLocationInvalid(true); return; @@ -261,6 +262,9 @@ export default { this.internalModel.addressQuestions.zipCode !== this.modelValue.addressQuestions.zipCode ) { + //reset alerts + this.resetAlerts(); + // retrieve mobile fee part const serviceZipCode = this.internalModel.addressQuestions.zipCode; const mobileFeePart = await getPricedMobileFeePart( diff --git a/src/layouts/service-location/mobile-location-modal-questions/vehicle-protected-question/vehicle-protected-question.vue b/src/layouts/service-location/mobile-location-modal-questions/vehicle-protected-question/vehicle-protected-question.vue index ce0f7ed53..b13f72ca9 100644 --- a/src/layouts/service-location/mobile-location-modal-questions/vehicle-protected-question/vehicle-protected-question.vue +++ b/src/layouts/service-location/mobile-location-modal-questions/vehicle-protected-question/vehicle-protected-question.vue @@ -57,7 +57,7 @@ export default {