diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index 7a0d19c03..3e779e027 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -55,6 +55,7 @@ const storeMutations = { WORK_ORDER_NUMBER: "updateWorkOrderNumber", Customer_Portal_Login_Token: "updateCustomerPortalLoginToken", LOCK_TOKEN: "updateLockToken", + UPDATE_SETTLED_TENDER_AMOUNT: "updateSettledTenderAmount", // EVENT BUS MUTATIONS ADD_EVENT_TO_BUS: "addEventToBus", diff --git a/src/helpers/heritage-integration/order-helper.js b/src/helpers/heritage-integration/order-helper.js index 79af9c432..e0873d822 100644 --- a/src/helpers/heritage-integration/order-helper.js +++ b/src/helpers/heritage-integration/order-helper.js @@ -164,6 +164,7 @@ async function saveSessionHelper( workOrderNumber: savedSessionInfo.data.workOrderNumber, customerPortalLoginToken: savedSessionInfo.data.customerPortalLoginToken, lockToken: savedSessionInfo.data.lockToken, + settledTenderAmount: savedSessionInfo.data.settledTenderAmount, }, false ); diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index 3968248d6..a592a6d9d 100644 --- a/src/helpers/promotions-helper.js +++ b/src/helpers/promotions-helper.js @@ -112,6 +112,7 @@ export async function revalidatePromosAndValidateQueryStringPromo( pageNameToLog, false ); + const revalidationErrorPromoCodes = revalidatePromoResponse.errors.map((x) => x.promoCode); baseMixin.methods.dispatchStoreAction( storeActions.SAVE_ACTIVE_AND_OR_INACTIVE_PROMOS, @@ -122,6 +123,7 @@ export async function revalidatePromosAndValidateQueryStringPromo( false ); } + if (hasNewPromo) { validatePromoResponse = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.VALIDATE_ORDER_PROMO_AND_SAVE_SERVER_DATA, @@ -132,6 +134,7 @@ export async function revalidatePromosAndValidateQueryStringPromo( pageNameToLog, false ); + if (validatePromoResponse.errorCode == null) { // Save promo to store const activePromos = store.getters.order.lineItems.promos ?? []; diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 32c36c161..32904b8ee 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -39,6 +39,7 @@
lineItem.partType == partTypeStrings.FRONT_WIPER + ).length > 0; + + if (revalidateResponseHasFrontWiperLineItems) { + const frontWiperLineItemsInStore = this.lineItems.vaps.find( + (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER + ); + if (frontWiperLineItemsInStore.length > 0) { + this.lineItems.vaps = this.lineItems.vaps.find( + (lineItem) => lineItem.partType != partTypeStrings.FRONT_WIPER + ); + } + } + + const vapsToAddToCart = getVapsThatNeedToBeAddedToSatisfyPromos( + revalidatePromoResponse.promoLineItems, + this.availableVaps, + this.lineItems + ); + this.lineItems.vaps.push(...vapsToAddToCart); + this.lineItems.promos = revalidatePromoResponse.promoLineItems; this.inactivePromos = revalidatePromoResponse.errors.map((x) => getPromoCodeWithoutBundleIdentifier(x.promoCode) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 282133743..46c6a5b61 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -60,7 +60,7 @@ @@ -232,12 +232,14 @@ export default { this.selectedMake = null; this.selectedModel = null; this.selectedStyle = null; + this.carId = null; } } else { this.makeOptions = []; this.selectedMake = null; this.selectedModel = null; this.selectedStyle = null; + this.carId = null; } }, async selectedMake(make) { @@ -248,11 +250,13 @@ export default { else { this.selectedModel = null; this.selectedStyle = null; + this.carId = null; } } else { this.modelOptions = []; this.selectedModel = null; this.selectedStyle = null; + this.carId = null; } }, async selectedModel(model) { @@ -269,10 +273,14 @@ export default { if (sameStyle) { this.getVehicleDetails(); } - } else this.selectedStyle = null; + } else { + this.selectedStyle = null; + this.carId = null; + } } else { this.styleOptions = []; this.selectedStyle = null; + this.carId = null; } }, async selectedStyle(style) { @@ -280,6 +288,7 @@ export default { this.getVehicleDetails(); } else { this.imageUrl = null; + this.carId = null; } }, }, @@ -294,6 +303,15 @@ export default { else if (this.imageUrl == null && this.carId !== null) return false; else return true; }, + allDataRetrieved() { + return ( + !!this.selectedYear && + !!this.selectedMake && + !!this.selectedModel && + !!this.selectedStyle && + !!this.carId + ); + }, }, methods: { getVehicle(year, make, model, style) { diff --git a/src/router/index.js b/src/router/index.js index 7769d8a2d..a20fe828f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -172,6 +172,8 @@ router.beforeEach(async (to, from, next) => { if (isInIframe && notToPIAReturn) { const newUrl = `${window.top.location.origin}${to.href}`; window.top.location.href = newUrl; + } else if (toQueryPage === fromQueryPage) { + router.go(0); } else { next(); } diff --git a/src/store/index.js b/src/store/index.js index a094a8a15..673c4dfa1 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -132,6 +132,7 @@ const getDefaultState = () => { workOrderNumber: null, customerPortalLoginToken: null, lockToken: null, + settledTenderAmount: 0, }, applicationUser: { eventBus: [], @@ -257,6 +258,9 @@ export const mutations = { updateLockToken(state, lockToken) { state.order.lockToken = lockToken; }, + updateSettledTenderAmount(state, settledTenderAmount) { + state.order.settledTenderAmount = settledTenderAmount; + }, updateCCToken(state, ccToken) { state.order.payment.ccToken.subscriptionId = ccToken.subscriptionId; state.order.payment.ccToken.expMonth = ccToken.expMonth; @@ -1041,6 +1045,7 @@ export const actions = { workOrderNumber, customerPortalLoginToken, lockToken, + settledTenderAmount, } ) { context.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber); @@ -1054,6 +1059,7 @@ export const actions = { context.commit(storeMutations.WORK_ORDER_NUMBER, workOrderNumber); context.commit(storeMutations.LOCK_TOKEN, lockToken); context.commit(storeMutations.Customer_Portal_Login_Token, customerPortalLoginToken); + context.commit(storeMutations.UPDATE_SETTLED_TENDER_AMOUNT, settledTenderAmount); }, logPageView(