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>
|
<template>
|
||||||
<div
|
<div class="oem-glass-question-container py-3 my-2" :class="[isExpanded ? 'expanded' : '']">
|
||||||
class="oem-glass-question-container py-3 my-2"
|
|
||||||
:class="[isExpanded ? 'expanded' : '']">
|
|
||||||
<div
|
<div
|
||||||
class="oem-glass-question-header d-flex align-items-center justify-content-between"
|
class="oem-glass-question-header d-flex align-items-center justify-content-between"
|
||||||
@click="toggleIsExpanded">
|
@click="toggleIsExpanded">
|
||||||
|
|
@ -27,6 +25,7 @@ export default {
|
||||||
name: "oem-part-question",
|
name: "oem-part-question",
|
||||||
props: {
|
props: {
|
||||||
cmsWidgetName: String,
|
cmsWidgetName: String,
|
||||||
|
modelValue: Boolean,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,9 @@ jest.mock("@/mixins/experiment-mixin.js", () => ({
|
||||||
if (settingName === mockExperimentSettings.DISPLAY_AFTERPAY_BREAKOUT_DISPLAY) {
|
if (settingName === mockExperimentSettings.DISPLAY_AFTERPAY_BREAKOUT_DISPLAY) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (settingName === mockExperimentSettings.OFFER_OEM) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return "test";
|
return "test";
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -231,13 +231,10 @@ export default {
|
||||||
null,
|
null,
|
||||||
"quote"
|
"quote"
|
||||||
);
|
);
|
||||||
|
const experimentAllowsOfferOem = experimentMixin.methods.hasSettingEqualTo(
|
||||||
// call API oem-after-market-parts method
|
experimentSettings.OFFER_OEM,
|
||||||
const experimentAllowsOfferOem = true;
|
"true"
|
||||||
// const experimentAllowsOfferOem = experimentMixin.methods.hasSettingEqualTo(
|
);
|
||||||
// experimentSettings.OFFER_OEM,
|
|
||||||
// "true"
|
|
||||||
// );
|
|
||||||
const oemGlassCheckPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
const oemGlassCheckPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
storeActions.GET_OEM_AFTERMARKET_PARTS,
|
storeActions.GET_OEM_AFTERMARKET_PARTS,
|
||||||
null,
|
null,
|
||||||
|
|
@ -343,9 +340,9 @@ export default {
|
||||||
|
|
||||||
const oemGlassCheck = resultMap.oemGlassCheck;
|
const oemGlassCheck = resultMap.oemGlassCheck;
|
||||||
const offerOem = experimentAllowsOfferOem ? oemGlassCheck.offerOem : false;
|
const offerOem = experimentAllowsOfferOem ? oemGlassCheck.offerOem : false;
|
||||||
console.log("offerOem: ", offerOem);
|
|
||||||
const oemGlassPieceParts = oemGlassCheck?.glassPieceParts;
|
const oemGlassPieceParts = oemGlassCheck?.glassPieceParts;
|
||||||
const oemGlassParts = oemGlassPieceParts ? oemGlassPieceParts[0].parts : null;
|
const oemGlassParts = oemGlassPieceParts ? oemGlassPieceParts[0].parts : null;
|
||||||
|
const isOemGlassSelected = store.getters.order.isOemGlassSelected;
|
||||||
|
|
||||||
let alternateGlassPartsForOem;
|
let alternateGlassPartsForOem;
|
||||||
// if (oemGlassCheck.glassPieceParts[0].parts) {
|
// if (oemGlassCheck.glassPieceParts[0].parts) {
|
||||||
|
|
@ -439,6 +436,7 @@ export default {
|
||||||
vm.skipToInsurance = shouldSkipToInsurance;
|
vm.skipToInsurance = shouldSkipToInsurance;
|
||||||
vm.offerOem = offerOem;
|
vm.offerOem = offerOem;
|
||||||
vm.alternateGlassPartsForOem = alternateGlassPartsForOem; // oemParts
|
vm.alternateGlassPartsForOem = alternateGlassPartsForOem; // oemParts
|
||||||
|
vm.isOemGlassSelected = isOemGlassSelected;
|
||||||
|
|
||||||
if (revalidatePromoResponse) {
|
if (revalidatePromoResponse) {
|
||||||
const revalidateAlerts = buildToastMessagesFromRevalidateOrValidatePromoResponse(
|
const revalidateAlerts = buildToastMessagesFromRevalidateOrValidatePromoResponse(
|
||||||
|
|
@ -782,11 +780,15 @@ export default {
|
||||||
this.lineItems.supportingItems = this.filterOutFees(this.lineItems.supportingItems);
|
this.lineItems.supportingItems = this.filterOutFees(this.lineItems.supportingItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
// isOemGlassSelected?
|
if (this.alternateGlassPartsForOem && this.alternateGlassPartsForOem.length > 0) {
|
||||||
// if it IS, then swap out the glass parts in the line items for these
|
let isOEMGlassOnOrder = this.isOEMGlassOnOrder(this.lineItems.glassParts);
|
||||||
|
if (
|
||||||
// if it's NOT selected BUT alternateGlassPartsForOem exist, then swap out
|
(this.isOemGlassSelected && !isOEMGlassOnOrder) ||
|
||||||
// // the existing glass line items for whatever is in alternateGlassPartsForOem
|
(!this.isOemGlassSelected && isOEMGlassOnOrder)
|
||||||
|
) {
|
||||||
|
this.swapOEMGlassPartsOnOrder();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this.lineItems.glassParts?.length > 0) {
|
if (this.lineItems.glassParts?.length > 0) {
|
||||||
this.dispatchStoreAction(
|
this.dispatchStoreAction(
|
||||||
|
|
@ -943,6 +945,22 @@ export default {
|
||||||
const alert = createPromoSuccessAlert(lineItems.promos[0].promoCode);
|
const alert = createPromoSuccessAlert(lineItems.promos[0].promoCode);
|
||||||
this.$refs.funnelHeader.pushGlobalAlert(alert, alert.shouldAutoFade);
|
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: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue