From e90d4c4246816bb47241f6d567d5e0db7140750f Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Thu, 9 May 2024 19:09:44 +0530 Subject: [PATCH] CSR-1994 fix pricing issue when service package discount not available --- src/layouts/quote/quote.vue | 21 ++++--- .../service-package-question.vue | 60 ++++++++++--------- 2 files changed, 43 insertions(+), 38 deletions(-) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index e94c48932..e7f3f3c3b 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -160,27 +160,26 @@ export default { lineItems.vaps = lineItems.vaps ?? []; const nullSafeGlassParts = lineItems.glassParts ?? []; const servicePackageDiscountSettingValue = experimentMixin.methods.getSettingValue( - experimentSettings.SERVICE_PACKAGE_DISCOUNT - ); - const isServicePackageDiscount = servicePackageDiscountSettingValue === "True"; - if (isServicePackageDiscount) { - const servicePackageDiscount = await baseMixin.methods.dispatchStoreActionWithLogging( + experimentSettings.SERVICE_PACKAGE_DISCOUNT + ); + const isServicePackageDiscount = servicePackageDiscountSettingValue === "True"; + if (isServicePackageDiscount) { + const servicePackageDiscount = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.CASH_SERVICE_PACKAGE_DISCOUNT, null, "quote" ); - lineItems.supportingItems = [...resultMap.supportingItems,servicePackageDiscount.data]; - } - else{ + lineItems.supportingItems = [...resultMap.supportingItems, servicePackageDiscount.data]; + } else { lineItems.supportingItems = resultMap.supportingItems; - } + } const availableLineItems = [ resultMap.rainDefense, ...lineItems.supportingItems, ...resultMap.wipers, ...nullSafeGlassParts, ]; - + const pricingResults = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA, { @@ -249,7 +248,7 @@ export default { availableLineItems: null, lineItems: [], addableVaps: [], - servicePackageDiscountLineItems:[] + servicePackageDiscountLineItems: [], }; }, computed: { diff --git a/src/layouts/quote/service-package-question/service-package-question.vue b/src/layouts/quote/service-package-question/service-package-question.vue index 431a28679..02f612b2f 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -101,12 +101,15 @@ export default { buttonLabel: this.getHeaderTextFromCms(answer.SubWidgetName), buttonLabelSubCopy: this.getSubheaderTextFromCms(answer.SubWidgetName), buttonBodyCopy: this.getBodyTextFromCms(answer.SubWidgetName), - buttonAuxillaryCopy: this.getDiscountedPackagePriceString(answer.Name,this.isServicePackageDiscount && answer.Text != ""), + buttonAuxillaryCopy: this.getDiscountedPackagePriceString( + answer.Name, + this.isServicePackageDiscount && answer.Text != "" + ), buttonFooterCopy: this.getFooterTextFromCms(answer.SubWidgetName), additionalButtonData: { strikeThroughPrice: this.getPackagePriceString(answer.Name), servicePackageDiscount: this.isServicePackageDiscount && answer.Text != "", - Text: answer.Text+this.getServicePackageDiscountPrice(), + Text: answer.Text + this.getServicePackageDiscountPrice(), }, })); return modifiedAnswers; @@ -182,35 +185,36 @@ export default { }, getPackagePriceString(packageName) { const formattedPriceFloat = parseFloat( - this.getPackagePrice(packageName, { discountedPrice: false,servicePackageDiscount:false }) + this.getPackagePrice(packageName, { + discountedPrice: false, + servicePackageDiscount: false, + }) ).toFixed(2); return "$" + formattedPriceFloat; }, - getDiscountedPackagePriceString(packageName,servicePackageDiscount) { + getDiscountedPackagePriceString(packageName, servicePackageDiscount) { const formattedPriceFloat = parseFloat( this.getPackagePrice(packageName, { discountedPrice: true, servicePackageDiscount }) ).toFixed(2); return (this.isInsuranceSelected ? "As little as $" : "$") + formattedPriceFloat; }, - getPackagePrice(packageName, { discountedPrice = false , servicePackageDiscount = false}) { - - //remove service package discount part - const servicePackageDiscountParts = findLineItemsWithPartType( - partTypeStrings.SERVICE_PACKAGE_DISCOUNT, - this.nullSafeAvailableLineItems - ); - const parts = this.nullSafeAvailableLineItems.filter((item) => { - return item.partType != servicePackageDiscountParts?.[0].partType; - }); - - - var lineItemsToPrice = [...parts]; + getPackagePrice(packageName, { discountedPrice = false, servicePackageDiscount = false }) { + var lineItemsToPrice = [...this.nullSafeAvailableLineItems]; + //remove service package discount part + const servicePackageDiscountParts = findLineItemsWithPartType( + partTypeStrings.SERVICE_PACKAGE_DISCOUNT, + this.nullSafeAvailableLineItems + ); + if (servicePackageDiscountParts?.length > 0) { + lineItemsToPrice = this.nullSafeAvailableLineItems.filter((item) => { + return item.partType != servicePackageDiscountParts[0].partType; + }); + } if (discountedPrice) { lineItemsToPrice.push(...removeVapsPromosFromPromoArray(this.activePromos)); - } - if(servicePackageDiscount) - { + } + if (servicePackageDiscount) { lineItemsToPrice.push(...servicePackageDiscountParts); } let priceFloat = this.isInsuranceSelected @@ -223,14 +227,16 @@ export default { return priceFloat; }, - getServicePackageDiscountPrice(){ + getServicePackageDiscountPrice() { const servicePackageDiscountParts = findLineItemsWithPartType( - partTypeStrings.SERVICE_PACKAGE_DISCOUNT, - this.nullSafeAvailableLineItems - ); - let price = 0; - price += baseMixin.methods.getTotalLineItemPrice(servicePackageDiscountParts?.[0]); - return Math.abs(price); + partTypeStrings.SERVICE_PACKAGE_DISCOUNT, + this.nullSafeAvailableLineItems + ); + if (servicePackageDiscountParts?.length > 0) { + let price = 0; + price += baseMixin.methods.getTotalLineItemPrice(servicePackageDiscountParts[0]); + return Math.abs(price); + } else return 0; }, getVapsPrice(packageName, applyPromoDiscounts = false) { const vapsItems = this.getVapsLineItemsForSelectedPackage(packageName);