From 2b98b9ab2c5fef8b26f1412f83effcee5759f8e2 Mon Sep 17 00:00:00 2001 From: Bryan Mauger Date: Mon, 11 Sep 2023 17:08:14 -0400 Subject: [PATCH] WIP --- src/fmg-components/cart/cart.vue | 129 ++++++++++++------ src/helpers/service-package-helper.js | 3 +- src/layouts/payment-method/payment-method.vue | 5 +- src/layouts/quote/quote.vue | 4 +- .../service-package-question.vue | 2 +- src/mixins/base-mixin.js | 7 +- 6 files changed, 103 insertions(+), 47 deletions(-) diff --git a/src/fmg-components/cart/cart.vue b/src/fmg-components/cart/cart.vue index 563c5be25..dd1e87c82 100644 --- a/src/fmg-components/cart/cart.vue +++ b/src/fmg-components/cart/cart.vue @@ -12,17 +12,18 @@
- {{packagePrice}} - {{listOfVaps}} + {{ packagePrice }}
-
- Wiper bladesRemove$10 +
+ {{ lineItem.name }} + Remove + {{ lineItem.price }}
-
- Rain defenseRemove$10 +
+ {{ recycleLabel }}{{ recycleFee }}
-
{{recycleLabel}}{{recycleFee}}
-
Mobile service$10
+
Subtotal$320
Sales tax$1
Amount due$321
@@ -51,12 +52,13 @@ export default { headerCmsWidgetName: String, servicePackageOptionsCmsName: String, damage: Object, - lineItems: Object, + storeLineItems: Object, + availableLineItems: Object, }, data() { return { isActive: false, - availableVaps: [], + //availableVaps: [], TO DO Do we need this? packageWithVAPS: false, // packageLevel: "", }; @@ -66,8 +68,9 @@ export default { this.isActive = !this.isActive; }, initializeComponent(apiResponses) { - const vapsFromApi = [...apiResponses.wipers, apiResponses.rainDefense]; - this.availableVaps = vapsFromApi; + //TO DO Do we need this? + // const vapsFromApi = [...apiResponses.wipers, apiResponses.rainDefense]; + // this.availableVaps = vapsFromApi; }, getPackagePriceString(packageName) { const formattedPriceFloat = parseFloat(this.getPackagePrice(packageName)).toFixed(2); @@ -95,6 +98,7 @@ export default { return price; }, + //START HERE getVapsLineItemsForSelectedPackage(packageName) { const packageContentTypes = getPackageContents( this.glassToReplace, @@ -110,7 +114,7 @@ export default { ...findLineItemsWithPartType(vapType, this.nullSafeAvailableLineItems) ); }); - + console.log("VapsLineItems:", vapsLineItemsForSelectedPackage); return vapsLineItemsForSelectedPackage; }, }, @@ -129,6 +133,7 @@ export default { (entry) => entry.Name === this.packageLevel ); + console.log("WidgetName", currentPackage); return currentPackage.SubWidgetName; }, packageLevel() { @@ -148,11 +153,52 @@ export default { return packagePriceString; // return (packagePriceString.length > 0) ? packagePriceString : "Test String"; }, - listOfVaps() { - console.log("VAPS:", this.vaps); - const vaps = this.getVapsLineItemsForSelectedPackage(packageNames.TIER_ONE); - console.log("VAPS 2", vaps); - return vaps; + packageLineItems() { + return this.getVapsLineItemsForSelectedPackage(this.packageLevel); + }, + cartLineItems() { + const cartLineItems = []; + console.log("Package VAPS", this.packageLineItems); + console.log("available line items", this.availableLineItems); + + this.availableLineItems?.forEach((item) => { + let price = item.sellingPrice + item.kitPrice + item.laborAmount; + const indexFound = this.packageLineItems.findIndex((packageLineItem) => { + return packageLineItem.partType === item.partType; + }); + const cartLineItem = { + name: item.partType, + price: "$" + parseFloat(price).toFixed(2), + isPartOfPackage: indexFound > -1 ? true : false + }; + cartLineItems.push(cartLineItem); + }); + + //return vaps; + // return [ + // { + // name: "Front wiper blades", + // price: "$10", + // isPartOfPackage: false, + // }, + // { + // name: "Rear wiper blades", + // price: "$15", + // isPartOfPackage: false, + // }, + // { + // name: "Rain Defense", + // price: "$20", + // isPartOfPackage: false, + // }, + // { + // name: "Mobile service", + // price: "$50", + // isPartOfPackage: false, + // }, + // ]; + console.log("CartLineItems",cartLineItems); + return cartLineItems; }, glassToReplace() { return this.damage.glassToReplace; @@ -161,14 +207,7 @@ export default { return this.damage.isRepair; }, vaps() { - return this.lineItems?.vaps; - }, - availableLineItems() { - return [ - ...(this.lineItems?.glassParts ?? []), - ...(this.lineItems?.supportingItems ?? []), - ...this.availableVaps, - ]; + return this.storeLineItems?.vaps; }, recycleLabel() { return "Recycling"; @@ -177,11 +216,13 @@ export default { return "$35.00"; }, hasRecycleLineItem() { - if (this.lineItems.supportingItems[0].partNumber === "RECYCLE FEE") { - return true; - } else { - return false; - } + //TO DO + // if (this.lineItems.supportingItems[0].partNumber === "RECYCLE FEE") { + // return true; + // } else { + // return false; + // } + return true; }, nullSafeAvailableLineItems() { return this.availableLineItems ?? []; @@ -227,9 +268,23 @@ export default { color: #ffffff; } } - .package-type, - .service-type, .vaps { + background-color: #f5f5f5; + padding-left: 2.5rem; + align-items: center; + span { + display: flex; + width: 33.33333%; + &:nth-child(2) { + justify-content: flex-end; + } + &:last-child { + justify-content: flex-end; + } + } + } + .package-type, + .service-type { //background-color: #f5f5f5; align-items: center; } @@ -248,12 +303,6 @@ export default { margin-top: 0; padding: 0; } - &.packageWithVAPS { - ~ .vaps { - background-color: #f5f5f5; - padding-left: 2.5rem; - } - } } } .vin-toggle { @@ -275,7 +324,7 @@ export default { transform: rotate(180deg); } &.active + .price-table { - max-height: 400px; + max-height: 450px; transition: all 350ms ease-in; overflow: hidden; } diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js index 2d53a75c2..6da43c095 100644 --- a/src/helpers/service-package-helper.js +++ b/src/helpers/service-package-helper.js @@ -8,10 +8,11 @@ export function containsLineItemWithPartType(typeToFind, itemsToSearch) { } export function findLineItemsWithPartType(typeToFind, itemsToSearch) { + //console.log("typeToFind: ", typeToFind, " / itemsToSearch: ", itemsToSearch); const partTypeMatches = itemsToSearch?.filter( (lineItem) => lineItem.partType.toUpperCase() === typeToFind.toUpperCase() ); - + //console.log(partTypeMatches); return partTypeMatches; } diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 31bb4e25b..e58d82175 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -15,7 +15,8 @@
{ vm.setCmsContent(resultMap.cmsContent); 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 c7c1b0e95..f497b35e4 100644 --- a/src/layouts/quote/service-package-question/service-package-question.vue +++ b/src/layouts/quote/service-package-question/service-package-question.vue @@ -89,7 +89,7 @@ export default { buttonAuxillaryCopy: this.getPackagePriceString(answer.Name), buttonFooterCopy: this.getFooterTextFromCms(answer.SubWidgetName), })); - console.log("avialable packages is", modifiedAnswers) + console.log("avialable packages is", modifiedAnswers); return modifiedAnswers; }, isRecalibrationOnOrder() { diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index 9cf183337..413475a7e 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -94,7 +94,12 @@ export default { lineItem.childParts ); } - console.log("step two, lineItem name: ", lineItem.partNumber, " / totalPrice: ", totalPrice); + console.log( + "step two, lineItem name: ", + lineItem.partNumber, + " / totalPrice: ", + totalPrice + ); }); console.log("step three", totalPrice); return totalPrice;