From d86996265290d58ed490d5f4340c6c42e3bd7dee Mon Sep 17 00:00:00 2001 From: Matt Caimi Date: Fri, 17 Nov 2023 15:08:38 -0500 Subject: [PATCH 1/6] CSR-1391 get lineitem names from cart --- src/layouts/payment/payment.vue | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 0cd632dc6..ceec66f28 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -25,6 +25,7 @@
{ vm.setCmsContent(resultMap.cmsContent); - vm.fetchSignatureInfo(resultMap.signature); - vm.setIFrameListener(); - vm.availableVaps = taxedVaps; vm.lineItems = lineItems; + + vm.$nextTick(() => { + if (vm.$refs.cart) { + const cartItems = vm.$refs.cart.cartItems; + vm.getPiaLineItems(cartItems); + } + + vm.fetchSignatureInfo(resultMap.signature); + vm.setIFrameListener(); + }); }); }, computed: { @@ -506,7 +514,7 @@ export default { return store.getters.payment.piaType; } }, - getPiaLineItems() { + getPiaLineItems(cartItems) { const itemMap = new Map(); const glassParts = store.getters.order.lineItems.glassParts; const supportingItems = store.getters.order.lineItems.supportingItems; @@ -524,7 +532,7 @@ export default { } } - return Array.from(itemMap.values()) + this.piaLineItems = Array.from(itemMap.values()) .map((item) => `${item.partType}|${item.amount}|${item.quantity}`) .join("||"); }, From 14be2c2409f148bd539e7b2f1d321eba81193ff7 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Mon, 20 Nov 2023 11:27:19 -0500 Subject: [PATCH 2/6] CSR-1411: update store Get Wipers method to accept a Zip and CarId; update usages --- src/layouts/confirmation/confirmation.vue | 26 ++++++++++++++++++- src/layouts/payment-method/payment-method.vue | 5 +++- src/layouts/payment/payment.vue | 5 +++- src/layouts/quote/quote.vue | 5 +++- .../service-package-review.vue | 6 ++++- src/store/index.js | 7 ++--- 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 8f34feb23..27b639531 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -89,22 +89,46 @@ export default { // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage); + const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( + storeActions.GET_WIPERS, + { + serviceZipCode: store.getters.submittedOrder.serviceLocation.zipCode, + carId: store.getters.submittedOrder.vehicle.carId, + }, + "confirmation" + ); + + const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging( + storeActions.GET_RAIN_DEFENSE, + null, + "confirmation" + ); + // Settle promises and get results const promiseResultMap = [ { resultKey: "cmsContent", promise: cmsContentPromise, }, + { + resultKey: "wipers", + promise: wipersPromise, + }, + { + resultKey: "rainDefense", + promise: rainDefensePromise, + }, ]; const resultMap = await settleAllPromises(promiseResultMap); + const availableVaps = [resultMap.rainDefense, ...resultMap.wipers]; const lineItemsFromSubmittedOrder = deepClone(store.getters.submittedOrder.lineItems); // Call the "next" function to complete the transition to this page. next((vm) => { vm.setCmsContent(resultMap.cmsContent); vm.lineItems = lineItemsFromSubmittedOrder; - vm.vaps = lineItemsFromSubmittedOrder.vaps; + vm.vaps = availableVaps; }); }, data() { diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index af0ec86fc..6fa1b02a6 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -123,7 +123,10 @@ export default { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, - null, + { + serviceZipCode: store.getters.order.serviceLocation.zipCode, + carId: store.getters.vehicle.carId, + }, "payment-method" ); diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 0cd632dc6..3e52d1c6b 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -257,7 +257,10 @@ export default { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, - null, + { + serviceZipCode: store.getters.order.serviceLocation.zipCode, + carId: store.getters.vehicle.carId, + }, "payment" ); diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 6f293c43b..1357e5acc 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -96,7 +96,10 @@ export default { const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage); const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, - null, + { + serviceZipCode: store.getters.order.serviceLocation.zipCode, + carId: store.getters.vehicle.carId, + }, "quote" ); const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging( diff --git a/src/layouts/review/review-sections/service-package-review/service-package-review.vue b/src/layouts/review/review-sections/service-package-review/service-package-review.vue index 03efb6769..ac6c333ac 100644 --- a/src/layouts/review/review-sections/service-package-review/service-package-review.vue +++ b/src/layouts/review/review-sections/service-package-review/service-package-review.vue @@ -15,6 +15,7 @@ import { import { settleAllPromises } from "@/helpers/layout-helper"; import baseMixin from "@/mixins/base-mixin.js"; import { storeActions } from "@/constants/store-actions"; +import store from "@/store"; export default { name: "service-package-review", @@ -34,7 +35,10 @@ export default { loadInitialData() { const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging( storeActions.GET_WIPERS, - null, + { + serviceZipCode: store.getters.order.serviceLocation.zipCode, + carId: store.getters.vehicle.carId, + }, "review" ); const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging( diff --git a/src/store/index.js b/src/store/index.js index 11690798f..dd6d1b08c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1301,9 +1301,10 @@ export const actions = { return response; }, - async getWipers(context, { pageNameToLog }) { - const carId = context.getters.vehicle.carId; - const serviceZipCode = context.getters.order.serviceLocation.zipCode; + async getWipers(context, { payload, pageNameToLog }) { + const carId = payload.carId; + const serviceZipCode = payload.serviceZipCode; + const response = await globalMethods .callHttpClient({ method: endpoints.GetWipers.method, From 75a50c2223674802fb7321bde19cdde5af43a162 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Mon, 20 Nov 2023 11:27:52 -0500 Subject: [PATCH 3/6] CSR-1411: fix missing damage info --- src/layouts/confirmation/confirmation.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 27b639531..51546a97e 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -255,7 +255,7 @@ export default { return store.getters.submittedOrder?.vehicle.imageUrl; }, damageInfo() { - return store.getters.damage; + return store.getters.submittedOrder.damage; }, isPia() { return store.getters.submittedOrder?.payment.isPia; From aee80dcd1a3b10b389ab415455fea71a58151b16 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Mon, 20 Nov 2023 11:28:24 -0500 Subject: [PATCH 4/6] CSR-1411: update unit test for changes due to Get Wipers methods parameter update --- src/layouts/quote/quote.spec.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/layouts/quote/quote.spec.js b/src/layouts/quote/quote.spec.js index a41f73595..dc30985a5 100644 --- a/src/layouts/quote/quote.spec.js +++ b/src/layouts/quote/quote.spec.js @@ -266,6 +266,13 @@ describe("quote.vue", () => { glassParts: ["item", "item2"], }, payment: {}, + serviceLocation: { + zipCode: "12345", + zipCodeCtu: "value", + }, + }, + vehicle: { + cardId: "123", }, }; const { wrapper } = setupMocks({}); @@ -304,6 +311,9 @@ describe("quote.vue", () => { state: null, }, }, + vehicle: { + cardId: "123", + }, }; const { wrapper } = setupMocks({}); wrapper.vm.$route = { query: { isInsurance: "true" } }; @@ -336,6 +346,9 @@ describe("quote.vue", () => { state: null, }, }, + vehicle: { + cardId: "123", + }, }; const { wrapper } = setupMocks({}); wrapper.vm.$route = { query: { isInsurance: "false" } }; @@ -369,6 +382,9 @@ describe("quote.vue", () => { state: null, }, }, + vehicle: { + cardId: "123", + }, }; const { wrapper } = setupMocks({}); // Ensure that query param isn't overriding selection @@ -402,6 +418,9 @@ describe("quote.vue", () => { state: null, }, }, + vehicle: { + cardId: "123", + }, }; const { wrapper } = setupMocks({}); // Ensure that query param isn't overriding selection @@ -436,6 +455,9 @@ describe("quote.vue", () => { state: null, }, }, + vehicle: { + cardId: "123", + }, }; mockTierOnePrice = 200; const { wrapper } = setupMocks({}); @@ -472,6 +494,9 @@ describe("quote.vue", () => { state: null, }, }, + vehicle: { + cardId: "123", + }, }; mockTierOnePrice = 505; const { wrapper } = setupMocks({}); @@ -507,6 +532,9 @@ describe("quote.vue", () => { state: "AZ", }, }, + vehicle: { + cardId: "123", + }, }; const { wrapper } = setupMocks({}); wrapper.vm.$route = { query: null }; From aa8a88b819cf84b8f84312b72346273830dfda15 Mon Sep 17 00:00:00 2001 From: Matt Caimi Date: Mon, 20 Nov 2023 11:40:44 -0500 Subject: [PATCH 5/6] CSR-1391 parts and labor in afterpay line items --- src/layouts/payment/payment.vue | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index ceec66f28..120105aa7 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -515,26 +515,22 @@ export default { } }, getPiaLineItems(cartItems) { - const itemMap = new Map(); const glassParts = store.getters.order.lineItems.glassParts; - const supportingItems = store.getters.order.lineItems.supportingItems; - const vaps = store.getters.order.lineItems.vaps; - const items = [...(glassParts ?? []), ...(supportingItems ?? []), ...(vaps ?? [])]; + let lineItems = []; - for (const item of items) { - const amount = item.laborAmount + item.sellingPrice; - const key = `${item.partType}|${amount}`; - - if (itemMap.has(key)) { - itemMap.get(key).quantity++; - } else { - itemMap.set(key, { partType: item.partType, amount, quantity: 1 }); - } + if (glassParts === null) { + lineItems = ["Labor|0|1", "Repair supplies|0|1"]; + } else { + lineItems = ["Parts and labor|0|1"]; } - this.piaLineItems = Array.from(itemMap.values()) - .map((item) => `${item.partType}|${item.amount}|${item.quantity}`) - .join("||"); + cartItems.forEach((item) => { + if (item.name !== null) { + lineItems.push(`${item.name}|${(item.salesTax + item.subTotal).toFixed(2)}|1`); + } + }); + + this.piaLineItems = lineItems.join("||"); }, getAmountDue() { return baseMixin.methods.getAmountDue(store.getters.order.lineItems); From 8fcc228439627c9d4dfbc98e402b0a1d70b5b743 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Mon, 20 Nov 2023 14:08:01 -0500 Subject: [PATCH 6/6] CSR-1810 add "edit zip code" copy for screen reader --- src/layouts/service-location/service-location.vue | 1 + .../service-zip-modal-question.vue | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index f8efc8c25..0a74ab21e 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -12,6 +12,7 @@ + @click-event="openModal"> + + 0) { return this.modelValue.state + ", " + this.modelValue.zipCode;