From 1d78ed5871650a243c94a377e8edcb04c3cfe391 Mon Sep 17 00:00:00 2001 From: credelinghuys Date: Fri, 17 Apr 2026 14:40:46 -0400 Subject: [PATCH 1/4] CASH-2488: MSR Fee for cash --- src/fmg-components/cart/cart.vue | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/fmg-components/cart/cart.vue b/src/fmg-components/cart/cart.vue index 8add7bb85..9a6f55576 100644 --- a/src/fmg-components/cart/cart.vue +++ b/src/fmg-components/cart/cart.vue @@ -970,8 +970,7 @@ export default { const msrFeeLineItem = this.getMsrFeeLineItem; const shouldCreateMsrFeeCartItem = this.isMSRFeeApplicable && - this.isInsurance && - !this.IsMSRFeeCoveredByInsurance && + (!this.isInsurance || !this.IsMSRFeeCoveredByInsurance) && msrFeeLineItem && this.msrFeeAmount > 0; @@ -980,7 +979,7 @@ export default { name: this.msrFeeCartItemName, category: cartItemCategories.SUPPORTING_ITEMS, cartItemType: cartItemTypes.MOBILE_FEE, - isDisplayed: this.isInsurance, + isDisplayed: true, isRemovable: true, subTotal: 0, salesTax: 0, @@ -1007,8 +1006,10 @@ export default { return this.getCmsContent("RecycleTextBlock", "Text"); }, msrToolTipBodyText() { - let cmsContentText = this.getCmsContent("MSRModal", "BodyText"); - if (cmsContentText) { + let cmsContentText = this.isInsurance + ? this.getCmsContent("MSRModal", "BodyText") + : this.getCmsContent("MSRModal", "BodyText2"); + if (this.isInsurance && cmsContentText) { cmsContentText = cmsContentText.replaceAll( "{custom:mobileFee}", formatToUSDollar(this.msrFeeAmount) From 1d7a9ba7b69545ba833f344e11124a9c589bb974 Mon Sep 17 00:00:00 2001 From: Matt Sykes Date: Fri, 17 Apr 2026 17:00:47 -0400 Subject: [PATCH 2/4] Removing split address entirely -addressline1 now maps to adyen street -addressline2 now maps to adyen houseNumberOrName Much simpler :) --- .../payment-adyen/payment-adyen.spec.js | 112 ------------------ src/layouts/payment-adyen/payment-adyen.vue | 16 +-- 2 files changed, 2 insertions(+), 126 deletions(-) diff --git a/src/layouts/payment-adyen/payment-adyen.spec.js b/src/layouts/payment-adyen/payment-adyen.spec.js index 1a506b860..26d3a6aec 100644 --- a/src/layouts/payment-adyen/payment-adyen.spec.js +++ b/src/layouts/payment-adyen/payment-adyen.spec.js @@ -187,118 +187,6 @@ describe("payment-adyen.vue", () => { expect(result).toBe(true); }); }); - - describe("splitStreetAddress", () => { - const setInShopStreet = (streetAddress) => { - store.getters.order.serviceLocation.appointmentType = AppointmentTypeStrings.IN_SHOP; - store.getters.order.serviceLocation.provider.address.streetAddress = streetAddress; - }; - - test("splits typical address into first token as number and remainder as street", () => { - setInShopStreet("123 West Elm St"); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "123", - street: "West Elm St", - }); - }); - - test("two tokens: number and single-word street", () => { - setInShopStreet("456 Oak"); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "456", - street: "Oak", - }); - }); - - test("single token with no spaces: full string in number, empty street", () => { - setInShopStreet("123OakStreet"); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "123OakStreet", - street: "", - }); - }); - - test("collapses multiple spaces between words", () => { - setInShopStreet("123 West Elm St"); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "123", - street: "West Elm St", - }); - }); - - test("trims leading and trailing whitespace on full address", () => { - setInShopStreet(" 99 Maple Ave "); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "99", - street: "Maple Ave", - }); - }); - - test("empty string yields empty number and street", () => { - setInShopStreet(""); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "", - street: "", - }); - }); - - test("whitespace-only address yields empty number and street", () => { - setInShopStreet(" \t "); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "", - street: "", - }); - }); - - test("null address yields empty number and street", () => { - setInShopStreet(null); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "", - street: "", - }); - }); - - test("uses mobile service address when appointment is mobile", () => { - store.getters.order.serviceLocation.appointmentType = AppointmentTypeStrings.MOBILE; - store.getters.order.serviceLocation.address = "700 Broadway Blvd"; - store.getters.order.serviceLocation.city = "Columbus"; - store.getters.order.serviceLocation.state = "OH"; - store.getters.order.serviceLocation.zipCode = "43235"; - - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "700", - street: "Broadway Blvd", - }); - }); - - test("splits on tabs and other whitespace runs", () => { - setInShopStreet("10\tPine\tLane"); - const wrapper = setupMocks({}); - - expect(wrapper.vm.splitStreetAddress).toEqual({ - number: "10", - street: "Pine Lane", - }); - }); - }); }); function setupMocks({ customMountOptions } = {}) { diff --git a/src/layouts/payment-adyen/payment-adyen.vue b/src/layouts/payment-adyen/payment-adyen.vue index aa75487da..02e5d4455 100644 --- a/src/layouts/payment-adyen/payment-adyen.vue +++ b/src/layouts/payment-adyen/payment-adyen.vue @@ -455,8 +455,8 @@ export default { zipCodeCtu: this.locationInfo.zipCodeCtu, amount: this.adyenPriceTotal, city: this.locationInfo.city, - houseNumberOrName: this.splitStreetAddress.number, - street: this.splitStreetAddress.street, + street: this.locationInfo.address, + houseNumberOrName: this.locationInfo.address2, zipCode: this.locationInfo.zipCode, stateOrProvince: this.locationInfo.state, returnUrl: applicationConfig.PIA_ADYEN_RETURN_URL, @@ -515,18 +515,6 @@ export default { } }, - splitStreetAddress() { - const address = (this.locationInfo?.address ?? "").trim(); - const tokens = address.length ? address.split(/\s+/) : [""]; - const number = tokens[0] ?? ""; - const street = tokens.length > 1 ? tokens.slice(1).join(" ") : ""; - - return { - number, - street, - }; - }, - sourceSystem() { return "FMG-2.0"; }, From b66d44fbb5122cb369c1edd660cd1bcc14a9d79f Mon Sep 17 00:00:00 2001 From: Matt Sykes Date: Mon, 20 Apr 2026 10:08:57 -0400 Subject: [PATCH 3/4] Empty string makes it happy... null did not --- src/layouts/payment-adyen/payment-adyen.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layouts/payment-adyen/payment-adyen.vue b/src/layouts/payment-adyen/payment-adyen.vue index 02e5d4455..5b3a663ea 100644 --- a/src/layouts/payment-adyen/payment-adyen.vue +++ b/src/layouts/payment-adyen/payment-adyen.vue @@ -455,8 +455,8 @@ export default { zipCodeCtu: this.locationInfo.zipCodeCtu, amount: this.adyenPriceTotal, city: this.locationInfo.city, - street: this.locationInfo.address, - houseNumberOrName: this.locationInfo.address2, + street: this.locationInfo.address ?? "", + houseNumberOrName: this.locationInfo.address2 ?? "", zipCode: this.locationInfo.zipCode, stateOrProvince: this.locationInfo.state, returnUrl: applicationConfig.PIA_ADYEN_RETURN_URL, From 110a1e771b8c6c1fedcb9a425aa0ac31713bd8a4 Mon Sep 17 00:00:00 2001 From: Minojhini Valaiyapathi Date: Tue, 21 Apr 2026 10:55:45 -0400 Subject: [PATCH 4/4] CASH-2501 - updated to v2 parts/getwipers endpoint --- src/constants/endpoints.js | 2 +- src/layouts/confirmation/confirmation.vue | 2 +- src/layouts/payment-method/payment-method.vue | 2 +- .../service-package-review/service-package-review.vue | 2 +- src/layouts/quote/quote.vue | 4 +++- src/store/index.js | 4 ++-- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/constants/endpoints.js b/src/constants/endpoints.js index ec8ab4c86..50dea494f 100644 --- a/src/constants/endpoints.js +++ b/src/constants/endpoints.js @@ -61,7 +61,7 @@ const endpoints = { method: "POST", }, GetWipers: { - url: "/parts/api/v1/parts/wipers", + url: "/parts/api/v2/parts/wipers", method: "GET", }, GetRainRepel: { diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index e26c5f9b1..70ef3b25d 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -169,8 +169,8 @@ export default { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, { - serviceZipCode: submittedOrder.serviceLocation.zipCode, carId: submittedOrder.vehicle.carId, + accountNumber: submittedOrder.payment?.parentAccountNumber, }, "confirmation" ); diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index e5b08bdbc..da49aa039 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -226,8 +226,8 @@ export default { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, { - serviceZipCode: store.getters.order.serviceLocation.zipCode, carId: store.getters.vehicle.carId, + accountNumber: store.getters.order.payment?.parentAccountNumber, }, "payment-method" ); diff --git a/src/layouts/payment-method/review-dropdown/review-sections/service-package-review/service-package-review.vue b/src/layouts/payment-method/review-dropdown/review-sections/service-package-review/service-package-review.vue index 4cf6dae0b..51827a30d 100644 --- a/src/layouts/payment-method/review-dropdown/review-sections/service-package-review/service-package-review.vue +++ b/src/layouts/payment-method/review-dropdown/review-sections/service-package-review/service-package-review.vue @@ -35,8 +35,8 @@ export default { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, { - serviceZipCode: store.getters.order.serviceLocation.zipCode, carId: store.getters.vehicle.carId, + accountNumber: store.getters.order.payment?.parentAccountNumber, }, "review" ); diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 106c04bfa..85370a376 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -217,8 +217,10 @@ export default { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, { - serviceZipCode: store.getters.order.serviceLocation.zipCode, carId: store.getters.vehicle.carId, + accountNumber: + store.getters.order.payment?.parentAccountNumber ?? + applicationConfig.CASH_PARENT_ACCOUNT_NUMBER, }, "quote" ); diff --git a/src/store/index.js b/src/store/index.js index da45f3a61..de95a5dda 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1961,12 +1961,12 @@ export const actions = { async getWipers(context, { payload, pageNameToLog }) { const carId = payload.carId; - const serviceZipCode = payload.serviceZipCode; + const accountNumber = payload.accountNumber; const response = await globalMethods .callHttpClient({ method: endpoints.GetWipers.method, - endpoint: `${endpoints.GetWipers.url}/${carId}/${serviceZipCode}`, + endpoint: `${endpoints.GetWipers.url}/${carId}/${accountNumber}`, logApiCall: true, pageNameToLog: pageNameToLog, })