CASH-2025: Swap OEM glass order item
This commit is contained in:
parent
e7e499ca46
commit
9fad67319b
3 changed files with 36 additions and 16 deletions
|
|
@ -1,7 +1,5 @@
|
|||
<template>
|
||||
<div
|
||||
class="oem-glass-question-container py-3 my-2"
|
||||
:class="[isExpanded ? 'expanded' : '']">
|
||||
<div class="oem-glass-question-container py-3 my-2" :class="[isExpanded ? 'expanded' : '']">
|
||||
<div
|
||||
class="oem-glass-question-header d-flex align-items-center justify-content-between"
|
||||
@click="toggleIsExpanded">
|
||||
|
|
@ -27,6 +25,7 @@ export default {
|
|||
name: "oem-part-question",
|
||||
props: {
|
||||
cmsWidgetName: String,
|
||||
modelValue: Boolean,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
|
|
|||
|
|
@ -118,6 +118,9 @@ jest.mock("@/mixins/experiment-mixin.js", () => ({
|
|||
if (settingName === mockExperimentSettings.DISPLAY_AFTERPAY_BREAKOUT_DISPLAY) {
|
||||
return false;
|
||||
}
|
||||
if (settingName === mockExperimentSettings.OFFER_OEM) {
|
||||
return false;
|
||||
}
|
||||
return "test";
|
||||
},
|
||||
},
|
||||
|
|
|
|||
|
|
@ -231,13 +231,10 @@ export default {
|
|||
null,
|
||||
"quote"
|
||||
);
|
||||
|
||||
// call API oem-after-market-parts method
|
||||
const experimentAllowsOfferOem = true;
|
||||
// const experimentAllowsOfferOem = experimentMixin.methods.hasSettingEqualTo(
|
||||
// experimentSettings.OFFER_OEM,
|
||||
// "true"
|
||||
// );
|
||||
const experimentAllowsOfferOem = experimentMixin.methods.hasSettingEqualTo(
|
||||
experimentSettings.OFFER_OEM,
|
||||
"true"
|
||||
);
|
||||
const oemGlassCheckPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||
storeActions.GET_OEM_AFTERMARKET_PARTS,
|
||||
null,
|
||||
|
|
@ -343,9 +340,9 @@ export default {
|
|||
|
||||
const oemGlassCheck = resultMap.oemGlassCheck;
|
||||
const offerOem = experimentAllowsOfferOem ? oemGlassCheck.offerOem : false;
|
||||
console.log("offerOem: ", offerOem);
|
||||
const oemGlassPieceParts = oemGlassCheck?.glassPieceParts;
|
||||
const oemGlassParts = oemGlassPieceParts ? oemGlassPieceParts[0].parts : null;
|
||||
const isOemGlassSelected = store.getters.order.isOemGlassSelected;
|
||||
|
||||
let alternateGlassPartsForOem;
|
||||
// if (oemGlassCheck.glassPieceParts[0].parts) {
|
||||
|
|
@ -439,6 +436,7 @@ export default {
|
|||
vm.skipToInsurance = shouldSkipToInsurance;
|
||||
vm.offerOem = offerOem;
|
||||
vm.alternateGlassPartsForOem = alternateGlassPartsForOem; // oemParts
|
||||
vm.isOemGlassSelected = isOemGlassSelected;
|
||||
|
||||
if (revalidatePromoResponse) {
|
||||
const revalidateAlerts = buildToastMessagesFromRevalidateOrValidatePromoResponse(
|
||||
|
|
@ -782,11 +780,15 @@ 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.alternateGlassPartsForOem && this.alternateGlassPartsForOem.length > 0) {
|
||||
let isOEMGlassOnOrder = this.isOEMGlassOnOrder(this.lineItems.glassParts);
|
||||
if (
|
||||
(this.isOemGlassSelected && !isOEMGlassOnOrder) ||
|
||||
(!this.isOemGlassSelected && isOEMGlassOnOrder)
|
||||
) {
|
||||
this.swapOEMGlassPartsOnOrder();
|
||||
}
|
||||
}
|
||||
|
||||
if (this.lineItems.glassParts?.length > 0) {
|
||||
this.dispatchStoreAction(
|
||||
|
|
@ -943,6 +945,22 @@ export default {
|
|||
const alert = createPromoSuccessAlert(lineItems.promos[0].promoCode);
|
||||
this.$refs.funnelHeader.pushGlobalAlert(alert, alert.shouldAutoFade);
|
||||
},
|
||||
isOEMGlassOnOrder(glassParts) {
|
||||
if (glassParts && glassParts.length > 0) {
|
||||
return glassParts.some((part) => part.partNumber.endsWith("OEM"));
|
||||
}
|
||||
return false;
|
||||
},
|
||||
swapOEMGlassPartsOnOrder() {
|
||||
const windshieldString = "WINDSHIELD";
|
||||
this.lineItems.glassParts.forEach((part, index) => {
|
||||
if (part.partType === windshieldString) {
|
||||
this.lineItems.glassParts[index] = this.alternateGlassPartsForOem.find(
|
||||
(altPart) => altPart.partType === windshieldString
|
||||
);
|
||||
}
|
||||
});
|
||||
},
|
||||
},
|
||||
components: {
|
||||
funnelHeader,
|
||||
|
|
|
|||
Loading…
Reference in a new issue