From 8671d74913b2dfe6de252a396fef5951ac6c3477 Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Tue, 12 May 2026 11:00:45 -0400 Subject: [PATCH 1/6] CASH-2563: Add bailout to more pages. Only show zip input if we don't have one. --- src/layouts/bailout/bailout.vue | 2 ++ src/router/constants/routing-table.js | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/src/layouts/bailout/bailout.vue b/src/layouts/bailout/bailout.vue index ae5600e08..79299b713 100644 --- a/src/layouts/bailout/bailout.vue +++ b/src/layouts/bailout/bailout.vue @@ -43,6 +43,8 @@ validationRules="phone-number-required" /> Date: Wed, 13 May 2026 15:05:25 -0400 Subject: [PATCH 2/6] CASH-2563: Create submittedState and UI updates --- src/layouts/bailout-success/bailout-success.vue | 8 +++++++- src/router/methods/before-each.js | 6 +++++- src/router/methods/navigate.js | 12 ++++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/layouts/bailout-success/bailout-success.vue b/src/layouts/bailout-success/bailout-success.vue index 97f186ca6..57da702a0 100644 --- a/src/layouts/bailout-success/bailout-success.vue +++ b/src/layouts/bailout-success/bailout-success.vue @@ -13,7 +13,8 @@ id="btn-vehicle-not-listed" :isPrimary="true" :buttonText="ReturnToHomeButtonText" - class="mb-3" + loaderColor="white" + class="w-100 mb-3" @click-event="forwardButtonAction" /> @@ -27,6 +28,8 @@ import funnelHeader from "@/fmg-components/funnel-header/funnel-header"; import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header"; import buttonMain from "@/ux-components/button-main/button-main"; import store from "@/store"; +import baseMixin from "@/mixins/base-mixin.js"; +import { storeActions } from "@/constants/store-actions"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; @@ -39,6 +42,9 @@ export default { }, async beforeRouteEnter(to, from, next) { + // Clear order + await baseMixin.methods.dispatchStoreAction(storeActions.CREATE_SUBMITTED_STATE); + // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.name); diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 237014ee6..39cb2df47 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -77,7 +77,11 @@ export async function beforeEach(to, from) { // Block navigation if an order has been submitted. if (window.sessionStorage.getItem(sessionStorageKeyConstants.SUBMITTED_STATE) !== null) { - const exceptionPages = [FUNNEL_START_PAGE.name, routeData.CONFIRMATION.name]; + const exceptionPages = [ + FUNNEL_START_PAGE.name, + routeData.CONFIRMATION.name, + routeData.BAILOUT_SUCCESS.name, + ]; if (!exceptionPages.some((name) => to.name === name) && !isVirtualRoute(to.name)) { router.push({ diff --git a/src/router/methods/navigate.js b/src/router/methods/navigate.js index 1cdd87aac..63e20d96c 100644 --- a/src/router/methods/navigate.js +++ b/src/router/methods/navigate.js @@ -1,7 +1,8 @@ -import { saveSession } from "@/helpers/heritage-integration/order-helper"; +import { saveSession, submitBailout } from "@/helpers/heritage-integration/order-helper"; import { buildManualUrl } from "@/router/methods/helpers/build-manual-url"; import { getDestination } from "@/router/methods/helpers/get-destination"; import { savePageData } from "@/router/methods/helpers/save-page-data"; +import { navigationScenarios } from "@/router/constants/navigation-scenarios"; import router from "@/router"; import store from "@/store"; @@ -39,7 +40,14 @@ async function navigate(scenario, currentPageName, withSaving = false, forceTopL store.getters?.applicationUser?.savedSessionId || store.getters?.order?.customer?.emailAddress ) { - await saveSession({ pageNameToLog: nextPage.name }); + if ( + scenario.toUpperCase() === navigationScenarios.CLICKED_FORWARD && + currentPageName.toUpperCase() === navigationScenarios.BAILOUT + ) { + await submitBailout({ pageNameToLog: nextPage.name }); + } else { + await saveSession({ pageNameToLog: nextPage.name }); + } } } From 602591d65899dd7d8652099ff3d8a52ffabcb3ec Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Thu, 14 May 2026 11:14:10 -0400 Subject: [PATCH 3/6] CASH-2563: Bailout page routing updates --- src/layouts/bailout/bailout.spec.js | 12 ++++++++++++ src/layouts/bailout/bailout.vue | 2 +- src/router/constants/routing-table.js | 3 ++- src/router/methods/before-each.js | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/layouts/bailout/bailout.spec.js b/src/layouts/bailout/bailout.spec.js index 905f9e5a0..f71899e49 100644 --- a/src/layouts/bailout/bailout.spec.js +++ b/src/layouts/bailout/bailout.spec.js @@ -36,9 +36,21 @@ describe("bailout.vue", () => { expect(wrapper.findComponent({ name: "navbar" }).exists()).toBe(true); }); + test("arePagePrerequisitesValid should be false ", async () => { + //Arrange + const { wrapper } = setupMocks(); + + //Act + let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); + + //Assert + expect(arePagePrerequisitesValid).toBe(false); + }); + test("arePagePrerequisitesValid should be true ", async () => { //Arrange const { wrapper } = setupMocks(); + wrapper.vm.getBailoutCodeFromStore = jest.fn().mockReturnValue("BAILOUT_CODE"); //Act let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); diff --git a/src/layouts/bailout/bailout.vue b/src/layouts/bailout/bailout.vue index 79299b713..7c5edf07c 100644 --- a/src/layouts/bailout/bailout.vue +++ b/src/layouts/bailout/bailout.vue @@ -244,7 +244,7 @@ export default { } }, arePagePrerequisitesValid() { - return true; + return this.getBailoutCodeFromStore() !== null; }, }, diff --git a/src/router/constants/routing-table.js b/src/router/constants/routing-table.js index 3c1326610..af8cd41d7 100644 --- a/src/router/constants/routing-table.js +++ b/src/router/constants/routing-table.js @@ -1,5 +1,6 @@ import { routeData } from "@/router/constants/routes"; import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { FUNNEL_START_PAGE } from "@/router/constants/routes"; import store from "@/store"; import { paymentMethods } from "@/constants/payment-method-constants"; @@ -828,7 +829,7 @@ const routingTable = function () { maps: [ { scenario: navigationScenarios.CLICKED_BACK_TO_HOMEPAGE, - destinationPageData: routeData.RESTART, + destinationPageData: FUNNEL_START_PAGE, }, ], }, diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 39cb2df47..0c5fb17ae 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -80,6 +80,7 @@ export async function beforeEach(to, from) { const exceptionPages = [ FUNNEL_START_PAGE.name, routeData.CONFIRMATION.name, + routeData.BAILOUT.name, routeData.BAILOUT_SUCCESS.name, ]; From f9d39f5d197057c7abcce5c9d533357b9ebd466d Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Thu, 14 May 2026 13:23:08 -0400 Subject: [PATCH 4/6] CASH-2563: Back navigation on bailout submit logic --- src/layouts/bailout-success/bailout-success.vue | 9 +++++---- src/router/methods/before-each.js | 16 +++++++++++----- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/layouts/bailout-success/bailout-success.vue b/src/layouts/bailout-success/bailout-success.vue index 57da702a0..5def1ae22 100644 --- a/src/layouts/bailout-success/bailout-success.vue +++ b/src/layouts/bailout-success/bailout-success.vue @@ -73,10 +73,11 @@ export default { }, arePagePrerequisitesValid() { return ( - store.getters.order.customer.firstName && - store.getters.order.customer.lastName && - store.getters.order.customer.emailAddress && - store.getters.order.customer.phoneNumber + (store.getters.order.customer.firstName && + store.getters.order.customer.lastName && + store.getters.order.customer.emailAddress && + store.getters.order.customer.phoneNumber) || + baseMixin.methods.hasSubmittedOrder() ); }, }, diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 0c5fb17ae..9388a0865 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -80,15 +80,21 @@ export async function beforeEach(to, from) { const exceptionPages = [ FUNNEL_START_PAGE.name, routeData.CONFIRMATION.name, - routeData.BAILOUT.name, routeData.BAILOUT_SUCCESS.name, ]; if (!exceptionPages.some((name) => to.name === name) && !isVirtualRoute(to.name)) { - router.push({ - name: routeData.CONFIRMATION.name, - }); - return false; + if (to.name === routeData.BAILOUT.name) { + router.push({ + name: routeData.BAILOUT_SUCCESS.name, + }); + return false; + } else { + router.push({ + name: routeData.CONFIRMATION.name, + }); + return false; + } } } From ddcd8e5cf4f2a793ad5ef5402f1643b5217a7778 Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Fri, 15 May 2026 10:18:00 -0400 Subject: [PATCH 5/6] CASH-2563: Update bailout navigation blocking --- src/router/methods/before-each.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 9388a0865..568cf312c 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -76,15 +76,17 @@ export async function beforeEach(to, from) { } // Block navigation if an order has been submitted. - if (window.sessionStorage.getItem(sessionStorageKeyConstants.SUBMITTED_STATE) !== null) { - const exceptionPages = [ - FUNNEL_START_PAGE.name, - routeData.CONFIRMATION.name, - routeData.BAILOUT_SUCCESS.name, - ]; + const submittedState = window.sessionStorage.getItem( + sessionStorageKeyConstants.SUBMITTED_STATE + ); + if (submittedState !== null) { + const isBailout = getIsBailout(submittedState); + const exceptionPages = isBailout + ? [FUNNEL_START_PAGE.name, routeData.BAILOUT_SUCCESS.name] + : [FUNNEL_START_PAGE.name, routeData.CONFIRMATION.name]; if (!exceptionPages.some((name) => to.name === name) && !isVirtualRoute(to.name)) { - if (to.name === routeData.BAILOUT.name) { + if (isBailout) { router.push({ name: routeData.BAILOUT_SUCCESS.name, }); @@ -153,3 +155,8 @@ export async function beforeEach(to, from) { return; } } + +function getIsBailout(submittedState) { + const submittedStateObj = JSON.parse(submittedState); + return !!submittedStateObj?.applicationUser?.bailoutCode; +} From 68de0ecbda85cbaeeb5039f44e2e3b07a172e856 Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Tue, 19 May 2026 12:59:42 -0400 Subject: [PATCH 6/6] CASH-2563: Discconnect bailout logic for release --- src/store/index.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 5b7449c4b..9fe220fcc 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1949,21 +1949,21 @@ export const actions = { pageNameToLog: pageNameToLog, }) .catch((error) => { - if (error.status == 500) { - return { PartsNotFound: true }; - } + // if (error.status == 500) { + // return { PartsNotFound: true }; + // } }); // Triggers bailout - if (response.PartsNotFound) { - return response; - } + // if (response.PartsNotFound) { + // return response; + // } // Check if we only have MISC parts to trigger bailout - const miscPartsResponse = checkIfMiscParts(response.data.partsOrQuestions); - if (miscPartsResponse.PartsNotFound) { - return miscPartsResponse; - } + // const miscPartsResponse = checkIfMiscParts(response.data.partsOrQuestions); + // if (miscPartsResponse.PartsNotFound) { + // return miscPartsResponse; + // } // Flatten location and name properties response.data.partsOrQuestions = convertGlassPieceNamingFromApi(