diff --git a/src/layouts/service-packages/service-package-question/service-package-question.vue b/src/layouts/service-packages/service-package-question/service-package-question.vue index 06a97fdf..bad1f443 100644 --- a/src/layouts/service-packages/service-package-question/service-package-question.vue +++ b/src/layouts/service-packages/service-package-question/service-package-question.vue @@ -19,6 +19,7 @@ import partTypeStrings from '@/constants/part-type-strings'; import { useMainStore } from '@/store'; import allGlassPartsAndItemsHavePrices from '@/layouts/service-packages/service-package-helper/service-package-helper'; import { getPriceOfLineItem } from '@/helpers/price-calculator'; +import { getHighestFullySatisfiedTier } from '@/helpers/service-package-helper.js'; const glassLocations = damageLocationsSelected; @@ -40,7 +41,10 @@ export default { groupName: String, validationRules: String, isRequired: Boolean, - availableLineItems: [] + availableLineItems: { + type: Array, + default: () => [] + } }, emits: ['vapsItemsSelected'], data() { @@ -212,51 +216,15 @@ export default { return vapsPrice; }, selectDefaultPackage() { - const vapsFromStore = store.order.lineItems.vaps; - let lowestTierForPackage = packageNames.TIER_ONE; - if (vapsFromStore?.length > 0) { - vapsFromStore.every((vapsItem) => { - const lowestTierForThisItem = this.getLowestTierForThisItem(vapsItem); - if (lowestTierForThisItem === packageNames.TIER_THREE) { - lowestTierForPackage = packageNames.TIER_THREE; - return false; - } if (lowestTierForThisItem === packageNames.TIER_TWO) { - lowestTierForPackage = packageNames.TIER_TWO; - return true; - } - return true; - }); - } - this.selectedPackageName = lowestTierForPackage; - }, - - getLowestTierForThisItem(vapsItem) { - let lowestTierForThisItem = null; - switch (vapsItem.partType) { - case partTypeStrings.FRONT_WIPER: - if (this.frontWipersApplicableForTierThree) { - lowestTierForThisItem = packageNames.TIER_THREE; - } - if (this.frontWipersApplicableForTierTwo) { - lowestTierForThisItem = packageNames.TIER_TWO; - } - break; - case partTypeStrings.REAR_WIPER: - if (this.rearWiperApplicableForTierThree) { - lowestTierForThisItem = packageNames.TIER_THREE; - } - if (this.rearWiperApplicableForTierTwo) { - lowestTierForThisItem = packageNames.TIER_TWO; - } - break; - case partTypeStrings.RAIN_DEFENSE: - if (this.rainDefenseApplicableForTierThree) { - lowestTierForThisItem = packageNames.TIER_THREE; - } - break; - default: - } - return lowestTierForThisItem; + const { glassToReplace, isRepair } = store.order.damage; + const { vaps } = store.order.lineItems; + const defaultTier = getHighestFullySatisfiedTier( + glassToReplace ?? [], + this.availableLineItems, + isRepair, + vaps ?? [] + ); + this.selectedPackageName = defaultTier; }, getVapsLineItemsForSelectedPackage(packageName) { const vapsLineItemsForSelectedPackage = []; diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue index f0a9b527..0849ef35 100644 --- a/src/layouts/service-packages/service-packages.vue +++ b/src/layouts/service-packages/service-packages.vue @@ -3,7 +3,7 @@ ref="theForm" v-slot="{ meta }" @submit="onSubmit" - @invalid-submit="onInvalidSubmit"> + @invalidSubmit="onInvalidSubmit">