diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 4cb2dcf55..dfada2db0 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -159,22 +159,15 @@ export default { return defaultIsInsuranceSelectedValue; } else { return availableLineItems - ? baseMixin.methods.getTierOnePackagePrice(availableLineItems) > 500 + ? baseMixin.methods.getTierOnePackagePrice( + baseMixin.methods.filterOutFees(availableLineItems) + ) > 500 : null; } }, vapsItemsSelectedAction(vapsItemsSelected) { this.selectedVaps = vapsItemsSelected; }, - filterOutFees(currentSupportingItems) { - const filteredSupportingItems = currentSupportingItems.filter((item) => { - return ( - !item.partType.includes("FEE") || - (item.partType === "REPAIR FEE" && item.partNumber != "SUPPLIES-REPAIR") - ); - }); - return filteredSupportingItems; - }, backButtonAction() { vehicleQuestionsMixin.methods.navigateBack(this); }, 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 35bb104ef..1d9235374 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -165,7 +165,9 @@ export default { getPackagePrice(packageName) { let priceFloat = this.isInsuranceSelected ? 0 - : baseMixin.methods.getTierOnePackagePrice(this.nullSafeAvailableLineItems); + : baseMixin.methods.getTierOnePackagePrice( + baseMixin.methods.filterOutFees(this.nullSafeAvailableLineItems) + ); if (packageName === packageNames.TIER_TWO) { priceFloat += this.getTierTwoPackageVapsPrice(); } else if (packageName === packageNames.TIER_THREE) { diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index f6c3518ba..0bebdc372 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -77,6 +77,15 @@ export default { }); return totalPrice; }, + filterOutFees(lineItems) { + const filteredLineItems = lineItems.filter((item) => { + return ( + !item.partType.includes("FEE") || + (item.partType === "REPAIR FEE" && item.partNumber != "SUPPLIES-REPAIR") + ); + }); + return filteredLineItems; + }, getTotalLineItemPrice(lineItem) { return lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice; }, diff --git a/src/store/index.js b/src/store/index.js index 9826bfd25..c41f38ddf 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1407,9 +1407,8 @@ export const actions = { }, // Price order actions async priceOrderItems(context, availableLineItems) { - const availableLineItemsFormattedForRequest = availableLineItems - .map((lineItem) => `&LineItems=${lineItem.partNumber}`) - .join(""); + const availableLineItemsFormattedForRequest = + getLineItemQueryStringForPricing(availableLineItems); const vehicle = context.getters.order.vehicle; let queryString = `ParentAccountNumber=${applicationConfig.CASH_ACCOUNT_NUMBER}` + @@ -1589,6 +1588,9 @@ function addPricesToLineItems(lineItems, pricingLineItems) { let lineItemIndex = pricingLineItems.findIndex( (pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber ); + if (lineItem.childParts) { + addPricesToLineItems(lineItem.childParts, pricingLineItems); + } let pricedLineItem = pricingLineItems.splice(lineItemIndex, 1)[0]; lineItem.laborAmount = pricedLineItem.laborAmount; lineItem.sellingPrice = pricedLineItem.sellingPrice; @@ -1596,3 +1598,14 @@ function addPricesToLineItems(lineItems, pricingLineItems) { }); return lineItems; } +function getLineItemQueryStringForPricing(lineItems) { + return lineItems + .map((lineItem) => { + let queryStringSnippet = `&LineItems=${lineItem.partNumber}`; + if (lineItem.childParts) { + queryStringSnippet += getLineItemQueryStringForPricing(lineItem.childParts); + } + return queryStringSnippet; + }) + .join(""); +}