From 3cbddd8cda0741951d17b5da0c5e46a228cc0aba Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Fri, 9 Jan 2026 10:58:04 -0500 Subject: [PATCH 01/18] CASH-2025: updates to store actions --- src/constants/store-actions.js | 1 + src/constants/store-mutations.js | 1 + src/store/index.js | 13 +++++++++++-- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index e09a4c78b..2fc0c88eb 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -111,6 +111,7 @@ const storeActions = { SAVE_PAYPAL_TOKEN: "savePaypalToken", SAVE_NEXTGEN_SETTLED_AMOUNT: "saveNextGenSettledAmount", SAVE_IS_RECAL_ACK_OPT_IN: "saveIsRecalAckOptIn", + SAVE_IS_OEM_GLASS_SELECTED: "saveIsOemGlassSelected", SAVE_IS_MSR_FEE_APPLICABLE: "saveIsMSRFeeApplicable", CREATE_SUBMITTED_STATE: "createSubmittedState", diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index 2112c789c..5167581e0 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -69,6 +69,7 @@ const storeMutations = { LOCK_TOKEN: "updateLockToken", UPDATE_SETTLED_TENDER_AMOUNT: "updateSettledTenderAmount", UPDATE_IS_RECAL_ACK_OPT_IN: "updateIsRecalAckOptIn", + UPDATE_IS_OEM_GLASS_SELECTED: "updateIsOemGlassSelected", UPDATE_IS_MSR_FEE_APPLICABLE: "updateIsMSRFeeApplicable", UPDATE_CASH_PRICE_SUBTOTAL: "updateCashPriceSubTotal", diff --git a/src/store/index.js b/src/store/index.js index 1c1f4038f..8dd6d7502 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -190,6 +190,7 @@ const getDefaultState = () => { settledTenderAmount: 0, isRecalAckOptIn: false, isMSRFeeApplicable: false, + isOemGlassSelected: false, }, applicationUser: { eventBus: [], @@ -342,6 +343,9 @@ export const mutations = { updateIsRecalAckOptIn(state, isRecalAckOptIn) { state.order.isRecalAckOptIn = isRecalAckOptIn; }, + updateIsOemGlassSelected(state, isOemGlassSelected) { + state.order.isOemGlassSelected = isOemGlassSelected; + }, updateIsMSRFeeApplicable(state, isMSRFeeApplicable) { state.order.isMSRFeeApplicable = isMSRFeeApplicable; }, @@ -674,6 +678,7 @@ export const mutations = { state.order.eon = sessionInformation.order.eon; state.order.customerPortalLoginToken = sessionInformation.order.CustomerPortalLoginToken; state.order.isRecalAckOptIn = sessionInformation.order.isRecalAckOptIn; + state.order.isOemGlassSelected = sessionInformation.order.isOemGlassSelected; if (state.order.vehicle.vin !== sessionInformation.order.vehicle?.vin) { state.applicationUser.pageData[routeData.PART_QUESTIONS.name] = null; @@ -1853,8 +1858,7 @@ export const actions = { const serviceType = order.serviceLocation?.appointmentType; const referralSeqNumber = order.referralSequenceNumber; const parentAccountNumber = applicationConfig.CASH_PARENT_ACCOUNT_NUMBER; - const oemEndorsementFlag = false; // Need to update from the store when available - + const oemEndorsementFlag = order.isOemGlassSelected; // create a new array to avoid mutating state const glassArrayForPayload = convertGlassPieceNamingForApi(glassArray); const resultsArrayForPayload = convertResultsForApi(resultsArray); @@ -2542,6 +2546,7 @@ export const actions = { lockToken: order.lockToken, isRecalAckOptIn: order.isRecalAckOptIn, isMSRFeeApplicable: order.isMSRFeeApplicable, + isOemGlassSelected: order.isOemGlassSelected, cashPriceSubTotal: order.cashPriceSubTotal, }, }, @@ -2959,6 +2964,10 @@ export const actions = { context.commit(storeMutations.UPDATE_IS_RECAL_ACK_OPT_IN, isRecalAckOptIn); }, + saveIsOemGlassSelected(context, isOemGlassSelected) { + context.commit(storeMutations.UPDATE_IS_OEM_GLASS_SELECTED, isOemGlassSelected); + }, + saveIsMSRFeeApplicable(context, isMSRFeeApplicable) { context.commit(storeMutations.UPDATE_IS_MSR_FEE_APPLICABLE, isMSRFeeApplicable); }, From 9af898604d8f28d12ee50ca2f6f410ecbc640068 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Fri, 9 Jan 2026 10:59:33 -0500 Subject: [PATCH 02/18] CASH-2025: temp commenting during dev --- src/layouts/quote/quote.vue | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index b08e9ed72..9f973d79d 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -2,6 +2,13 @@
+ +
+

+ alternateGlassPartsForOem: {{ alternateGlassPartsForOem }} +

+
+
@@ -743,6 +750,12 @@ export default { this.lineItems.supportingItems = this.filterOutFees(this.lineItems.supportingItems); } + // isOemGlassSelected? + // if it IS, then swap out the glass parts in the line items for these + + // if it's NOT selected BUT alternateGlassPartsForOem exist, then swap out + // // the existing glass line items for whatever is in alternateGlassPartsForOem + if (this.lineItems.glassParts?.length > 0) { this.dispatchStoreAction( this.storeActions.SAVE_GLASS_PARTS_SUPPRESSING_STATE_RESETTING, From c6e006020c1decd8a57fffd63e371c068f7acf34 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Fri, 9 Jan 2026 11:01:16 -0500 Subject: [PATCH 03/18] CASH-2025: new oem glass question component --- .../oem-glass-question/oem-glass-question.vue | 134 ++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 src/layouts/quote/oem-glass-question/oem-glass-question.vue diff --git a/src/layouts/quote/oem-glass-question/oem-glass-question.vue b/src/layouts/quote/oem-glass-question/oem-glass-question.vue new file mode 100644 index 000000000..b1b4b4e48 --- /dev/null +++ b/src/layouts/quote/oem-glass-question/oem-glass-question.vue @@ -0,0 +1,134 @@ + + + + + From e7e499ca461ac96dc4a0a4a42737cde38cb95855 Mon Sep 17 00:00:00 2001 From: Adam Caouette Date: Fri, 9 Jan 2026 11:05:40 -0500 Subject: [PATCH 04/18] CASH-2025: add oem question and logic --- src/layouts/quote/quote.vue | 58 ++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 9f973d79d..0f273dcb1 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -93,6 +93,11 @@ isInsuranceSelected ? isInsuranceContinueButtonText : '' " /> + + ({ @@ -410,6 +437,8 @@ export default { vm.holdParentAccountNumber = holdParentAccountNumber; vm.holdBillToAccountNumber = holdBillToAccountNumber; vm.skipToInsurance = shouldSkipToInsurance; + vm.offerOem = offerOem; + vm.alternateGlassPartsForOem = alternateGlassPartsForOem; // oemParts if (revalidatePromoResponse) { const revalidateAlerts = buildToastMessagesFromRevalidateOrValidatePromoResponse( @@ -577,6 +606,8 @@ export default { availableLineItems: null, lineItems: [], addableVaps: [], + offerOem: null, + alternateGlassPartsForOem: null, servicePackage: null, holdParentAccountNumber: null, holdBillToAccountNumber: null, @@ -586,6 +617,7 @@ export default { packageNumber: null, skipToInsurance: null, servicePackageSelected: null, + isOemGlassSelected: false, }; }, async mounted() { @@ -788,6 +820,11 @@ export default { }, false ); + this.dispatchStoreAction( + this.storeActions.SAVE_IS_OEM_GLASS_SELECTED, + this.isOemGlassSelected, + false + ); await savePageData( this.pageName, @@ -922,6 +959,7 @@ export default { recalDisclaimer, saveProgressModalQuestion, saveProgressPopupQuestion, + oemGlassQuestion, }, }; From 9fad67319b925da03b42c8b3ede8135b46bf7871 Mon Sep 17 00:00:00 2001 From: Chris Redelinghuys Date: Fri, 9 Jan 2026 15:50:54 -0500 Subject: [PATCH 05/18] CASH-2025: Swap OEM glass order item --- .../oem-glass-question/oem-glass-question.vue | 5 +-- src/layouts/quote/quote.spec.js | 3 ++ src/layouts/quote/quote.vue | 44 +++++++++++++------ 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/layouts/quote/oem-glass-question/oem-glass-question.vue b/src/layouts/quote/oem-glass-question/oem-glass-question.vue index b1b4b4e48..e1fdc2508 100644 --- a/src/layouts/quote/oem-glass-question/oem-glass-question.vue +++ b/src/layouts/quote/oem-glass-question/oem-glass-question.vue @@ -1,7 +1,5 @@