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
|
||||
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;
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
<hr />
|
||||
|
||||
<cart
|
||||
ref="cart"
|
||||
:damage="damageInfo"
|
||||
:availableVaps="availableVaps"
|
||||
:allowItemRemoval="false"
|
||||
|
|
@ -227,7 +228,7 @@ export default {
|
|||
invoiceNumber: this.getInvoiceNumber(),
|
||||
totalAmount: this.getAmountDue(),
|
||||
displayAmount: this.getDisplayAmountDue(),
|
||||
piaLineItems: this.getPiaLineItems(),
|
||||
piaLineItems: "",
|
||||
paypalPayment: this.isPaypal(),
|
||||
lineItems: [],
|
||||
availableVaps: [],
|
||||
|
|
@ -257,7 +258,10 @@ export default {
|
|||
|
||||
const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||
storeActions.GET_WIPERS,
|
||||
null,
|
||||
{
|
||||
serviceZipCode: store.getters.order.serviceLocation.zipCode,
|
||||
carId: store.getters.vehicle.carId,
|
||||
},
|
||||
"payment"
|
||||
);
|
||||
|
||||
|
|
@ -357,11 +361,18 @@ export default {
|
|||
// Call the "next" function to complete the transition to this page.
|
||||
next(async (vm) => {
|
||||
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);
|
||||
|
|
|
|||
|
|
@ -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 };
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@
|
|||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" class="mt-5" />
|
||||
|
||||
<serviceZipModalQuestion
|
||||
editScreenReaderTextCmsWidgetName="ScreenReaderZipEditWidget"
|
||||
v-model="serviceZipCodeQuestion"
|
||||
ref="serviceZipCodeQuestion"
|
||||
:mobileFeePart="mobileFeePart"
|
||||
|
|
|
|||
|
|
@ -6,7 +6,11 @@
|
|||
linkType="text"
|
||||
:text="serviceZipLinkText"
|
||||
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>
|
||||
<modal
|
||||
|
|
@ -68,8 +72,12 @@ export default {
|
|||
},
|
||||
linkWidgetName: String,
|
||||
modalWidgetName: String,
|
||||
editScreenReaderTextCmsWidgetName: String,
|
||||
},
|
||||
computed: {
|
||||
screenReaderOnlyText() {
|
||||
return this.getCmsContent(this.editScreenReaderTextCmsWidgetName, "Text");
|
||||
},
|
||||
serviceZipLinkText() {
|
||||
if (this.modelValue.zipCode && this.modelValue.zipCode.length > 0) {
|
||||
return this.modelValue.state + ", " + this.modelValue.zipCode;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Reference in a new issue