From e9da017ae98a600f8306c35600df1db611dcfba4 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 5 Jan 2023 16:29:18 -0500 Subject: [PATCH 1/5] CSR-1042 | Changing how price is displayed on Quote Removing fees from cash pricing --- src/layouts/quote/quote.vue | 11 +---------- .../service-package-question.vue | 2 +- src/mixins/base-mixin.js | 9 +++++++++ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 4cb2dcf55..606bee5ae 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -159,22 +159,13 @@ 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..ebc86cc7e 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,7 @@ 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; }, From 1458236f3350ff4b5b3a49a829154c9e9012118e Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 5 Jan 2023 16:31:48 -0500 Subject: [PATCH 2/5] CSR-1042 | Formatting --- .../service-package-question/service-package-question.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 ebc86cc7e..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(baseMixin.methods.filterOutFees(this.nullSafeAvailableLineItems)); + : baseMixin.methods.getTierOnePackagePrice( + baseMixin.methods.filterOutFees(this.nullSafeAvailableLineItems) + ); if (packageName === packageNames.TIER_TWO) { priceFloat += this.getTierTwoPackageVapsPrice(); } else if (packageName === packageNames.TIER_THREE) { From ebf1a81e58d922eb1047beabd7556b4a1bc5fd47 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 5 Jan 2023 16:38:33 -0500 Subject: [PATCH 3/5] CSR-1042 | Formattingv2 --- src/layouts/quote/quote.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 606bee5ae..dfada2db0 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -159,7 +159,9 @@ export default { return defaultIsInsuranceSelectedValue; } else { return availableLineItems - ? baseMixin.methods.getTierOnePackagePrice(baseMixin.methods.filterOutFees(availableLineItems)) > 500 + ? baseMixin.methods.getTierOnePackagePrice( + baseMixin.methods.filterOutFees(availableLineItems) + ) > 500 : null; } }, From 6ab421025b384708d81c130a383b25c1ccb71c16 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Fri, 6 Jan 2023 11:12:31 -0500 Subject: [PATCH 4/5] CSR-753 | Defect where child parts were not being priced Still needs some refactoring --- src/store/index.js | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index 5243ed6d1..ebfc404de 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1417,7 +1417,13 @@ export const actions = { // Price order actions async priceOrderItems(context, availableLineItems) { const availableLineItemsFormattedForRequest = availableLineItems - .map((lineItem) => `&LineItems=${lineItem.partNumber}`) + .map((lineItem) => { + let queryStringSnippet = `&LineItems=${lineItem.partNumber}`; + if (lineItem.childParts) { + queryStringSnippet += lineItem.childParts.map(childPart => `&LineItems=${childPart.partNumber}`).join(""); + } + return queryStringSnippet; + }) .join(""); const vehicle = context.getters.order.vehicle; let queryString = @@ -1598,6 +1604,17 @@ function addPricesToLineItems(lineItems, pricingLineItems) { let lineItemIndex = pricingLineItems.findIndex( (pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber ); + if (lineItem.childParts) { + lineItem.childParts.forEach((childPart) => { + let childPartIndex = pricingLineItems.findIndex( + (pricingLineItem) => pricingLineItem.partNumber === childPart.partNumber + ); + let pricedChildPart = pricingLineItems.splice(childPartIndex, 1)[0]; + childPart.laborAmount = pricedChildPart.laborAmount; + childPart.sellingPrice = pricedChildPart.sellingPrice; + childPart.kitPrice = pricedChildPart.kitPrice; + }); + } let pricedLineItem = pricingLineItems.splice(lineItemIndex, 1)[0]; lineItem.laborAmount = pricedLineItem.laborAmount; lineItem.sellingPrice = pricedLineItem.sellingPrice; From 9d2dd8742d6ab54a8f878a22c0d82c35c9dac9f8 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Fri, 6 Jan 2023 12:05:17 -0500 Subject: [PATCH 5/5] CSR-1022 | Refactor child part pricing --- src/store/index.js | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index ebfc404de..265db10d0 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1416,15 +1416,8 @@ export const actions = { }, // Price order actions async priceOrderItems(context, availableLineItems) { - const availableLineItemsFormattedForRequest = availableLineItems - .map((lineItem) => { - let queryStringSnippet = `&LineItems=${lineItem.partNumber}`; - if (lineItem.childParts) { - queryStringSnippet += lineItem.childParts.map(childPart => `&LineItems=${childPart.partNumber}`).join(""); - } - return queryStringSnippet; - }) - .join(""); + const availableLineItemsFormattedForRequest = + getLineItemQueryStringForPricing(availableLineItems); const vehicle = context.getters.order.vehicle; let queryString = `ParentAccountNumber=${applicationConfig.CASH_ACCOUNT_NUMBER}` + @@ -1605,15 +1598,7 @@ function addPricesToLineItems(lineItems, pricingLineItems) { (pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber ); if (lineItem.childParts) { - lineItem.childParts.forEach((childPart) => { - let childPartIndex = pricingLineItems.findIndex( - (pricingLineItem) => pricingLineItem.partNumber === childPart.partNumber - ); - let pricedChildPart = pricingLineItems.splice(childPartIndex, 1)[0]; - childPart.laborAmount = pricedChildPart.laborAmount; - childPart.sellingPrice = pricedChildPart.sellingPrice; - childPart.kitPrice = pricedChildPart.kitPrice; - }); + addPricesToLineItems(lineItem.childParts, pricingLineItems); } let pricedLineItem = pricingLineItems.splice(lineItemIndex, 1)[0]; lineItem.laborAmount = pricedLineItem.laborAmount; @@ -1622,3 +1607,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(""); +}