From e8f9adfaaa443f202a92784812f99dd04af67227 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 22 Jun 2023 16:29:32 -0400 Subject: [PATCH 01/14] coverage-statement refactoring WIP --- .../coverage-statement/coverage-statement.vue | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index f1128f8a..48c812a5 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -59,6 +59,8 @@ import { getDamageString } from '@/helpers/damage-helper.js'; import { useMainStore } from "@/store"; import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; +const store = useMainStore(); + export default { name: 'coverage-statement', mixins: [baseFormMixin, vehicleQuestionsMixin], @@ -71,6 +73,11 @@ export default { recalModal, steeringText }, + data () { + return { + selectedVehicle: useMainStore().order.vehicle + } + }, mounted() { setupModalLinks(this); }, @@ -93,21 +100,31 @@ export default { } }, continueWithSchedulingBodyText() { - return this.getCmsContent("continueWithSchedulingCopy", "BodyText"); + return this.getCmsContent("continueWithSchedulingCopy", "BodyText"); }, unverifiedADASNextStepsBodyText() { - return this.getCmsContent("UnverifiedADASNextStepsWidget", "BodyText").replaceAll("{custom:damage}", this.damageText); + return this.getCmsContent("UnverifiedADASNextStepsWidget", "BodyText").replaceAll("{custom:damage}", this.damageText); }, unverifiedNonADASNextStepsBodyText() { - return this.getCmsContent("UnverifiedNonADASNextStepsWidget", "BodyText").replaceAll("{custom:damage}", this.damageText); + return this.getCmsContent("UnverifiedNonADASNextStepsWidget", "BodyText").replaceAll("{custom:damage}", this.damageText); }, unverifiedNonADASRepairBodyText() { - return this.getCmsContent("UnverifiedNonADASRepairWidget", "BodyText"); + return this.getCmsContent("UnverifiedNonADASRepairWidget", "BodyText"); }, damageText() { - var damageString = getDamageString(); - return damageString == "match" ? "" : damageString; + var damageString = getDamageString(); + return damageString == "match" ? "" : damageString; }, + coverageVerified() { + const isCoverageVerified = store.order.payment.insuranceCoverage.isVerified; + return isCoverageVerified; + }, + verifiedNoComp() { + const policyData = store.applicationUser.pageData.policyVehicles; + if (!policyData.coverages || policyData.noCoverage === true) { + return true; + } + } }, async beforeRouteEnter(to, from, next) { // Call APIs From 569977eb18d7f07d13025dac8905566372e2dc73 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 29 Jun 2023 16:31:21 -0400 Subject: [PATCH 02/14] refactoring coverage-statement page WIP --- .../coverage-statement/coverage-statement.vue | 56 +++++++++++++++++-- 1 file changed, 51 insertions(+), 5 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index 48c812a5..eb853688 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -25,6 +25,7 @@

+ vehicle.vin === store.order.vehicle.vin + ) + return matchingVehicle; + }, + vehicleDeductible() { + //console.log(this.selectedVehicle[0].coverages[0].deductible); + const deductible = this.selectedVehiclePolicyInfo[0].coverages[0].deductible; + //console.log(!this.selectedVehiclePolicyInfo[0].coverages[0]); + return deductible; + }, + isDeductibleZero() { + return this.vehicleDeductible === 0; + }, coverageVerified() { const isCoverageVerified = store.order.payment.insuranceCoverage.isVerified; return isCoverageVerified; }, verifiedNoComp() { - const policyData = store.applicationUser.pageData.policyVehicles; - if (!policyData.coverages || policyData.noCoverage === true) { + if (!this.policyVehicles.coverages || this.policyVehicles.noCoverage === true) { return true; } + }, + verifiedITAC() { + this.getPriceInfo(); + return this.ITAC; + }, + verifiedDeductible() { + return !this.isITAC; + }, + ADASReplace() { + let parts = store.order.lineItems.glassParts; + + if (parts.filter(part => part.requiresRecalibration).length > 0) { + return true; + } + }, + nonADASReplace() { + return !this.ADASReplace; + }, + nonADASRepair() { + if (store.order.damage.isRepair) { + return true; + } } }, async beforeRouteEnter(to, from, next) { @@ -151,11 +192,16 @@ export default { } return false; }, - + getPriceInfo() { + const servicePrice = store.getPriceOrderItems(); + + if (servicePrice > this.vehicleDeductible) { + return this.isITAC = true; + } + }, async forwardButtonAction() { return this.navigateForward(); }, - navigateForward() { this.$router.navigate( this.navigationScenarios.CLICKED_FORWARD, From 9eda911c24871bbf3854901553218b9d3f8d7c24 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 6 Jul 2023 12:59:33 -0400 Subject: [PATCH 03/14] coverage statement WIP --- .../coverage-statement/coverage-statement.vue | 151 +++++++++++++----- 1 file changed, 114 insertions(+), 37 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index 50860631..14e78155 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -8,15 +8,20 @@
- + + vehicle.vin === store.order.vehicle.vin - ) - return matchingVehicle; - }, + // selectedVehiclePolicyInfo() { + // const matchingVehicle = this.policyVehicles.filter( + // (vehicle) => vehicle.vin === store.order.vehicle.vin + // ) + // return matchingVehicle; + // }, vehicleDeductible() { + if (this.coverageVerified) { + if (this.store.order.damage.isRepair) { + return this.store.order.policy.deductible.repair; + } + else { + return this.store.order.policy.deductible.replace; + } + } //console.log(this.selectedVehicle[0].coverages[0].deductible); - const deductible = this.selectedVehiclePolicyInfo[0].coverages[0].deductible; + //const deductible = this.selectedVehiclePolicyInfo[0].coverages[0].deductible; //console.log(!this.selectedVehiclePolicyInfo[0].coverages[0]); - return deductible; + //return deductible; }, isDeductibleZero() { return this.vehicleDeductible === 0; }, coverageVerified() { - const isCoverageVerified = store.order.payment.insuranceCoverage.isVerified; - return isCoverageVerified; + const isVerified = store.order.payment.insuranceCoverage.isVerified; + return isVerified; + }, + coverageUnverified() { + return true; + // const isUnverified = !this.coverageVerified; + // return isUnverified; }, verifiedNoComp() { if (!this.policyVehicles.coverages || this.policyVehicles.noCoverage === true) { @@ -166,7 +211,7 @@ export default { return true; } } - }, +}, async beforeRouteEnter(to, from, next) { // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.query.issPage); @@ -194,28 +239,60 @@ export default { }); }, methods: { - arePagePrerequisitesValid() { - if (useMainStore().vehicle.vin) { - return true; - } - return false; - }, - getPriceInfo() { - const servicePrice = store.getPriceOrderItems(); - - if (servicePrice > this.vehicleDeductible) { - return this.isITAC = true; + processIfStatements, + getSubheaderTextFromCms(cmsWidgetName) { + return this.getCmsContent(cmsWidgetName, 'SubHeaderText'); + }, + getBodyTextFromCms(cmsWidgetName) { + const bodyText = this.getCmsContent(cmsWidgetName, "BodyText"); + return this.processIfStatements(bodyText, "custom", this.getCustomValueFromString); + }, + getSecondaryTextFromCms(cmsWidgetName) { + const secondaryText = this.getCmsContent(cmsWidgetName, "SecondaryText"); + return this.processIfStatements(secondaryText, "custom", this.getCustomValueFromString); + }, + arePagePrerequisitesValid() { + if (useMainStore().vehicle.vin) { + return true; } - }, - async forwardButtonAction() { - return this.navigateForward(); - }, - navigateForward() { - this.$router.navigate( - this.navigationScenarios.CLICKED_FORWARD, - this.$route - ); - }, + return false; + }, + getCustomValueFromString(str) { + switch (str) { + case 'coverageUnverified': + return this.coverageUnverified; + case 'verifiedDeductible': + return this.verifiedDeductible; + case 'verifiedITAC': + return this.verifiedITAC; + case 'verifiedNoComp': + return this.verifiedNoComp; + case 'ADASReplace': + return this.ADASReplace; + case 'nonADASReplace': + return this.nonADASReplace; + case 'nonADASRepair': + return this.nonADASRepair; + default: + return null; + } + }, + getPriceInfo() { + const servicePrice = store.getPriceOrderItems(); + + if (servicePrice > this.vehicleDeductible) { + return this.isITAC = true; + } + }, + async forwardButtonAction() { + return this.navigateForward(); + }, + navigateForward() { + this.$router.navigate( + this.navigationScenarios.CLICKED_FORWARD, + this.$route + ); + }, }, }; From dadf37d8aaa7954956c44d5c153539642b1d0c5a Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 6 Jul 2023 16:12:47 -0400 Subject: [PATCH 04/14] logic for displaying correct subheader --- .../coverage-statement/coverage-statement.vue | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index 14e78155..e93cd089 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -7,12 +7,11 @@
-
- +
+
+
- + id="coverage-statement-text-block" /> -->
-

