Merge pull request #786 from Safelite/feature/richardson/SSR-1392

Updates for calculating highest fully completed package tier
This commit is contained in:
brich1212safe 2024-07-11 13:32:29 -04:00 committed by GitHub
commit 3a8efac0ea
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 23 additions and 53 deletions

View file

@ -19,6 +19,7 @@ import partTypeStrings from '@/constants/part-type-strings';
import { useMainStore } from '@/store'; import { useMainStore } from '@/store';
import allGlassPartsAndItemsHavePrices from '@/layouts/service-packages/service-package-helper/service-package-helper'; import allGlassPartsAndItemsHavePrices from '@/layouts/service-packages/service-package-helper/service-package-helper';
import { getPriceOfLineItem } from '@/helpers/price-calculator'; import { getPriceOfLineItem } from '@/helpers/price-calculator';
import { getHighestFullySatisfiedTier } from '@/helpers/service-package-helper.js';
const glassLocations = damageLocationsSelected; const glassLocations = damageLocationsSelected;
@ -40,7 +41,10 @@ export default {
groupName: String, groupName: String,
validationRules: String, validationRules: String,
isRequired: Boolean, isRequired: Boolean,
availableLineItems: [] availableLineItems: {
type: Array,
default: () => []
}
}, },
emits: ['vapsItemsSelected'], emits: ['vapsItemsSelected'],
data() { data() {
@ -212,51 +216,15 @@ export default {
return vapsPrice; return vapsPrice;
}, },
selectDefaultPackage() { selectDefaultPackage() {
const vapsFromStore = store.order.lineItems.vaps; const { glassToReplace, isRepair } = store.order.damage;
let lowestTierForPackage = packageNames.TIER_ONE; const { vaps } = store.order.lineItems;
if (vapsFromStore?.length > 0) { const defaultTier = getHighestFullySatisfiedTier(
vapsFromStore.every((vapsItem) => { glassToReplace ?? [],
const lowestTierForThisItem = this.getLowestTierForThisItem(vapsItem); this.availableLineItems,
if (lowestTierForThisItem === packageNames.TIER_THREE) { isRepair,
lowestTierForPackage = packageNames.TIER_THREE; vaps ?? []
return false; );
} if (lowestTierForThisItem === packageNames.TIER_TWO) { this.selectedPackageName = defaultTier;
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;
}, },
getVapsLineItemsForSelectedPackage(packageName) { getVapsLineItemsForSelectedPackage(packageName) {
const vapsLineItemsForSelectedPackage = []; const vapsLineItemsForSelectedPackage = [];

View file

@ -3,7 +3,7 @@
ref="theForm" ref="theForm"
v-slot="{ meta }" v-slot="{ meta }"
@submit="onSubmit" @submit="onSubmit"
@invalid-submit="onInvalidSubmit"> @invalidSubmit="onInvalidSubmit">
<div class="container-fluid fade-on-route-transition service-packages"> <div class="container-fluid fade-on-route-transition service-packages">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-6 px-0 px-md-2"> <div class="col-md-6 px-0 px-md-2">
@ -50,8 +50,8 @@
ref="RearWiperModal" ref="RearWiperModal"
cmsWidgetName="RearWiperModal" /> cmsWidgetName="RearWiperModal" />
<contentGroupModal <contentGroupModal
ref="RecalModal" ref="RecalModal"
cmsWidgetName="RecalModal" /> cmsWidgetName="RecalModal" />
</div> </div>
</Form> </Form>
</template> </template>
@ -72,7 +72,6 @@ import allGlassPartsAndItemsHavePrices from '@/layouts/service-packages/service-
import globalRules from '@/constants/global-rules'; import globalRules from '@/constants/global-rules';
import servicePackageQuestion from '@/layouts/service-packages/service-package-question/service-package-question.vue'; import servicePackageQuestion from '@/layouts/service-packages/service-package-question/service-package-question.vue';
import issPageValues from '@/router/router-constants/issPage-values'; import issPageValues from '@/router/router-constants/issPage-values';
import bailoutCode from '@/constants/bailoutCode';
import bailoutMessage from '@/constants/bailoutMessage'; import bailoutMessage from '@/constants/bailoutMessage';
const store = useMainStore(); const store = useMainStore();
@ -143,9 +142,7 @@ export default {
if (!hasBailedOut) { if (!hasBailedOut) {
next((vm) => { next((vm) => {
vm.setCmsContent(resultMap.cmsContent); vm.setCmsContent(resultMap.cmsContent);
vm.pricedGlassParts = clonedGlassParts; vm.setData(clonedGlassParts, resultMap.supportingItems, pricingResults);
vm.supportingItems = resultMap.supportingItems;
vm.availableLineItems = pricingResults;
}); });
} }
}, },
@ -185,6 +182,11 @@ export default {
&& store.order.lineItems.glassParts.length > 0)) && store.order.lineItems.glassParts.length > 0))
); );
}, },
setData(clonedGlassParts, supportingItems, pricingResults) {
this.pricedGlassParts = clonedGlassParts;
this.supportingItems = supportingItems;
this.availableLineItems = pricingResults;
},
vapsItemsSelectedAction(vapsItemsSelected) { vapsItemsSelectedAction(vapsItemsSelected) {
this.selectedVaps = vapsItemsSelected; this.selectedVaps = vapsItemsSelected;
}, },