Merge branch 'develop' into feature/CSR-1809
This commit is contained in:
commit
ac20a48504
9 changed files with 110 additions and 31 deletions
|
|
@ -89,22 +89,46 @@ export default {
|
||||||
// Call APIs
|
// Call APIs
|
||||||
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
|
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
|
// Settle promises and get results
|
||||||
const promiseResultMap = [
|
const promiseResultMap = [
|
||||||
{
|
{
|
||||||
resultKey: "cmsContent",
|
resultKey: "cmsContent",
|
||||||
promise: cmsContentPromise,
|
promise: cmsContentPromise,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
resultKey: "wipers",
|
||||||
|
promise: wipersPromise,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
resultKey: "rainDefense",
|
||||||
|
promise: rainDefensePromise,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const resultMap = await settleAllPromises(promiseResultMap);
|
const resultMap = await settleAllPromises(promiseResultMap);
|
||||||
|
const availableVaps = [resultMap.rainDefense, ...resultMap.wipers];
|
||||||
const lineItemsFromSubmittedOrder = deepClone(store.getters.submittedOrder.lineItems);
|
const lineItemsFromSubmittedOrder = deepClone(store.getters.submittedOrder.lineItems);
|
||||||
|
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.lineItems = lineItemsFromSubmittedOrder;
|
vm.lineItems = lineItemsFromSubmittedOrder;
|
||||||
vm.vaps = lineItemsFromSubmittedOrder.vaps;
|
vm.vaps = availableVaps;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -231,7 +255,7 @@ export default {
|
||||||
return store.getters.submittedOrder?.vehicle.imageUrl;
|
return store.getters.submittedOrder?.vehicle.imageUrl;
|
||||||
},
|
},
|
||||||
damageInfo() {
|
damageInfo() {
|
||||||
return store.getters.damage;
|
return store.getters.submittedOrder.damage;
|
||||||
},
|
},
|
||||||
isPia() {
|
isPia() {
|
||||||
return store.getters.submittedOrder?.payment.isPia;
|
return store.getters.submittedOrder?.payment.isPia;
|
||||||
|
|
|
||||||
|
|
@ -123,7 +123,10 @@ export default {
|
||||||
|
|
||||||
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
storeActions.GET_WIPERS,
|
storeActions.GET_WIPERS,
|
||||||
null,
|
{
|
||||||
|
serviceZipCode: store.getters.order.serviceLocation.zipCode,
|
||||||
|
carId: store.getters.vehicle.carId,
|
||||||
|
},
|
||||||
"payment-method"
|
"payment-method"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<cart
|
<cart
|
||||||
|
ref="cart"
|
||||||
:damage="damageInfo"
|
:damage="damageInfo"
|
||||||
:availableVaps="availableVaps"
|
:availableVaps="availableVaps"
|
||||||
:allowItemRemoval="false"
|
:allowItemRemoval="false"
|
||||||
|
|
@ -227,7 +228,7 @@ export default {
|
||||||
invoiceNumber: this.getInvoiceNumber(),
|
invoiceNumber: this.getInvoiceNumber(),
|
||||||
totalAmount: this.getAmountDue(),
|
totalAmount: this.getAmountDue(),
|
||||||
displayAmount: this.getDisplayAmountDue(),
|
displayAmount: this.getDisplayAmountDue(),
|
||||||
piaLineItems: this.getPiaLineItems(),
|
piaLineItems: "",
|
||||||
paypalPayment: this.isPaypal(),
|
paypalPayment: this.isPaypal(),
|
||||||
lineItems: [],
|
lineItems: [],
|
||||||
availableVaps: [],
|
availableVaps: [],
|
||||||
|
|
@ -257,7 +258,10 @@ export default {
|
||||||
|
|
||||||
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
storeActions.GET_WIPERS,
|
storeActions.GET_WIPERS,
|
||||||
null,
|
{
|
||||||
|
serviceZipCode: store.getters.order.serviceLocation.zipCode,
|
||||||
|
carId: store.getters.vehicle.carId,
|
||||||
|
},
|
||||||
"payment"
|
"payment"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -357,11 +361,18 @@ export default {
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
next(async (vm) => {
|
next(async (vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.fetchSignatureInfo(resultMap.signature);
|
|
||||||
vm.setIFrameListener();
|
|
||||||
|
|
||||||
vm.availableVaps = taxedVaps;
|
vm.availableVaps = taxedVaps;
|
||||||
vm.lineItems = lineItems;
|
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: {
|
computed: {
|
||||||
|
|
@ -506,27 +517,23 @@ export default {
|
||||||
return store.getters.payment.piaType;
|
return store.getters.payment.piaType;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getPiaLineItems() {
|
getPiaLineItems(cartItems) {
|
||||||
const itemMap = new Map();
|
|
||||||
const glassParts = store.getters.order.lineItems.glassParts;
|
const glassParts = store.getters.order.lineItems.glassParts;
|
||||||
const supportingItems = store.getters.order.lineItems.supportingItems;
|
let lineItems = [];
|
||||||
const vaps = store.getters.order.lineItems.vaps;
|
|
||||||
const items = [...(glassParts ?? []), ...(supportingItems ?? []), ...(vaps ?? [])];
|
|
||||||
|
|
||||||
for (const item of items) {
|
if (glassParts === null) {
|
||||||
const amount = item.laborAmount + item.sellingPrice;
|
lineItems = ["Labor|0|1", "Repair supplies|0|1"];
|
||||||
const key = `${item.partType}|${amount}`;
|
} else {
|
||||||
|
lineItems = ["Parts and labor|0|1"];
|
||||||
if (itemMap.has(key)) {
|
|
||||||
itemMap.get(key).quantity++;
|
|
||||||
} else {
|
|
||||||
itemMap.set(key, { partType: item.partType, amount, quantity: 1 });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Array.from(itemMap.values())
|
cartItems.forEach((item) => {
|
||||||
.map((item) => `${item.partType}|${item.amount}|${item.quantity}`)
|
if (item.name !== null) {
|
||||||
.join("||");
|
lineItems.push(`${item.name}|${(item.salesTax + item.subTotal).toFixed(2)}|1`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.piaLineItems = lineItems.join("||");
|
||||||
},
|
},
|
||||||
getAmountDue() {
|
getAmountDue() {
|
||||||
return baseMixin.methods.getAmountDue(store.getters.order.lineItems);
|
return baseMixin.methods.getAmountDue(store.getters.order.lineItems);
|
||||||
|
|
|
||||||
|
|
@ -266,6 +266,13 @@ describe("quote.vue", () => {
|
||||||
glassParts: ["item", "item2"],
|
glassParts: ["item", "item2"],
|
||||||
},
|
},
|
||||||
payment: {},
|
payment: {},
|
||||||
|
serviceLocation: {
|
||||||
|
zipCode: "12345",
|
||||||
|
zipCodeCtu: "value",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
|
|
@ -304,6 +311,9 @@ describe("quote.vue", () => {
|
||||||
state: null,
|
state: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
wrapper.vm.$route = { query: { isInsurance: "true" } };
|
wrapper.vm.$route = { query: { isInsurance: "true" } };
|
||||||
|
|
@ -336,6 +346,9 @@ describe("quote.vue", () => {
|
||||||
state: null,
|
state: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
wrapper.vm.$route = { query: { isInsurance: "false" } };
|
wrapper.vm.$route = { query: { isInsurance: "false" } };
|
||||||
|
|
@ -369,6 +382,9 @@ describe("quote.vue", () => {
|
||||||
state: null,
|
state: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
// Ensure that query param isn't overriding selection
|
// Ensure that query param isn't overriding selection
|
||||||
|
|
@ -402,6 +418,9 @@ describe("quote.vue", () => {
|
||||||
state: null,
|
state: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
// Ensure that query param isn't overriding selection
|
// Ensure that query param isn't overriding selection
|
||||||
|
|
@ -436,6 +455,9 @@ describe("quote.vue", () => {
|
||||||
state: null,
|
state: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
mockTierOnePrice = 200;
|
mockTierOnePrice = 200;
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
|
|
@ -472,6 +494,9 @@ describe("quote.vue", () => {
|
||||||
state: null,
|
state: null,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
mockTierOnePrice = 505;
|
mockTierOnePrice = 505;
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
|
|
@ -507,6 +532,9 @@ describe("quote.vue", () => {
|
||||||
state: "AZ",
|
state: "AZ",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
vehicle: {
|
||||||
|
cardId: "123",
|
||||||
|
},
|
||||||
};
|
};
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
wrapper.vm.$route = { query: null };
|
wrapper.vm.$route = { query: null };
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,10 @@ export default {
|
||||||
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
|
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
|
||||||
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
storeActions.GET_WIPERS,
|
storeActions.GET_WIPERS,
|
||||||
null,
|
{
|
||||||
|
serviceZipCode: store.getters.order.serviceLocation.zipCode,
|
||||||
|
carId: store.getters.vehicle.carId,
|
||||||
|
},
|
||||||
"quote"
|
"quote"
|
||||||
);
|
);
|
||||||
const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ import {
|
||||||
import { settleAllPromises } from "@/helpers/layout-helper";
|
import { settleAllPromises } from "@/helpers/layout-helper";
|
||||||
import baseMixin from "@/mixins/base-mixin.js";
|
import baseMixin from "@/mixins/base-mixin.js";
|
||||||
import { storeActions } from "@/constants/store-actions";
|
import { storeActions } from "@/constants/store-actions";
|
||||||
|
import store from "@/store";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "service-package-review",
|
name: "service-package-review",
|
||||||
|
|
@ -34,7 +35,10 @@ export default {
|
||||||
loadInitialData() {
|
loadInitialData() {
|
||||||
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
storeActions.GET_WIPERS,
|
storeActions.GET_WIPERS,
|
||||||
null,
|
{
|
||||||
|
serviceZipCode: store.getters.order.serviceLocation.zipCode,
|
||||||
|
carId: store.getters.vehicle.carId,
|
||||||
|
},
|
||||||
"review"
|
"review"
|
||||||
);
|
);
|
||||||
const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@
|
||||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" class="mt-5" />
|
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" class="mt-5" />
|
||||||
|
|
||||||
<serviceZipModalQuestion
|
<serviceZipModalQuestion
|
||||||
|
editScreenReaderTextCmsWidgetName="ScreenReaderZipEditWidget"
|
||||||
v-model="serviceZipCodeQuestion"
|
v-model="serviceZipCodeQuestion"
|
||||||
ref="serviceZipCodeQuestion"
|
ref="serviceZipCodeQuestion"
|
||||||
:mobileFeePart="mobileFeePart"
|
:mobileFeePart="mobileFeePart"
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,11 @@
|
||||||
linkType="text"
|
linkType="text"
|
||||||
:text="serviceZipLinkText"
|
:text="serviceZipLinkText"
|
||||||
href="#!"
|
href="#!"
|
||||||
@click-event="openModal" />
|
@click-event="openModal">
|
||||||
|
<template v-slot:after-text v-if="editScreenReaderTextCmsWidgetName">
|
||||||
|
<span class="sr-only"> {{ screenReaderOnlyText }} </span>
|
||||||
|
</template>
|
||||||
|
</textLink>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<modal
|
<modal
|
||||||
|
|
@ -68,8 +72,12 @@ export default {
|
||||||
},
|
},
|
||||||
linkWidgetName: String,
|
linkWidgetName: String,
|
||||||
modalWidgetName: String,
|
modalWidgetName: String,
|
||||||
|
editScreenReaderTextCmsWidgetName: String,
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
screenReaderOnlyText() {
|
||||||
|
return this.getCmsContent(this.editScreenReaderTextCmsWidgetName, "Text");
|
||||||
|
},
|
||||||
serviceZipLinkText() {
|
serviceZipLinkText() {
|
||||||
if (this.modelValue.zipCode && this.modelValue.zipCode.length > 0) {
|
if (this.modelValue.zipCode && this.modelValue.zipCode.length > 0) {
|
||||||
return this.modelValue.state + ", " + this.modelValue.zipCode;
|
return this.modelValue.state + ", " + this.modelValue.zipCode;
|
||||||
|
|
|
||||||
|
|
@ -1304,9 +1304,10 @@ export const actions = {
|
||||||
return response;
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
async getWipers(context, { pageNameToLog }) {
|
async getWipers(context, { payload, pageNameToLog }) {
|
||||||
const carId = context.getters.vehicle.carId;
|
const carId = payload.carId;
|
||||||
const serviceZipCode = context.getters.order.serviceLocation.zipCode;
|
const serviceZipCode = payload.serviceZipCode;
|
||||||
|
|
||||||
const response = await globalMethods
|
const response = await globalMethods
|
||||||
.callHttpClient({
|
.callHttpClient({
|
||||||
method: endpoints.GetWipers.method,
|
method: endpoints.GetWipers.method,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue