diff --git a/src/digital-components/modal/modal.vue b/src/digital-components/modal/modal.vue index 37ebee18e..e412678ff 100644 --- a/src/digital-components/modal/modal.vue +++ b/src/digital-components/modal/modal.vue @@ -25,17 +25,17 @@ - @@ -53,6 +53,7 @@ export default { props: { headerText: String, footerButtonText: String, + suppressPageScroll: Boolean, onModalOpenedCallback: { type: Function, }, @@ -107,8 +108,10 @@ export default { onModalClosed() { this.resetButtonStyle(); this.onModalClosedCallback?.(); + if (this.suppressPageScroll) document.querySelector("body").classList.remove("prevent-modal-scroll"); }, openModal() { + if (this.suppressPageScroll) document.querySelector("body").classList.add("prevent-modal-scroll"); const modal = Modal.getOrCreateInstance(document.getElementById(this.modalId)); modal.show(); this.$emit("isModalOpened", true); @@ -231,6 +234,29 @@ export default { } } } +.save-progress-modal-question { + p.modal-body { + padding: 0; + } + .modal-body { + display: flex; + flex-direction: column; + .textbox-question { + padding: .25rem 0; + label { + text-align: left; + font-weight: 600; + } + } + } + .modal-disclaimer { + font-size: .75rem; + order: 2; + } + .modal-footer { + padding: 1.5rem 0; + } +} body { .modal-backdrop { height: 100%; diff --git a/src/fmg-components/layouts/questions-page-layout/questions-page-layout.vue b/src/fmg-components/layouts/questions-page-layout/questions-page-layout.vue index 982738394..2c4d71803 100644 --- a/src/fmg-components/layouts/questions-page-layout/questions-page-layout.vue +++ b/src/fmg-components/layouts/questions-page-layout/questions-page-layout.vue @@ -25,7 +25,7 @@
-
+
+ + diff --git a/src/fmg-components/save-progress-modal-question/save-progress-modal-question.spec.js b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.spec.js new file mode 100644 index 000000000..15fb1481d --- /dev/null +++ b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.spec.js @@ -0,0 +1,51 @@ +import { mount, shallowMount } from "@vue/test-utils"; +import saveProgressModalQuestion from "./save-progress-modal-question"; +import { getMountOptions } from "@/helpers/unit-test-helper.js"; + +jest.mock("@/digital-components/modal/modal", () => ({ + methods: { + openModal: jest.fn(), + resetButtonStyle: jest.fn(), + }, +})); + +describe("save-progress-modal-question ", () => { + describe("when openModal is run ", () => { + test("the modal should open ", () => { + // Arrange + const { wrapper } = setupMocks({ + props: { + modelValue: "", + modalWidgetName: "testModal", + }, + }); + + // Act + wrapper.vm.openModal(); + + // Assert + expect(wrapper.vm.modal).not.toBeNull(); + }); + }); +}); + +function setupMocks({ options, props }) { + const mountOptions = getMountOptions({ + ...options, + }); + + const mockBaseMixin = { + methods: { + getCmsContent: jest.fn(), + dispatchStoreAction: jest.fn(), + }, + }; + + if (props) mountOptions.propsData = props; + + mountOptions.global.mixins = [mockBaseMixin]; + + const wrapper = mount(saveProgressModalQuestion, mountOptions); + + return { wrapper }; +} diff --git a/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue new file mode 100644 index 000000000..4ff6304f5 --- /dev/null +++ b/src/fmg-components/save-progress-modal-question/save-progress-modal-question.vue @@ -0,0 +1,193 @@ + + + + + diff --git a/src/fmg-components/save-progress-modal-question/save-progress-question/save-progress-question.spec.js b/src/fmg-components/save-progress-modal-question/save-progress-question/save-progress-question.spec.js new file mode 100644 index 000000000..7cc3d100c --- /dev/null +++ b/src/fmg-components/save-progress-modal-question/save-progress-question/save-progress-question.spec.js @@ -0,0 +1,40 @@ +import { shallowMount } from "@vue/test-utils"; +import saveProgressQuestion from "./save-progress-question"; + +describe("save-progress-question.vue", () => { + it("Should get the modelValue", async () => { + // Arrange + const text = "test"; + const wrapper = shallowMount(saveProgressQuestion, { + props: { + modelValue: text, + }, + attachTo: document.body, + }); + + // Act + const modelValueText = wrapper.vm.value; + wrapper.vm.value = "test also"; + + // Assert + expect(modelValueText).toEqual("test"); + }); + + it("Should emit to set value", async () => { + // Arrange + const text = "test"; + const wrapper = shallowMount(saveProgressQuestion, { + props: { + modelValue: text, + }, + attachTo: document.body, + }); + + // Act + const modelValueText = wrapper.vm.value; + wrapper.vm.value = "test also"; + + // Assert + expect(wrapper.emitted("update:modelValue")).toEqual([["test also"]]); + }); +}); diff --git a/src/fmg-components/save-progress-modal-question/save-progress-question/save-progress-question.vue b/src/fmg-components/save-progress-modal-question/save-progress-question/save-progress-question.vue new file mode 100644 index 000000000..221aa3415 --- /dev/null +++ b/src/fmg-components/save-progress-modal-question/save-progress-question/save-progress-question.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index 5e71bb5b7..4afc7e115 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -42,13 +42,10 @@ export async function getDirectNavigation(toRoute) { return fmgPageValues.VEHICLE_DAMAGE; } - if ( - fmgPageValue === fmgPageValues.QUOTE || - fmgPageValue === fmgPageValues.INSURANCE_COMPANY - ) { + if (fmgPageValue === fmgPageValues.QUOTE) { const skipVin = await skipVinLookup(); - if (skipVin) { + if (skipVin || !store.getters.vehicle?.vin) { return fmgPageValues.ESTIMATE; } else { return fmgPageValues.VIN_LOOKUP; diff --git a/src/helpers/heritage-integration/navigation-helper.spec.js b/src/helpers/heritage-integration/navigation-helper.spec.js index 2af724828..396b4eee1 100644 --- a/src/helpers/heritage-integration/navigation-helper.spec.js +++ b/src/helpers/heritage-integration/navigation-helper.spec.js @@ -400,26 +400,6 @@ describe("getPageToRouteExistingOrderTo", () => { // Assert expect(result).toBe(fmgPageValues.ESTIMATE); }); - - test("Replace navigation to `insurance-company` with `estimate`", async () => { - // Arrange - const toRoute = { - query: { - fmgPage: fmgPageValues.INSURANCE_COMPANY, - }, - }; - - store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); - store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); - store.commit(storeMutations.UPDATE_IS_REPAIR, true); - store.commit(storeMutations.UPDATE_MAKE, "acura"); - - // Act - const result = await getPageToRouteExistingOrderTo(toRoute); - - // Assert - expect(result).toBe(fmgPageValues.ESTIMATE); - }); }); describe("Vin-Required", () => { @@ -438,29 +418,7 @@ describe("getPageToRouteExistingOrderTo", () => { store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, [ { glassLocation: glassLocations.WINDSHIELD }, ]); - - // Act - const result = await getPageToRouteExistingOrderTo(toRoute); - - // Assert - expect(result).toBe(fmgPageValues.VIN_LOOKUP); - }); - - test("Replace navigation to `insurance-company` with `vin-lookup`", async () => { - // Arrange - const toRoute = { - query: { - fmgPage: fmgPageValues.INSURANCE_COMPANY, - }, - }; - - store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); - store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); - store.commit(storeMutations.UPDATE_IS_REPAIR, false); - store.commit(storeMutations.UPDATE_MAKE, "acura"); - store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, [ - { glassLocation: glassLocations.WINDSHIELD }, - ]); + store.commit(storeMutations.UPDATE_VEHICLE_VIN, "abcd1234"); // Act const result = await getPageToRouteExistingOrderTo(toRoute); diff --git a/src/helpers/heritage-integration/order-helper.js b/src/helpers/heritage-integration/order-helper.js index bc6b70730..76729e49f 100644 --- a/src/helpers/heritage-integration/order-helper.js +++ b/src/helpers/heritage-integration/order-helper.js @@ -99,12 +99,22 @@ export async function submitWorkOrder({ } export async function saveQuote({ pageNameToLog }) { - return await baseMixin.methods.dispatchStoreActionWithLogging( + await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.SAVE_QUOTE, {}, pageNameToLog, false ); + + // save session back to sv2 so the email gets saved just in case they refresh or step away and come back later + await saveSession({ + pageNameToLog: pageNameToLog, + shouldAwaitSaveSessionQueue: true, + submitAfterSave: false, + createUnscheduledStatusWorkOrderForPIA: false, + }); + + return; } // PRIVATE FUNCTIONS // diff --git a/src/layouts/capability-questions/capability-questions.vue b/src/layouts/capability-questions/capability-questions.vue index 4d637c978..d189f0f44 100644 --- a/src/layouts/capability-questions/capability-questions.vue +++ b/src/layouts/capability-questions/capability-questions.vue @@ -12,13 +12,22 @@ @forwardButtonAction="forwardButtonAction" @back-click="navigateBack" :key="currentGlassIndex" - :index="currentGlassIndex" /> + :index="currentGlassIndex"> + + + + + diff --git a/src/layouts/customer-details/customer-details.vue b/src/layouts/customer-details/customer-details.vue index ccb77c184..6775e36da 100644 --- a/src/layouts/customer-details/customer-details.vue +++ b/src/layouts/customer-details/customer-details.vue @@ -87,6 +87,7 @@ import { required, regex } from "@/helpers/validation-rules"; import { Form, defineRule } from "vee-validate"; import { useField, validate } from "vee-validate"; import store from "@/store"; +import { paymentMethods } from "@/constants/payment-method-constants"; // DEFINE VALIDATION RULES defineRule("first-name-required", required(errorMessages.FIRST_NAME_REQUIRED)); @@ -162,7 +163,7 @@ export default { backButtonAction() { this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); }, - forwardButtonAction() { + async forwardButtonAction() { this.dispatchStoreAction( this.storeActions.SAVE_CUSTOMER_DETAILS, { @@ -181,6 +182,17 @@ export default { false ); + // if the user has resorted to using browser back/forward buttons we could have promises unresolved if they clicked back before pia work order submission. + // so attempt to wait for them to finish. + if (store.getters.order.payment.isPia) { + this.dispatchStoreAction( + storeActions.SAVE_PAYMENT_METHOD_CHOICE, + paymentMethods.NONE, + false + ); + await store.getters.applicationUser.saveSessionPromise; + } + this.$router.navigateWithSaving(this.navigationScenarios.CLICKED_FORWARD, this.$route); }, }, diff --git a/src/layouts/molding-questions/molding-questions.vue b/src/layouts/molding-questions/molding-questions.vue index 00df8c04b..c314d7225 100644 --- a/src/layouts/molding-questions/molding-questions.vue +++ b/src/layouts/molding-questions/molding-questions.vue @@ -12,13 +12,22 @@ @forwardButtonAction="forwardButtonAction" @back-click="navigateBack" :key="currentGlassIndex" - :index="currentGlassIndex" /> + :index="currentGlassIndex"> + + + + + diff --git a/src/layouts/part-questions/part-questions.vue b/src/layouts/part-questions/part-questions.vue index bc1ec308e..199a39493 100644 --- a/src/layouts/part-questions/part-questions.vue +++ b/src/layouts/part-questions/part-questions.vue @@ -12,13 +12,22 @@ @forwardButtonAction="forwardButtonAction" @back-click="navigateBack" :key="currentGlassIndex" - :index="currentGlassIndex" /> + :index="currentGlassIndex"> + + + + + diff --git a/src/layouts/payment/payment.spec.js b/src/layouts/payment/payment.spec.js index 4290a97d4..7bc14f229 100644 --- a/src/layouts/payment/payment.spec.js +++ b/src/layouts/payment/payment.spec.js @@ -202,6 +202,9 @@ describe("payment.vue", () => { jobMaxMinutes: "45", }, }, + applicationUser: { + loggingOption: false, + }, policy: { currentDeductible: 1, }, diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 419ccbdd5..ce5e6bcbe 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -532,13 +532,53 @@ export default { store.getters.order.payment.isPia !== null && (store.getters.order.payment.isPia || !!store.getters.order.payment.piaType); - return ( + const preReqResult = serviceLocationReqs && isInsuranceSet && scheduleReqs && customerReqs && - paymentMethodReqs - ); + paymentMethodReqs; + + // prettier-ignore + { + if (store.getters.applicationUser.loggingOption || !preReqResult) { + console.log("------------- payment.vue pagePrereqs start -----------------"); + console.log(new Date() + "mobileReqs:" + mobileReqs); + console.log(new Date() + "serviceLocation.address:" + serviceLocation.address); + console.log(new Date() + "serviceLocation.city:" + serviceLocation.city); + console.log(new Date() + "serviceLocation.state:" + serviceLocation.state); + console.log(new Date() + "serviceLocation.zipCode:" + serviceLocation.zipCode); + console.log(""); + console.log(new Date() + "dropOffInshopReqs:" + dropOffInshopReqs); + console.log(new Date() + "serviceLocationReqs:" + serviceLocationReqs); + console.log(new Date() + "providerLocation.streetAddress:" + providerLocation.streetAddress); + console.log(new Date() + "providerLocation.city:" + providerLocation.city); + console.log(new Date() + "providerLocation.state:" + providerLocation.state); + console.log(new Date() + "providerLocation.zipCode:" + providerLocation.zipCode); + console.log(""); + console.log(new Date() + "isInsuranceSet:" + isInsuranceSet); + console.log(""); + console.log(new Date() + "scheduleReqs:" + scheduleReqs); + console.log(new Date() + "schedule.date:" + schedule.date); + console.log(new Date() + "schedule.startTime:" + schedule.startTime); + console.log(new Date() + "schedule.endTime:" + schedule.endTime); + console.log(new Date() + "schedule.jobMaxMinutes:" + schedule.jobMaxMinutes); + console.log(new Date() + "schedule.jobMinMinutes:" + schedule.jobMinMinutes); + console.log(""); + console.log(new Date() + "customerReqs:" + customerReqs); + console.log(new Date() + "customer.firstName:" + customer.firstName); + console.log(new Date() + "customer.lastName:" + customer.lastName); + console.log(new Date() + "customer.phoneNumber:" + customer.phoneNumber); + console.log(new Date() + "customer.emailAddress:" + customer.emailAddress); + console.log(""); + console.log(new Date() + "paymentMethodReqs:" + paymentMethodReqs); + console.log(new Date() + "store.getters.order.payment.isPia:" + store.getters.order.payment.isPia); + console.log(new Date() + "store.getters.order.payment.piaType:" + store.getters.order.payment.piaType); + console.log("------------- payment.vue pagePrereqs end -------------------"); + } + } + + return preReqResult; }, getWOrkOrderNumber() { if (store.getters.order.workOrderNumber) { diff --git a/src/layouts/quote/quote.spec.js b/src/layouts/quote/quote.spec.js index 778ce0ce8..0d25eed9b 100644 --- a/src/layouts/quote/quote.spec.js +++ b/src/layouts/quote/quote.spec.js @@ -121,6 +121,9 @@ store.getters = { isInsurance: false, parentAccountNumber: applicationConfig.CASH_PARENT_ACCOUNT_NUMBER, }, + customer: { + emailAddress: "test@test.com", + } }, }; @@ -136,6 +139,9 @@ afterEach(() => { insuranceCoverage: {}, isInsurance: false, }, + customer: { + emailAddress: "test@test.com", + } }; }); @@ -263,6 +269,9 @@ describe("quote.vue", () => { glassParts: ["item", "item2"], }, payment: {}, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { zipCode: "12345", zipCodeCtu: "value", @@ -309,6 +318,9 @@ describe("quote.vue", () => { glassParts: ["item", "item2"], }, payment: {}, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { zipCode: "12345", zipCodeCtu: "value", @@ -355,6 +367,9 @@ describe("quote.vue", () => { payment: { isInsurance: null, }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: null, }, @@ -396,6 +411,9 @@ describe("quote.vue", () => { payment: { isInsurance: null, }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: null, }, @@ -438,6 +456,9 @@ describe("quote.vue", () => { payment: { isInsurance: true, }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: null, }, @@ -480,6 +501,9 @@ describe("quote.vue", () => { payment: { isInsurance: false, }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: null, }, @@ -523,6 +547,9 @@ describe("quote.vue", () => { payment: { isInsurance: null, // Ensure that previous selection isn't overriding selection }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: null, }, @@ -568,6 +595,9 @@ describe("quote.vue", () => { payment: { isInsurance: null, // Ensure that previous selection isn't overriding selection }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: null, }, @@ -612,6 +642,9 @@ describe("quote.vue", () => { payment: { isInsurance: null, }, + customer: { + emailAddress: "test@test.com", + }, serviceLocation: { state: "AZ", }, @@ -717,6 +750,9 @@ describe("quote.vue", () => { isInsurance: true, inactivePromos: [], }, + customer: { + emailAddress: "test@test.com", + }, }, externalParameterState: { isExternalParameter: 1 }, externalParameterQuote: { diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index c83e61b23..7fcb506ce 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -77,6 +77,11 @@ @back-clicked="backButtonAction" @ForwardClicked="forwardButtonAction" /> + +
-
-
- -
-
@@ -105,6 +105,7 @@ import contentGroupModal from "@/fmg-components/content-group-modal/content-grou import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue"; import afterpayModalBanner from "@/layouts/quote/afterpay-modal-banner/afterpay-modal-banner"; import recalDisclaimer from "@/layouts/quote/recal-disclaimer/recal-disclaimer.vue"; +import saveProgressModalQuestion from "@/fmg-components/save-progress-modal-question/save-progress-modal-question"; // Supporting files import baseMixin from "@/mixins/base-mixin.js"; @@ -189,6 +190,8 @@ export default { ]; const resultMap = await settleAllPromises(promiseResultMap); + const emailFromStore = store.getters.order.customer.emailAddress; + const lineItems = deepClone(store.getters.order.lineItems); lineItems.vaps = lineItems.vaps ?? []; const nullSafeGlassParts = lineItems.glassParts ?? []; @@ -269,6 +272,7 @@ export default { // Call the "next" function to complete the transition to this page. next(async (vm) => { vm.setCmsContent(resultMap.cmsContent); + vm.isEmailInStoreOnPageLoad = emailFromStore?.length > 0; vm.addableVaps = addableVaps; vm.lineItems = lineItems; vm.availableLineItems = pricingResults; @@ -415,6 +419,7 @@ export default { servicePackage: null, holdParentAccountNumber: null, holdBillToAccountNumber: null, + isEmailInStoreOnPageLoad: null, }; }, computed: { @@ -504,6 +509,9 @@ export default { backButtonAction() { vehicleQuestionsMixin.methods.navigateBack(this); }, + saveProgress() { + saveQuote({ pageNameToLog: "quote" }); + }, forwardButtonAction() { this.dispatchStoreAction( this.storeActions.SAVE_PAYMENT_TYPE, @@ -689,6 +697,7 @@ export default { afterpayModalBanner, promoModalQuestion, recalDisclaimer, + saveProgressModalQuestion, }, }; diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 18eee6988..1009b9713 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -402,7 +402,7 @@ export default { !options.length || store.getters.payment?.insuranceCoverage?.isVerified || (store.getters.order.payment?.isInsurance && - getFunnelCookie().HasDelayedClaimRegistration) + getFunnelCookie()?.HasDelayedClaimRegistration) ) { return true; } else { diff --git a/src/router/index.js b/src/router/index.js index 53adc4613..da3c1914c 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -113,6 +113,7 @@ const routes = [ store.commit(storeMutations.UPDATE_AFFILIATE_COOKIES, affiliateCookies); } setupAdvertiserTracking(); + log(" --load session start"); const loadSessionResponse = await loadSessionIfPresent( to.query.isInsurance != null ? to.query.isInsurance == "true" @@ -121,6 +122,7 @@ const routes = [ : null, to.query.fmgPage ); + log(" --load session end"); //Update external parameter state but not when returning from heritage if (!to.query.fmgPage?.startsWith("service-location")) { @@ -155,7 +157,10 @@ const routes = [ // Reroute around pages that should not be available. // Exception 1: Integrated Users should not see vehicle or quote pages. - if (store.getters.payment?.insuranceCoverage?.isVerified) { + if ( + store.getters.payment?.insuranceCoverage?.isVerified || + store.getters.order?.referralNumber?.length === 6 + ) { if (to.query.fmgPage === fmgPageValues.VEHICLE) { to.query.fmgPage = fmgPageValues.VEHICLE_DAMAGE; } else if ( @@ -194,6 +199,13 @@ const routes = [ if (!arePagePrerequisitesValid(component)) { console.log("Page prereq error: " + component.default.name); + + if (to.query.fmgPage === fmgPageValues.PAYMENT) { + await store.getters.applicationUser.saveSessionPromise; + window.location = applicationConfig.PIA_CANCEL_URL; + return; + } + GoToFunnelStartOn404(next); } @@ -380,6 +392,8 @@ router.navigateWithSaving = ( }; router.navigateToExternalUrl = (url, optionalQuery = {}) => { + log("------------- router navigateToExternalUrl -----------------"); + log("url:", url); navigateToUrl(url, optionalQuery); }; @@ -397,6 +411,13 @@ router.overrideNavigation = ( optionalParams = {}, optionalPageData ) => { + log("------------- router overrideNavigation -----------------"); + log("scenario:", scenario); + log("currentRoute:", currentRoute); + log("isSavingNavigation:", isSavingNavigation); + log("optionalQuery:", optionalQuery); + log("optionalParams:", optionalParams); + log("optionalPageData:", optionalPageData); navigate( scenario, currentRoute, @@ -508,6 +529,9 @@ async function navigate( // Get navigation map depending on the scenario and the current 'page' you're on. function getNavigationMap(scenario, currentRoute) { const fmgPageValue = currentRoute.query.fmgPage; + log("------------- router index.js getNavigationMap start -----------------"); + log("fmgPage: " + fmgPageValue + " scenario: " + scenario, ""); + log("------------- router index.js getNavigationMap end -----------------"); const matchedQueryValue = routingTable(store) .filter( (item) => @@ -525,7 +549,7 @@ function log(message, data) { data = data ?? ""; const outData = typeof data === "object" ? JSON.stringify(data) : data; - if (log === "true") { + if (log === "true" || store.getters.applicationUser.loggingOption) { console.log(new Date() + message + outData); } } diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js index d1a89897d..3e3dbd4bf 100644 --- a/src/router/router-constants/routing-table.js +++ b/src/router/router-constants/routing-table.js @@ -470,6 +470,10 @@ const routingTable = function (store) { scenario: navigationScenarios.CLICKED_FORWARD, destinationFmgPageValue: fmgPageValues.PAYMENT_METHOD, }, + { + scenario: navigationScenarios.CLICKED_PAY_NOW, + destinationFmgPageValue: fmgPageValues.PAYMENT_METHOD, + }, ], }, { diff --git a/src/store/index.js b/src/store/index.js index d964a48d5..1ef9d7e59 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1946,7 +1946,7 @@ export const actions = { referralCorrelationId: order.referralCorrelationId, referralNumber: order.referralNumber?.toString(), referralSequenceNumber: order.referralSequenceNumber, - emailAddress: "cn@gm.com", //order.customer.emailAddress, + emailAddress: order.customer.emailAddress, lastPage: pageNameToLog, isRepair: damage.isRepair, firstName: order.customer.firstName, @@ -2509,10 +2509,12 @@ export const actions = { }, savePaymentMethodChoice(context, paymentMethod) { - const isPia = paymentMethod !== paymentMethods.LATER; + var isPia = null; + if (paymentMethod !== paymentMethods.NONE) { + isPia = paymentMethod !== paymentMethods.LATER; + } context.commit(storeMutations.UPDATE_IS_PIA, isPia); - context.commit(storeMutations.UPDATE_PIA_TYPE, isPia ? paymentMethod : null); }, diff --git a/src/styles/common-styles.scss b/src/styles/common-styles.scss index 002debed8..a378f881e 100644 --- a/src/styles/common-styles.scss +++ b/src/styles/common-styles.scss @@ -77,7 +77,7 @@ body { } } } -.modal-open { +.modal-open:not(.prevent-modal-scroll) { .container-fluid { &.page-container-grouped-styles { overflow: hidden; diff --git a/src/ux-components/button-main/button-main.vue b/src/ux-components/button-main/button-main.vue index 9cc61e051..848cf3866 100644 --- a/src/ux-components/button-main/button-main.vue +++ b/src/ux-components/button-main/button-main.vue @@ -5,7 +5,7 @@ :class="[ isPrimary ? 'btn-primary' : 'btn-secondary', isFloat ? 'float-end' : '', - isLoaderDisplayed ? 'has-loader' : '', + (isLoaderDisplayed && !suppressLoader) ? 'has-loader' : '', ]" @click="clicked"> {{ this.buttonText }} @@ -47,7 +47,7 @@ export default { true ); if (!this.isDisabled) { - this.isLoaderDisplayed = true; + if (!this.suppressLoader) this.isLoaderDisplayed = true; this.$emit("click-event"); } },