diff --git a/src/constants/part-type-strings.js b/src/constants/part-type-strings.js
index 17b96d2fb..0118c0b2c 100644
--- a/src/constants/part-type-strings.js
+++ b/src/constants/part-type-strings.js
@@ -12,6 +12,7 @@ const partTypeStrings = {
SERVICE_PACKAGE_DISCOUNT: "SERVICE PACKAGE DISCOUNT",
QUOTE_PAGE_DISCOUNT: "QUOTE PAGE DISCOUNT",
DONATION: "DONATION",
+ WINDSHIELD: "WINDSHIELD",
};
export { partTypeStrings };
diff --git a/src/layouts/quote/oem-glass-question/oem-glass-question.vue b/src/layouts/quote/oem-glass-question/oem-glass-question.vue
index b591587c6..f07338e71 100644
--- a/src/layouts/quote/oem-glass-question/oem-glass-question.vue
+++ b/src/layouts/quote/oem-glass-question/oem-glass-question.vue
@@ -25,6 +25,8 @@ export default {
props: {
cmsWidgetName: String,
modelValue: Boolean,
+ oemGlassPartPrice: Number,
+ aftermarketGlassPartPrice: Number,
},
data() {
return {
@@ -36,7 +38,10 @@ export default {
return this.getCmsContent(this.cmsWidgetName, "HeaderText");
},
bodyText() {
- return this.getCmsContent(this.cmsWidgetName, "BodyText");
+ let priceDifference = this.oemGlassPartPrice - this.aftermarketGlassPartPrice;
+ let bodyText = this.getCmsContent(this.cmsWidgetName, "BodyText");
+ bodyText = bodyText.replace("{custom:OEMGLASSPRICE}", "$" + priceDifference.toFixed(2));
+ return bodyText;
},
footerText() {
return this.getCmsContent(this.cmsWidgetName, "FooterText");
diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue
index a11b0d588..bd7a09944 100644
--- a/src/layouts/quote/quote.vue
+++ b/src/layouts/quote/quote.vue
@@ -89,7 +89,9 @@
+ v-model="isOemGlassSelected"
+ :oemGlassPartPrice="oemGlassPartPrice"
+ :aftermarketGlassPartPrice="aftermarketGlassPartPrice" />
0) {
+ pricedAlternateGlassParts = await baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
+ {
+ availableLineItems: alternateGlassPartsForOem,
+ },
+ "quote",
+ false
+ );
+ }
+
// When calling pricing from the quote page, always use the cash parent account but save the existing one in case it's unverified insurance navigating backwards
var holdParentAccountNumber = store.getters.order.payment?.parentAccountNumber;
var holdBillToAccountNumber = store.getters.order.payment?.billToAccountNumber;
@@ -422,9 +436,41 @@ export default {
vm.holdBillToAccountNumber = holdBillToAccountNumber;
vm.skipToInsurance = shouldSkipToInsurance;
vm.offerOem = offerOem;
- vm.alternateGlassPartsForOem = alternateGlassPartsForOem; // oemParts
+ vm.alternateGlassPartsForOem = pricedAlternateGlassParts; // oemParts
vm.isOemGlassSelected = isOemGlassSelected;
+ const getOEMGlassPartPrice = () => {
+ let price = 0;
+ if (vm.alternateGlassPartsForOem) {
+ let oemGlassPart = vm.isOemGlassSelected
+ ? vm.lineItems.glassParts
+ : vm.alternateGlassPartsForOem;
+ if (oemGlassPart) {
+ price =
+ oemGlassPart.find(
+ (altPart) => altPart.partType === partTypeStrings.WINDSHIELD
+ )?.sellingPrice || 0;
+ }
+ }
+ return price;
+ };
+ const getAftermarketGlassPartPrice = () => {
+ let price = 0;
+ if (vm.alternateGlassPartsForOem) {
+ let aftermarketGlassPart = vm.isOemGlassSelected
+ ? vm.alternateGlassPartsForOem
+ : vm.lineItems.glassParts;
+ if (aftermarketGlassPart) {
+ price = aftermarketGlassPart.find(
+ (altPart) => altPart.partType === partTypeStrings.WINDSHIELD
+ )?.sellingPrice;
+ }
+ }
+ return price;
+ };
+ vm.oemGlassPartPrice = getOEMGlassPartPrice();
+ vm.aftermarketGlassPartPrice = getAftermarketGlassPartPrice();
+
if (revalidatePromoResponse) {
const revalidateAlerts = buildToastMessagesFromRevalidateOrValidatePromoResponse(
revalidatePromoResponse,
@@ -943,11 +989,10 @@ export default {
return false;
},
swapOEMGlassPartsOnOrder() {
- const windshieldString = "WINDSHIELD";
this.lineItems.glassParts.forEach((part, index) => {
- if (part.partType === windshieldString) {
+ if (part.partType === partTypeStrings.WINDSHIELD) {
let altPartToUse = this.alternateGlassPartsForOem.find(
- (altPart) => altPart.partType === windshieldString
+ (altPart) => altPart.partType === partTypeStrings.WINDSHIELD
);
if (altPartToUse) {
this.lineItems.glassParts[index] = altPartToUse;
diff --git a/src/styles/ux-variables.scss b/src/styles/ux-variables.scss
index 770d95b42..0c275ad51 100644
--- a/src/styles/ux-variables.scss
+++ b/src/styles/ux-variables.scss
@@ -123,8 +123,8 @@ $body-color: $gray-600;
//Fonts
$font-family-sans-serif: UrbanistRegular, Arial, Helvetica, sans-serif;
-$font-family-monospace: UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New",
- monospace;
+$font-family-monospace:
+ UrbanistRegular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
// stylelint-enable value-keyword-case
$font-family-base: $font-family-sans-serif;
$font-family-code: $font-family-monospace;