+
@@ -45,6 +82,7 @@
+ @@ -297,4 +444,12 @@ p strong { p.small{ margin-bottom:0; } + +.secondary-text { + color: $green; + font-size: 32px; + font-weight: 300; + margin-bottom: 24px; +} + From af577f2445ca310ec917a18d892acf733c6dbd07 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 12 Jul 2023 17:16:59 -0400 Subject: [PATCH 07/14] temporary change to allow coverage-statement content to load --- src/layouts/vehicle-lookup/vehicle-lookup.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/vehicle-lookup/vehicle-lookup.vue b/src/layouts/vehicle-lookup/vehicle-lookup.vue index f2ebe6d0..9ca795bb 100644 --- a/src/layouts/vehicle-lookup/vehicle-lookup.vue +++ b/src/layouts/vehicle-lookup/vehicle-lookup.vue @@ -89,7 +89,7 @@ export default { forwardButtonAction() { switch (this.selectedVinLookupMethod) { case vinLookupMethodSelections.MANUALVIN: - useMainStore().updateVehicleVin(null); + //useMainStore().updateVehicleVin(null); this.$router.navigate(this.navigationScenarios.SELECTED_MANUAL_VIN, this.$route); break; case vinLookupMethodSelections.LICENSEPLATE: From e25a37ef417769f3eb52519155c93b8fe7593fe1 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 13 Jul 2023 16:36:06 -0400 Subject: [PATCH 08/14] coverage-statement navigation scenarios and content --- .../coverage-statement/coverage-statement.vue | 240 +++++++++--------- .../router-constants/navigation-scenarios.js | 2 + src/router/router-constants/routing-table.js | 8 + 3 files changed, 133 insertions(+), 117 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index 11660195..d870ddac 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -7,26 +7,31 @@
-
+
+ class="text-center text-black">
-
-

- - -

+
-
-

- {{ formattedDeductible }} -

-
-

- {{ formattedServicePrice }} -

-

Your deductible is: {{ formattedDeductible }}

+
+
+
+ {{ formattedDeductible }} +
+ {{ formattedServicePrice }} +
+
Your deductible is: + {{ formattedDeductible }}
-

-

-
- - - -
- + class="body-text">
- + +
part.requiresRecalibration).length > 0) { - // return this.unverifiedADASNextStepsBodyText; - // } - // // if non-ADAS, display NonADASNextSteps - // else { - // return this.unverifiedNonADASNextStepsBodyText; - // } - // } - // }, continueWithSchedulingBodyText() { return this.getCmsContent("continueWithSchedulingCopy", "BodyText"); }, @@ -256,12 +221,6 @@ export default { var damageString = getDamageString(); return damageString == "match" ? "" : damageString; }, - // selectedVehiclePolicyInfo() { - // const matchingVehicle = this.policyVehicles.filter( - // (vehicle) => vehicle.vin === store.order.vehicle.vin - // ) - // return matchingVehicle; - // }, vehicleDeductible() { if (this.coverageVerified) { if (store.order.damage.isRepair) { @@ -273,19 +232,19 @@ export default { return replaceDeductible; } } - //console.log(this.selectedVehicle[0].coverages[0].deductible); - //const deductible = this.selectedVehiclePolicyInfo[0].coverages[0].deductible; - //console.log(!this.selectedVehiclePolicyInfo[0].coverages[0]); - //return deductible; }, formattedDeductible() { return this.getDeductibleString(this.vehicleDeductible); }, isDeductibleZero() { - return this.vehicleDeductible === 0; + if (this.coverageVerified && !this.verifiedNoComp) { + return this.vehicleDeductible === 0; + } }, deductibleOverZero() { - return this.vehicleDeductible > 0; + if (this.coverageVerified && !this.verifiedNoComp) { + return !this.isDeductibleZero; + } }, coverageVerified() { return true; @@ -301,14 +260,14 @@ export default { } }, verifiedITAC() { - if (this.coverageVerified) { + if (this.coverageVerified && !this.verifiedNoComp) { if (this.vehicleDeductible > this.totalServicePrice) { return true; } } }, verifiedDeductible() { - if (this.coverageVerified) { + if (this.coverageVerified && !this.verifiedNoComp) { if (this.totalServicePrice > this.vehicleDeductible) { return true; } @@ -344,9 +303,19 @@ export default { return this.getServicePriceString(this.totalServicePrice); }, costSavings() { - return this.getITACCostSavings(this.vehicleDeductible, this.totalServicePrice); + }, + questionText() { + return this.getCmsContent("ServiceProviderQuestion", "QuestionText"); + }, + answersFromCms() { + return this.getCmsContent("ServiceProviderQuestion", "Answers"); + }, + displayQuote() { + if (this.verifiedITAC || this.verifiedNoComp) { + return true; + } } }, methods: { @@ -356,6 +325,35 @@ export default { } return false; }, + async forwardButtonAction() { + return await this.navigateForward(); + + }, + async navigateForward() { + if (this.coverageUnverified || this.verifiedDeductible) { + this.$router.navigate( + this.navigationScenarios.CLICKED_FORWARD, + this.$route + ) + } + else if (this.verifiedITAC || this.verifiedNoComp) { + if (this.selectedProvider === "Safelite") { + this.$router.navigate( + this.navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE, + this.$route + ) + } + else if (store.issConfig.enableTPAFlow){ + this.$router.navigate( + this.navigationScenarios.CLICKED_FORWARD_WITH_THIRD_PARTY, + this.$route + ) + } + else { + //display TPA bailout modal + } + } + }, openModalAction(modalName) { this.$refs[modalName.args].openModal(); }, @@ -396,6 +394,10 @@ export default { return this.nonADASReplace; case 'nonADASRepair': return this.nonADASRepair; + case 'deductibleOverZero': + return this.deductibleOverZero + case 'isDeductibleZero': + return this.isDeductibleZero default: return null; } @@ -404,8 +406,6 @@ export default { return lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice; }, getDeductibleString(deductible) { - console.log(this.vehicleDeductible); - console.log(this.deductibleOverZero); const formattedDeductibleFloat = parseFloat(deductible).toFixed(2); return '$' + formattedDeductibleFloat; }, @@ -418,38 +418,44 @@ export default { return savings; } }, + watch: { + selectedProvider() { + if (this.selectedProvider === "Safelite") { + this.$refs.siteFooter.updateButtonText('Continue with Safelite'); + } + else { + this.$refs.siteFooter.updateButtonText('Continue'); + } + } + } }; diff --git a/src/router/router-constants/navigation-scenarios.js b/src/router/router-constants/navigation-scenarios.js index 5331ac76..fecad35b 100644 --- a/src/router/router-constants/navigation-scenarios.js +++ b/src/router/router-constants/navigation-scenarios.js @@ -54,6 +54,8 @@ const navigationScenarios = { // Coverage Statement CLICKED_BACK_WITH_REPAIR: "CLICKED_BACK_WITH_REPAIR", + CLICKED_FORWARD_WITH_SAFELITE: "CLICKED_FORWARD_WITH_SAFELITE", + CLICKED_FORWARD_WITH_THIRD_PARTY: "CLICKED_FORWARD_WITH_THIRD_PARTY", //Provider Preference CLICKED_FORWARD_WITH_SAFELITE: "CLICKED_FORWARD_WITH_SAFELITE", diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index bebaad84..46b4e0a1 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -430,6 +430,14 @@ const routingTable = function(store) { scenario: navigationScenarios.CLICKED_FORWARD, destinationIssPageValue: issPageValues.PROVIDER_PREFERENCE }, + { + scenario: navigationScenarios.CLICKED_FORWARD_WITH_SAFELITE, + destinationIssPageValue: issPageValues.SERVICE_LOCATION + }, + { + scenario: navigationScenarios.CLICKED_FORWARD_WITH_THIRD_PARTY, + destinationIssPageValue: issPageValues.TPA_SEARCH + }, ] }, { From 89ace9c7f251000337799b1f26ea88fc3c3a8b82 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Fri, 14 Jul 2023 12:05:40 -0400 Subject: [PATCH 09/14] all coverage content displaying correctly --- .../coverage-statement/coverage-statement.vue | 267 ++++++++++-------- 1 file changed, 152 insertions(+), 115 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index d870ddac..f56bd073 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -24,21 +24,25 @@ v-if="verifiedDeductible" class="d-flex justify-content-center cost"> {{ formattedDeductible }} +
+ class="d-flex justify-content-center cost mb-1"> {{ formattedServicePrice }}
Your deductible is: - {{ formattedDeductible }} -
+ v-if="verifiedITAC" + class="d-flex justify-content-center mb-4"> + {{ deductibleText }} + {{ formattedDeductible }}
@@ -77,7 +81,7 @@
- +