diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue
index 8f34feb23..51546a97e 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() {
@@ -231,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;
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..b30a587dc 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,27 +517,23 @@ export default {
return store.getters.payment.piaType;
}
},
- getPiaLineItems() {
- const itemMap = new Map();
+ getPiaLineItems(cartItems) {
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"];
}
- return 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);
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 };
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/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">
+
+ {{ screenReaderOnlyText }}
+
+
0) {
return this.modelValue.state + ", " + this.modelValue.zipCode;
diff --git a/src/store/index.js b/src/store/index.js
index d5ae5c4d2..8ffe55058 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -1304,9 +1304,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,