diff --git a/src/digital-components/sierra-webchat/sierra-webchat.vue b/src/digital-components/sierra-webchat/sierra-webchat.vue index 77e5675f1..cc88b5433 100644 --- a/src/digital-components/sierra-webchat/sierra-webchat.vue +++ b/src/digital-components/sierra-webchat/sierra-webchat.vue @@ -44,21 +44,40 @@ export default { }, getSierraContext() { const glassDamage = store.getters?.order?.damage?.glassToReplace; - const glassType = - glassDamage && glassDamage.length > 0 - ? glassDamage.length > 1 - ? "Multiglass" - : glassDamage[0].glassType // todo: clarify? - : ""; + let glassType = ""; + for (let i = 0; i < glassDamage?.length; i++) { + if (i !== 0) { + glassType += "/"; + } + glassType += glassDamage[i].glassLocation; + } - const damageType = store.getters.order?.damage?.isRepair ? "repair" : "replace"; + const hasGlassDamage = glassDamage?.length > 0; + const hasRepairFlag = store.getters.order?.damage?.isRepair; - const paymentType = store.getters.oreder?.payment?.isInsurance ? "insurance" : "cash"; + let damageType = ""; + if (hasRepairFlag) { + damageType = "repair"; + } else if (hasGlassDamage) { + damageType = "replace"; + } + + const isInsurance = store.getters.order?.payment?.isInsurance; + + let paymentType = ""; + if (isInsurance) { + paymentType = "insurance"; + } else if (isInsurance !== null && isInsurance !== undefined) { + paymentType = "cash"; + } const glassParts = store.getters.order?.lineItems?.glassParts; - const partId = glassParts && glassParts.length > 0 ? glassParts[0].partId : ""; + const partNumber = glassParts && glassParts.length > 0 ? glassParts[0].partNumber : ""; - const packageData = deepClone(store.getters?.pageData(routeData.QUOTE.name)); + const packageData = deepClone(store.getters?.pageData(routeData.QUOTE.name)?.packages); + + const recalFlag = store.getters?.isRecalibrationOnOrder; + const displayRecalFlag = glassParts?.length > 0 ? recalFlag : ""; return { current_page: this.pageName, @@ -66,13 +85,13 @@ export default { vehicle_make: store.getters.order?.vehicle?.make ?? "", vehicle_model: store.getters.order?.vehicle?.model ?? "", vehicle_style: store.getters.order?.vehicle?.style ?? "", - service_zip: store.getters.order?.serviceLocation?.serviceZip ?? "", + service_zip: store.getters.order?.serviceLocation?.zipCode ?? "", glass_type: glassType ?? "", damage_type: damageType ?? "", payment_type: paymentType ?? "", quote: packageData ?? [], - part_id: partId ?? "", - recalibration: store.getters?.isRecalibrationOnOrder ?? "", + part_id: partNumber ?? "", + recalibration: displayRecalFlag ?? "", }; }, launchSierraChat() { diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 4e5b6b51b..ac2901ae0 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -172,6 +172,7 @@ import { routeData } from "@/router/constants/routes"; import { consumeQueryFromStash } from "@/router/methods/helpers/querystring-stash"; import { storeMutations } from "@/constants/store-mutations"; import { debugLog } from "@/helpers/debug-log-helper"; +import { savePageData } from "@/router/methods/helpers/save-page-data"; defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); @@ -669,14 +670,7 @@ export default { async closeSaveProgressPopup() { this.showSaveProgressPopup = false; - await this.dispatchStoreAction( - storeActions.SAVE_PAGE_DATA, - { - page: routeData.QUOTE.name, - data: { saveProgressPopupSkipped: true }, - }, - false - ); + savePageData(this.pageName, { saveProgressPopupSkipped: true }, true); if (this.skipToInsurance) { // skip ahead now if in IGQ skip experiment 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 cc343455e..1ea1b7cf2 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -442,7 +442,7 @@ export default { price: ans.buttonAuxillaryCopy, })); - await savePageData(this.pageName, { packages: toLog }); + await savePageData(this.pageName, { packages: toLog }, true); }, }, components: { diff --git a/src/router/methods/helpers/save-page-data.js b/src/router/methods/helpers/save-page-data.js index 1299f8900..9b57c635b 100644 --- a/src/router/methods/helpers/save-page-data.js +++ b/src/router/methods/helpers/save-page-data.js @@ -1,10 +1,15 @@ import store from "@/store"; import { storeMutations } from "@/constants/store-mutations"; -export async function savePageData(page, data) { +export async function savePageData(page, data, merge = false) { const existingPageData = store.getters.pageData(page); - const dataToSave = Object.keys(data).length > 0 ? data : (existingPageData ?? {}); + let dataToSave; + if (merge) { + dataToSave = Object.assign(existingPageData ?? {}, data ?? {}); + } else { + dataToSave = Object.keys(data).length > 0 ? data : (existingPageData ?? {}); + } // Save data if non-null store.commit(storeMutations.UPDATE_PAGE_DATA, { page: page, data: dataToSave }); diff --git a/src/store/index.js b/src/store/index.js index 4a428c9e2..3797cea98 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -3311,16 +3311,17 @@ export const actions = { } //Optional for specific YMMSs switch (context.state.order.vehicle.make.toLowerCase()) { - case "mercedes benz": - case "volkswagen": - case "audi": case "porsche": return true; default: } if ( - context.state.order.vehicle.make.toLowerCase() === "bmw" && - context.state.order.vehicle.year <= 2017 + (context.state.order.vehicle.make.toLowerCase() === "bmw" && + context.state.order.vehicle.year < 2010) || + (context.state.order.vehicle.make.toLowerCase() === "volkswagen" && + context.state.order.vehicle.year < 2010) || + (context.state.order.vehicle.make.toLowerCase() === "audi" && + context.state.order.vehicle.year < 2010) ) return true; diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 2119f1e8b..71e2ec894 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -4242,12 +4242,13 @@ describe("isVinOptionalVehicle", () => { const testVehicles = [ ["2017", "acura", false], ["2018", "bmw", false], - ["2017", "bmw", true], - ["2016", "bmw", true], - ["2016", "mercedes benz", true], - ["2016", "volkswagen", true], - ["2016", "audi", true], + ["2009", "bmw", true], + ["2016", "bmw", false], + ["2016", "mercedes benz", false], + ["2016", "volkswagen", false], + ["2016", "audi", false], ["2016", "porsche", true], + ["2009", "audi", true], ]; test.each(testVehicles)( "%s %s should skip vin lookup is %s",