From 5238b9a987f7e0d2617402171b08a028e9807741 Mon Sep 17 00:00:00 2001 From: Leah Schumann Date: Thu, 7 Dec 2023 06:38:07 -0500 Subject: [PATCH 1/9] Ensured that promo added line items are taxed --- src/helpers/promotions-helper.js | 3 +++ src/layouts/payment-method/payment-method.vue | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index 3968248d6..781b3fc7a 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/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index a480752e3..35c60937a 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -112,6 +112,7 @@ import { defineRule } from "vee-validate"; import { required } from "@/helpers/validation-rules"; import { errorMessages } from "@/constants/error-messages"; import { AppointmentTypeStrings } from "@/constants/schedule-constants"; +import { partTypeStrings } from "@/constants/part-type-strings"; import { mapTaxedLineItemsToStoreFormat } from "../../store"; defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); @@ -378,6 +379,27 @@ export default { ); } + // Because we don't yet have a robust solution for part interchange ... + // if there are front wiper line items in the revalidate response, we need to delete any existing front wiper line items from the store + // and replace them with those that come back from revalidation. + const revalidateResponseHasFrontWiperLineItems = + revalidatePromoResponse.promoLineItems.find( + lineItem => 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) From 669ea2927c9e0e0180fa76ae00d58ebf45253a25 Mon Sep 17 00:00:00 2001 From: Leah Schumann Date: Thu, 7 Dec 2023 06:44:40 -0500 Subject: [PATCH 2/9] Prettified --- src/helpers/promotions-helper.js | 2 +- src/layouts/payment-method/payment-method.vue | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index 781b3fc7a..a592a6d9d 100644 --- a/src/helpers/promotions-helper.js +++ b/src/helpers/promotions-helper.js @@ -134,7 +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/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 35c60937a..1c94967d4 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -382,17 +382,22 @@ export default { // Because we don't yet have a robust solution for part interchange ... // if there are front wiper line items in the revalidate response, we need to delete any existing front wiper line items from the store // and replace them with those that come back from revalidation. - const revalidateResponseHasFrontWiperLineItems = + const revalidateResponseHasFrontWiperLineItems = revalidatePromoResponse.promoLineItems.find( - lineItem => lineItem.partType == partTypeStrings.FRONT_WIPER).length > 0; + (lineItem) => lineItem.partType == partTypeStrings.FRONT_WIPER + ).length > 0; if (revalidateResponseHasFrontWiperLineItems) { - const frontWiperLineItemsInStore = this.lineItems.vaps.find(lineItem => lineItem.partType == partTypeStrings.FRONT_WIPER); + 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); + this.lineItems.vaps = this.lineItems.vaps.find( + (lineItem) => lineItem.partType != partTypeStrings.FRONT_WIPER + ); } } - + const vapsToAddToCart = getVapsThatNeedToBeAddedToSatisfyPromos( revalidatePromoResponse.promoLineItems, this.availableVaps, From 7886fda8335ab964f8e47c5738deac25934d7fa6 Mon Sep 17 00:00:00 2001 From: Leah Schumann Date: Thu, 7 Dec 2023 13:56:07 -0500 Subject: [PATCH 3/9] Now pricing all vaps on the order not just available vaps --- src/layouts/payment-method/payment-method.vue | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index a480752e3..39541db02 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -156,12 +156,14 @@ export default { const lineItemsFromStore = deepClone(store.getters.order.lineItems); const glassParts = lineItemsFromStore.glassParts ?? []; const supportingItems = lineItemsFromStore.supportingItems ?? []; + const vaps = lineItemsFromStore.vaps ?? []; const lineItemsToTax = [ resultMap.rainDefense, ...supportingItems, ...resultMap.wipers, ...glassParts, + ...vaps, ]; const availableVaps = [resultMap.rainDefense, ...resultMap.wipers]; From d01349d5ca628a777fb2376652838071b61a7b71 Mon Sep 17 00:00:00 2001 From: CarlNation <32103961+CarlNation@users.noreply.github.com> Date: Thu, 7 Dec 2023 14:02:32 -0500 Subject: [PATCH 4/9] CSR-1871 use settled tender amount to show hide cart on confirmation page --- src/constants/store-mutations.js | 1 + src/helpers/heritage-integration/order-helper.js | 1 + src/layouts/confirmation/confirmation.vue | 10 ++++++++++ src/store/index.js | 6 ++++++ 4 files changed, 18 insertions(+) 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/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index 32c36c161..ba80375a0 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -39,6 +39,7 @@
{ 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( From 25ef4b7b4bc364ed7558478a077be4cb574d15e2 Mon Sep 17 00:00:00 2001 From: CarlNation Date: Thu, 7 Dec 2023 14:06:19 -0500 Subject: [PATCH 5/9] CSR-1871 remove console.logs --- src/layouts/confirmation/confirmation.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index ba80375a0..32904b8ee 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -140,8 +140,6 @@ export default { }, computed: { ShowCart() { - console.log(this.isPia); - console.log(store.getters.submittedOrder.settledTenderAmount); if (this.isPia && store.getters.submittedOrder.settledTenderAmount == 0) { return false; } From 87bac3566ff092b5cbcefb045c42942d2aeaec04 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 7 Dec 2023 15:21:58 -0500 Subject: [PATCH 6/9] Reload on self-navigation to avoid total locks on vehicle --- src/router/index.js | 2 ++ 1 file changed, 2 insertions(+) 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(); } From 241783cb88b3c155bb606ebdfc560e5a6f5ffc1e Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 7 Dec 2023 15:22:27 -0500 Subject: [PATCH 7/9] Block advancing past vehicle page until carId is also retrieved --- src/layouts/vehicle/vehicle.vue | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 282133743..f32af0bfb 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -60,7 +60,7 @@ @@ -294,6 +294,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) { From 967f81857b81b4f553b8932e785d85b4224fa6c9 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Thu, 7 Dec 2023 15:40:22 -0500 Subject: [PATCH 8/9] Clear carId when other fields on page change. --- src/layouts/vehicle/vehicle.vue | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index f32af0bfb..46c6a5b61 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -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; } }, }, From fe7a5e260bee26b34d5370691ca9fb05e757da02 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Fri, 8 Dec 2023 09:33:41 -0500 Subject: [PATCH 9/9] CSR-1874 add isRequired to customer-details form fields. --- src/layouts/customer-details/customer-details.vue | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/layouts/customer-details/customer-details.vue b/src/layouts/customer-details/customer-details.vue index 8f62b4b8d..ccb77c184 100644 --- a/src/layouts/customer-details/customer-details.vue +++ b/src/layouts/customer-details/customer-details.vue @@ -10,6 +10,7 @@