From 212b51bace3aca9409ed8ac1adb08139f926909b Mon Sep 17 00:00:00 2001 From: Carl Nation Date: Tue, 9 Jun 2026 20:43:56 -0400 Subject: [PATCH 1/3] CASH-2844 save fields need for work order submission CASH-2844 save fields need for work order submission --- src/helpers/cms-content-helper.js | 55 ++++++++----- .../coverage-statement/coverage-statement.vue | 4 +- .../duplicate-check/duplicate-check.vue | 2 +- src/layouts/endorsements/endorsements.vue | 2 +- .../insurance-details/insurance-details.vue | 30 ++++--- src/layouts/policy-driver/policy-driver.vue | 2 +- .../policy-info-submitted.vue | 2 +- src/layouts/policy-info/policy-info.vue | 2 +- src/layouts/policy-vehicle/policy-vehicle.vue | 2 +- .../recalibration-info/recalibration-info.vue | 2 +- src/layouts/verify-details/verify-details.vue | 2 +- src/mixins/analytics-mixin.js | 1 + src/store/index.js | 80 ++++++++++++------- 13 files changed, 120 insertions(+), 66 deletions(-) diff --git a/src/helpers/cms-content-helper.js b/src/helpers/cms-content-helper.js index 450875d0f..e5e189908 100644 --- a/src/helpers/cms-content-helper.js +++ b/src/helpers/cms-content-helper.js @@ -3,29 +3,48 @@ import store from "@/store"; import { dynamicStrings } from "@/constants/dynamic-strings"; export function fetchCmsContentForPage(fmgPage) { - return store.dispatch(storeActions.GET_PAGE_DATA, { pageName: fmgPage }).then((response) => { - const pageDataFromCms = {}; + return store + .dispatch(storeActions.GET_PAGE_DATA, { pageName: fmgPage }) + .then((response) => { + const pageDataFromCms = {}; - response.data.Result.forEach((widget) => { - let widgetWithReplacements = findAndReplaceGlobalStateValues(widget.Model, widget.Name); + response.data.Result.forEach((widget) => { + let widgetWithReplacements = findAndReplaceGlobalStateValues( + widget.Model, + widget.Name + ); - // If we already have this widget, push it on the collection - if (widgetWithReplacements.Name in pageDataFromCms) { - pageDataFromCms[widgetWithReplacements.Name].push(widgetWithReplacements.Model); - return; + // If we already have this widget, push it on the collection + if (widgetWithReplacements.Name in pageDataFromCms) { + pageDataFromCms[widgetWithReplacements.Name].push(widgetWithReplacements.Model); + return; + } + + pageDataFromCms[widgetWithReplacements.Name] = [widgetWithReplacements.Model]; + }); + + Object.keys(pageDataFromCms).forEach((key) => { + if (pageDataFromCms[key].length === 1) { + pageDataFromCms[key] = pageDataFromCms[key][0]; + } + }); + + return pageDataFromCms; + }) + .catch((error) => { + // Client-specific config pages are optional. When one doesn't exist + // the CMS returns a 404 - treat that as "no overrides" instead of an + // error so callers receive an empty config object. + const isClientConfigPage = typeof fmgPage === "string" && fmgPage.startsWith("client_"); + const status = error?.status ?? error?.response?.status; + const isNotFound = status == 404; + + if (isClientConfigPage && isNotFound) { + return {}; } - pageDataFromCms[widgetWithReplacements.Name] = [widgetWithReplacements.Model]; + return Promise.reject(error); }); - - Object.keys(pageDataFromCms).forEach((key) => { - if (pageDataFromCms[key].length === 1) { - pageDataFromCms[key] = pageDataFromCms[key][0]; - } - }); - - return pageDataFromCms; - }); } // Function to convert a string, into a matching global state item. diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index acdab2f17..f3269bcd9 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -127,7 +127,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `coverage-statement clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) @@ -182,7 +182,7 @@ export default { return this.clientConfig?.ClientLogoWidget?.Image || ""; }, deductibleAmount() { - return this.$store.getters.order.policy.currentDeductible; + return Number(this.$store.getters.order.policy.currentDeductible); }, cashPrice() { const lineItems = this.$store.getters.order.lineItems; diff --git a/src/layouts/duplicate-check/duplicate-check.vue b/src/layouts/duplicate-check/duplicate-check.vue index 587babde5..40f0a8c0d 100644 --- a/src/layouts/duplicate-check/duplicate-check.vue +++ b/src/layouts/duplicate-check/duplicate-check.vue @@ -94,7 +94,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `duplicate-check clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/endorsements/endorsements.vue b/src/layouts/endorsements/endorsements.vue index 0d6591544..7aa027dec 100644 --- a/src/layouts/endorsements/endorsements.vue +++ b/src/layouts/endorsements/endorsements.vue @@ -90,7 +90,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `endorsements clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/insurance-details/insurance-details.vue b/src/layouts/insurance-details/insurance-details.vue index 0f3f483f1..d4a686fa1 100644 --- a/src/layouts/insurance-details/insurance-details.vue +++ b/src/layouts/insurance-details/insurance-details.vue @@ -80,8 +80,8 @@ isRequired class="mb-4" cmsWidgetName="ApartmentWidget" - v-model="apartment" - inputId="apartment" /> + v-model="streetAddress2" + inputId="streetAddress2" /> { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-driver clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/policy-info-submitted/policy-info-submitted.vue b/src/layouts/policy-info-submitted/policy-info-submitted.vue index 901480407..5afec595d 100644 --- a/src/layouts/policy-info-submitted/policy-info-submitted.vue +++ b/src/layouts/policy-info-submitted/policy-info-submitted.vue @@ -78,7 +78,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-info-submitted clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/policy-info/policy-info.vue b/src/layouts/policy-info/policy-info.vue index f752c1611..300429a34 100644 --- a/src/layouts/policy-info/policy-info.vue +++ b/src/layouts/policy-info/policy-info.vue @@ -410,7 +410,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-infoclientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/policy-vehicle/policy-vehicle.vue b/src/layouts/policy-vehicle/policy-vehicle.vue index 8963d444a..d936fa954 100644 --- a/src/layouts/policy-vehicle/policy-vehicle.vue +++ b/src/layouts/policy-vehicle/policy-vehicle.vue @@ -83,7 +83,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `policy-vehicle clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/layouts/recalibration-info/recalibration-info.vue b/src/layouts/recalibration-info/recalibration-info.vue index 8666db280..032348457 100644 --- a/src/layouts/recalibration-info/recalibration-info.vue +++ b/src/layouts/recalibration-info/recalibration-info.vue @@ -96,7 +96,7 @@ export default { const showSaveProgressModal = !(emailFromStore?.length > 0); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; vm.showSaveProgressModal = showSaveProgressModal; vm.recalibrationInfoDesktopImage = vm.getCmsContent("AdasInfoDesktopWidget", "Image"); vm.recalibrationInfoMobileImage = vm.getCmsContent("AdasInfoMobileWidget", "Image"); diff --git a/src/layouts/verify-details/verify-details.vue b/src/layouts/verify-details/verify-details.vue index 9fcf1c375..5fcf78049 100644 --- a/src/layouts/verify-details/verify-details.vue +++ b/src/layouts/verify-details/verify-details.vue @@ -138,7 +138,7 @@ export default { const resultMap = await settleAllPromises(promiseResultMap); next((vm) => { vm.setCmsContent(resultMap.cmsContent); - vm.clientConfig = resultMap.clientConfig; + vm.clientConfig = resultMap.clientConfig ?? {}; debugLog( `verify-details clientConfig::${clientConfigPageName}`, JSON.stringify(vm.clientConfig) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index b33ede8ae..fa56795a7 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -264,6 +264,7 @@ export default { sessionData.coverageSubStatus = order?.payment?.insuranceCoverage?.coverageSubStatus; sessionData.isNoComp = order?.policy?.isNoComp; sessionData.isItac = order?.policy?.isItac; + sessionData.isClaimAndCoverage = order.payment.isClaimAndCoverage; sessionData.subTotalPrice = getSubTotal(order?.lineItems); sessionData.totalPrice = getAmountDue(order?.lineItems, true); sessionData.userAgent = navigator.userAgent; diff --git a/src/store/index.js b/src/store/index.js index 3f2cf5e0d..fda879140 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -178,11 +178,13 @@ const getDefaultState = () => { insuranceCompanyName: null, phoneNumber: null, phoneExtension: null, - streetAddress: null, - apartment: null, - city: null, - state: null, - zipCode: null, + policyAddress: { + streetAddress: null, + streetAddress2: null, + city: null, + state: null, + zipCode: null, + }, dateOfBirth: null, lossTime: null, lossLocation: null, @@ -361,19 +363,19 @@ export const mutations = { state.order.policy.phoneExtension = phoneExtension; }, updateStreetAddress(state, streetAddress) { - state.order.policy.streetAddress = streetAddress; + state.order.policy.policyAddress.streetAddress = streetAddress; }, - updateApartment(state, apartment) { - state.order.policy.apartment = apartment; + updateStreetAddress2(state, streetAddress2) { + state.order.policy.policyAddress.streetAddress2 = streetAddress2; }, updateCity(state, city) { - state.order.policy.city = city; + state.order.policy.policyAddress.city = city; }, updateState(state, stateValue) { - state.order.policy.state = stateValue; + state.order.policy.policyAddress.state = stateValue; }, updateZipCode(state, zipCode) { - state.order.policy.zipCode = zipCode; + state.order.policy.policyAddress.zipCode = zipCode; }, updateClaimNumber(state, claimNumber) { state.order.policy.claimNumber = claimNumber; @@ -405,11 +407,11 @@ export const mutations = { state.order.policy.policyNumber = null; state.order.policy.claimNumber = null; state.order.policy.insuranceCompanyName = null; - state.order.policy.streetAddress = null; - state.order.policy.apartment = null; - state.order.policy.city = null; - state.order.policy.state = null; - state.order.policy.zipCode = null; + state.order.policy.policyAddress.streetAddress = null; + state.order.policy.policyAddress.streetAddress2 = null; + state.order.policy.policyAddress.city = null; + state.order.policy.policyAddress.state = null; + state.order.policy.policyAddress.zipCode = null; state.order.damage.dateOfLoss = null; state.order.damage.damageCause = null; }, @@ -563,11 +565,11 @@ export const mutations = { updateInsuranceDetails(state, insuranceDetails) { if (insuranceDetails) { state.order.policy.policyNumber = insuranceDetails.policyNumber; - state.order.policy.streetAddress = insuranceDetails.streetAddress; - state.order.policy.apartment = insuranceDetails.apartment; - state.order.policy.city = insuranceDetails.city; - state.order.policy.state = insuranceDetails.state; - state.order.policy.zipCode = insuranceDetails.zipCode; + state.order.policy.policyAddress.streetAddress = insuranceDetails.streetAddress; + state.order.policy.policyAddress.streetAddress2 = insuranceDetails.streetAddress2; + state.order.policy.policyAddress.city = insuranceDetails.city; + state.order.policy.policyAddress.state = insuranceDetails.state; + state.order.policy.policyAddress.zipCode = insuranceDetails.zipCode; state.order.policy.claimNumber = insuranceDetails.claimNumber; state.order.policy.phoneNumber = insuranceDetails.phoneNumber; state.order.policy.phoneExtension = insuranceDetails.phoneExtension; @@ -577,8 +579,15 @@ export const mutations = { state.order.policy.lastName = insuranceDetails.lastName; state.order.policy.lossLocation = insuranceDetails.lossLocation; state.order.policy.subrogation = insuranceDetails.subrogation; - state.order.policy.streetAddress = insuranceDetails.streetAddress; + state.order.policy.currentDeductible = insuranceDetails.currentDeductible; + state.order.policy.originalDeductible = insuranceDetails.originalDeductible; + state.order.payment.insuranceCoverage.coverageStatus = coverageStatusValue( + insuranceDetails.coverageStatus + ); + state.order.payment.insuranceCoverage.coverageSubStatus = + insuranceDetails.coverageSubStatus; } + console.log("::::" + state.order.payment.insuranceCoverage.coverageStatus); }, updateDamageDetails(state, damageDetails) { if (damageDetails) { @@ -976,13 +985,17 @@ export const mutations = { ? true : false; state.order.policy.policyNumber = sessionInformation.order.policy?.policyNumber; + state.order.policy.claimNumber = sessionInformation.order.policy?.claimNumber; state.order.policy.insuranceCompanyName = sessionInformation.order.policy?.insuranceCompanyName; - //state.order.policy.streetAddress = sessionInformation.order.policy?.streetAddress; - //state.order.policy.apartment = sessionInformation.order.policy?.apartment; - //state.order.policy.city = sessionInformation.order.policy?.city; - //state.order.policy.state = sessionInformation.order.policy?.state; - //state.order.policy.zipCode = sessionInformation.order.policy?.zipCode; + state.order.policy.policyAddress.streetAddress = + sessionInformation.order.policy?.address?.streetAddress; + state.order.policy.address.streetAddress2 = + sessionInformation.order.policy?.address?.streetAddress2; + state.order.policy.policyAddress.city = sessionInformation.order.policy?.address?.city; + state.order.policy.policyAddress.state = sessionInformation.order.policy?.address?.state; + state.order.policy.policyAddress.zipCode = + sessionInformation.order.policy?.address?.zipCode; state.order.policy.isNoComp = coverageTypeValue(sessionInformation?.order.insuranceCoverage.coverageType) === coverageType.NOCOMP @@ -1818,6 +1831,7 @@ export const actions = { coverageSubStatus, isNoComp, isItac, + isClaimAndCoverage, subTotalPrice, totalPrice, userAgent, @@ -1868,6 +1882,7 @@ export const actions = { deductible: deductible, isNoComp: isNoComp, isItac: isItac, + isClaimAndCoverage: isClaimAndCoverage, subTotalPrice: subTotalPrice, totalPrice: totalPrice, userAgent: userAgent, @@ -2648,6 +2663,8 @@ export const actions = { moldingQuestionAnswers: order.damage.moldingQuestionAnswers, capabilityQuestionAnswers: order.damage.capabilityQuestionAnswers, installOemGlass: order.damage.installOemGlass, + dateOfLoss: order.damage.dateOfLoss, + damageCause: order.damage.damageCause, }, lineItems: { glassParts: lineItems.glassParts, @@ -2699,6 +2716,15 @@ export const actions = { isNoComp: order.policy?.isNoComp, currentDeductible: order.policy?.currentDeductible, originalDeductible: order.policy?.originalDeductible, + policyAddress: { + streetAddress: order.policy?.policyAddress?.streetAddress, + streetAddress2: order.policy?.policyAddress?.streetAddress2, + city: order.policy?.policyAddress?.city, + state: order.policy?.policyAddress?.state, + zipCode: order.policy?.policyAddress?.zipCode, + }, + policyNumber: order.policy?.policyNumber, + claimNumber: order.policy?.claimNumber, }, serviceLocation: { streetAddress: order.serviceLocation.address, From efafef55e579637fd961c1052fc826cc098e8145 Mon Sep 17 00:00:00 2001 From: Carl Nation Date: Thu, 11 Jun 2026 13:23:00 -0400 Subject: [PATCH 2/3] CASH-2844 new fields CASH-2844 new fields for logging --- src/mixins/analytics-mixin.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index fa56795a7..0a3b43f56 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -265,6 +265,8 @@ export default { sessionData.isNoComp = order?.policy?.isNoComp; sessionData.isItac = order?.policy?.isItac; sessionData.isClaimAndCoverage = order.payment.isClaimAndCoverage; + sessionData.vinRequired = order.vehicle.vinRequired ?? false; + sessionData.installOemGlass = order.damage?.installOemGlass ?? false; sessionData.subTotalPrice = getSubTotal(order?.lineItems); sessionData.totalPrice = getAmountDue(order?.lineItems, true); sessionData.userAgent = navigator.userAgent; From a53a507b7603ab5de6d3dac43eafb2a1fdb958d0 Mon Sep 17 00:00:00 2001 From: Carl Nation Date: Sun, 14 Jun 2026 04:02:54 -0400 Subject: [PATCH 3/3] CASH-2844 guard for null object CASH-2844 guard for null object --- src/store/index.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index fda879140..18c7f3cbc 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -988,14 +988,17 @@ export const mutations = { state.order.policy.claimNumber = sessionInformation.order.policy?.claimNumber; state.order.policy.insuranceCompanyName = sessionInformation.order.policy?.insuranceCompanyName; - state.order.policy.policyAddress.streetAddress = - sessionInformation.order.policy?.address?.streetAddress; - state.order.policy.address.streetAddress2 = - sessionInformation.order.policy?.address?.streetAddress2; - state.order.policy.policyAddress.city = sessionInformation.order.policy?.address?.city; - state.order.policy.policyAddress.state = sessionInformation.order.policy?.address?.state; - state.order.policy.policyAddress.zipCode = - sessionInformation.order.policy?.address?.zipCode; + + if (!state.order.policy.policyAddress) { + state.order.policy.policyAddress = {}; + } + const sessionPolicyAddress = sessionInformation.order.policy?.address; + state.order.policy.policyAddress.streetAddress = sessionPolicyAddress?.streetAddress; + state.order.policy.policyAddress.streetAddress2 = sessionPolicyAddress?.streetAddress2; + state.order.policy.policyAddress.city = sessionPolicyAddress?.city; + state.order.policy.policyAddress.state = sessionPolicyAddress?.state; + state.order.policy.policyAddress.zipCode = sessionPolicyAddress?.zipCode; + state.order.policy.isNoComp = coverageTypeValue(sessionInformation?.order.insuranceCoverage.coverageType) === coverageType.NOCOMP