CASH-2025: Swap OEM glass order item

This commit is contained in:
Chris Redelinghuys 2026-01-09 15:50:54 -05:00
parent e7e499ca46
commit 9fad67319b
3 changed files with 36 additions and 16 deletions

View file

@ -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 {

View file

@ -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";
},
},

View file

@ -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,