diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 11e2ae4c5..be1bb3d1b 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -41,7 +41,6 @@ const storeActions = { RESET_SAVE_SESSION_PROMISE: "resetSaveSessionPromise", // DEPENDENCY MUTATIONS - RESET_VEHICLE_STATE_AND_DEPENDENCIES: "resetVehicleAndDependencies", RESET_DAMAGE_STATE_AND_DEPENDENCIES: "resetDamageAndDependencies", RESET_REGISTRATION_STATE_AND_DEPENDENCIES: "resetRegistrationAndDependencies", RESET_PARTS_STATE_AND_DEPENDENCIES: "resetPartsAndDependencies", @@ -65,6 +64,7 @@ const storeActions = { "resetMoldingAndCapabilityQuestionAnswersIfNeeded", SAVE_MOLDING_QUESTION_ANSWERS: "saveMoldingQuestionAnswers", SAVE_CAPABILITY_QUESTION_ANSWERS: "saveCapabilityQuestionAnswers", + SAVE_QUOTE_PAGE_SELECTIONS: "saveQuotePageSelections", }; export { storeActions }; diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index dc165eecf..ca3ea642e 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -19,7 +19,8 @@ const storeMutations = { UPDATE_MOLDING_QUESTION_ANSWERS: "updateMoldingQuestionAnswers", UPDATE_CAPABILITY_QUESTION_ANSWERS: "updateCapabilityQuestionAnswers", UPDATE_GLASS_PARTS: "updateGlassParts", - UPDATE_OTHER_PARTS: "updateOtherParts", + UPDATE_VAPS: "updateVaps", + UPDATE_SUPPORTING_ITEMS: "updateSupportingItems", UPDATE_REGISTRATION_LICENSE_PLATE: "updateRegistrationLicensePlate", UPDATE_REGISTRATION_ADDRESS: "updateRegistrationAddress", @@ -42,6 +43,7 @@ const storeMutations = { UPDATE_REFERRAL_CORRELATION_ID: "updateReferralCorrelationId", UPDATE_PARENT_ACCT_NUMBER: "updateParentAcctNumber", UPDATE_EON: "updateEON", + UPDATE_IS_INSURANCE: "updateIsInsurance", UPDATE_SAVED_SESSION_ID: "updateSavedSessionId", UPDATE_CRM_CUSTOMER_ID: "updateCrmCustomerId", @@ -54,6 +56,8 @@ const storeMutations = { RESET_DAMAGE_STATE: "resetDamageState", RESET_REGISTRATION_STATE: "resetRegistrationState", RESET_GLASS_PARTS_STATE: "resetGlassPartsState", + RESET_SUPPORTING_ITEMS_STATE: "resetSupportingItemsState", + RESET_VAPS_STATE: "resetVapsState", RESET_STATE: "resetState", RESET_SAVE_SESSION_PROMISE: "resetSaveSessionPromise", diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index fe29401b6..962c8ae1e 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -109,16 +109,17 @@ export default { // Call the "next" function to complete the transition to this page. next((vm) => { vm.setCmsContent(cmsContent); + vm.supportingItems = resultMap.supportingItems; vm.availableLineItems = pricingResults; vm.isInsuranceSelected = vm.getDefaultIsInsuranceSelectedValue(); }); }, data() { return { - pricingRequestResult: null, isInsuranceSelected: null, selectedPackage: null, availableLineItems: null, + supportingItems: null, }; }, methods: { @@ -139,6 +140,19 @@ export default { backButtonAction() { vehicleQuestionsMixin.methods.navigateBack(this); }, + async forwardButtonAction() { + await this.dispatchStoreAction( + this.storeActions.SAVE_QUOTE_PAGE_SELECTIONS, + { + isInsuranceSelected: this.isInsuranceSelected, + vapsItemsToAdd: this.selectedPackage, + supportingItemsToAdd: this.supportingItems, + }, + false + ); + + //return this.navigateForward(); + }, }, components: { funnelHeader, diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index d92a9bb2e..99982004b 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -43,7 +43,9 @@ export default { return this.modelValue; }, set: function (newValue) { - this.$emit("update:modelValue", newValue); + const VapsProductsInSelectedPackage = + this.getVapsLineItemsForSelectedPackage(newValue); + this.$emit("update:modelValue", VapsProductsInSelectedPackage); }, }, nullSafeAvailableLineItems() { @@ -206,6 +208,38 @@ export default { }); return vapsPrice; }, + getVapsLineItemsForSelectedPackage(packageName) { + const vapsLineItemsForSelectedPackage = []; + if (packageName === packageNames.TIER_TWO) { + if (this.frontWipersApplicableForTierTwo) { + vapsLineItemsForSelectedPackage.push( + ...this.getLineItemsContainingPartType(partTypeStrings.FRONT_WIPER) + ); + } + if (this.rearWiperApplicableForTierTwo) { + vapsLineItemsForSelectedPackage.push( + ...this.getLineItemsContainingPartType(partTypeStrings.REAR_WIPER) + ); + } + } else if (packageName === packageNames.TIER_THREE) { + if (this.frontWipersApplicableForTierThree) { + vapsLineItemsForSelectedPackage.push( + ...this.getLineItemsContainingPartType(partTypeStrings.FRONT_WIPER) + ); + } + if (this.rearWiperApplicableForTierThree) { + vapsLineItemsForSelectedPackage.push( + ...this.getLineItemsContainingPartType(partTypeStrings.REAR_WIPER) + ); + } + if (this.rainDefenseApplicableForTierThree) { + vapsLineItemsForSelectedPackage.push( + ...this.getLineItemsContainingPartType(partTypeStrings.RAIN_DEFENSE) + ); + } + } + return vapsLineItemsForSelectedPackage; + }, getCustomValueFromString(str) { switch (str) { case "isRecalibrationOnOrder": @@ -224,10 +258,14 @@ export default { return null; } }, - lineItemsContainsPartType(partType) { + getLineItemsContainingPartType(partType) { const partTypeMatches = this.nullSafeAvailableLineItems.filter( (lineItem) => lineItem.partType.toUpperCase() === partType ); + return partTypeMatches; + }, + lineItemsContainsPartType(partType) { + const partTypeMatches = this.getLineItemsContainingPartType(partType); return !!partTypeMatches.length; }, glassToReplaceContainsGlassLocation(glassLocation) { diff --git a/src/layouts/quote/service-package-question/service-package-radio/service-package-radio.vue b/src/layouts/quote/service-package-question/service-package-radio/service-package-radio.vue index 0b96a8e37..1db29c6e5 100644 --- a/src/layouts/quote/service-package-question/service-package-radio/service-package-radio.vue +++ b/src/layouts/quote/service-package-question/service-package-radio/service-package-radio.vue @@ -1,5 +1,5 @@