This commit is contained in:
Bryan Mauger 2023-09-14 12:31:59 -04:00
parent f208ae0c65
commit 64c1d65328
3 changed files with 48 additions and 14 deletions

View file

@ -14,11 +14,14 @@
<div class="service-type" :class="{ packageWithVAPS: packageWithVAPS }"> <div class="service-type" :class="{ packageWithVAPS: packageWithVAPS }">
<textBlock :cmsWidgetName="packageNameWidget" /><span>{{ packagePrice }}</span> <textBlock :cmsWidgetName="packageNameWidget" /><span>{{ packagePrice }}</span>
</div> </div>
<div class="vaps" v-for="(lineItem, i) in displayedPackageLineItems" :key="i"> <div v-for="(lineItem, i) in displayedPackageLineItems" :key="i"
:class="[this.displayedPackageLineItems ? 'vaps' : '']">
<span>{{ lineItem.name }}</span> <span>{{ lineItem.name }}</span>
<span><a href="#">Remove</a></span> <span><a href="#">Remove</a></span>
</div> </div>
<div class="vaps" v-for="(lineItem, i) in displayedNonPackageLineItems" :key="i"> <hr style="background: red;">
<div v-for="(lineItem, i) in displayedNonPackageLineItems" :key="i"
:class="[this.displayedNonPackageLineItems ? 'vaps' : '']">
<span>{{ lineItem.name }}</span> <span>{{ lineItem.name }}</span>
<span><a href="#">Remove</a></span> <span><a href="#">Remove</a></span>
<span>{{ lineItem.price }}</span> <span>{{ lineItem.price }}</span>
@ -56,8 +59,9 @@ export default {
headerCmsWidgetName: String, headerCmsWidgetName: String,
servicePackageOptionsCmsName: String, servicePackageOptionsCmsName: String,
damage: Object, damage: Object,
storeLineItems: Object, orderLineItems: Object,
availableLineItems: Object, availableLineItems: Object,
allowableCartItems: Object,
}, },
data() { data() {
return { return {
@ -137,7 +141,6 @@ export default {
(entry) => entry.Name === this.packageLevel (entry) => entry.Name === this.packageLevel
); );
console.log("WidgetName", currentPackage);
return currentPackage.SubWidgetName; return currentPackage.SubWidgetName;
}, },
packageLevel() { packageLevel() {
@ -160,13 +163,14 @@ export default {
displayedPackageLineItems() { displayedPackageLineItems() {
const displayedPackageLineItems = []; const displayedPackageLineItems = [];
const packageLineItems = this.getVapsLineItemsForSelectedPackage(this.packageLevel); const packageLineItems = this.getVapsLineItemsForSelectedPackage(this.packageLevel);
//TO DO Could we get the same list from this.orderLineItems?
packageLineItems?.forEach((item) => { packageLineItems?.forEach((item) => {
let price = item.sellingPrice + item.kitPrice + item.laborAmount; let price = item.sellingPrice + item.kitPrice + item.laborAmount;
const packageLineItem = { const packageLineItem = {
name: item.partType, name: item.partType,
price: "$" + parseFloat(price).toFixed(2), price: "$" + parseFloat(price).toFixed(2),
partType: item.partType, partType: item.partType,
isRemovable: item.isRemovable,
}; };
displayedPackageLineItems.push(packageLineItem); displayedPackageLineItems.push(packageLineItem);
}); });
@ -175,17 +179,27 @@ export default {
}, },
displayedNonPackageLineItems() { displayedNonPackageLineItems() {
const displayedNonPackageLineItems = []; const displayedNonPackageLineItems = [];
const possibleLineItems = [
this.availableLineItems?.forEach((item) => { ...this.orderLineItems.vaps,
...this.orderLineItems.supportingItems,
];
possibleLineItems?.forEach((item) => {
let price = item.sellingPrice + item.kitPrice + item.laborAmount; let price = item.sellingPrice + item.kitPrice + item.laborAmount;
const isAllowed = this.allowableLineItems?.findIndex((lineItem) => {
return lineItem.partType === item.partType;
});
const indexFound = this.displayedPackageLineItems?.findIndex((packageLineItem) => { const indexFound = this.displayedPackageLineItems?.findIndex((packageLineItem) => {
return packageLineItem.partType === item.partType; return packageLineItem.partType === item.partType;
}); });
if (indexFound === -1) { const isInPackage = this.displayedPackageLineItems?.findIndex((packageLineItem) => {
return packageLineItem.partType === item.partType;
});
if (isInPackage === -1 && isAllowed > -1) {
const nonPackageLineItem = { const nonPackageLineItem = {
name: item.partType, name: item.partType,
price: "$" + parseFloat(price).toFixed(2), price: "$" + parseFloat(price).toFixed(2),
partType: item.partType, partType: item.partType,
isRemovable: item.isRemovable,
}; };
displayedNonPackageLineItems.push(nonPackageLineItem); displayedNonPackageLineItems.push(nonPackageLineItem);
} }
@ -199,7 +213,7 @@ export default {
return this.damage.isRepair; return this.damage.isRepair;
}, },
vaps() { vaps() {
return this.storeLineItems?.vaps; return this.orderLineItems?.vaps;
}, },
recycleLabel() { recycleLabel() {
return "Recycling"; return "Recycling";

View file

@ -15,9 +15,10 @@
<div> <div>
<cart <cart
:damage="damageInfo" :damage="damageInfo"
:storeLineItems="storeLineItems" :orderLineItems="orderLineItems"
:availableLineItems="availableLineItems" :availableLineItems="availableLineItems"
servicePackageOptionsCmsName="ServicePackageTitle" /> servicePackageOptionsCmsName="ServicePackageTitle"
:allowableCartItems="ALLOWABLE_CART_ITEMS" />
<vehicleReview <vehicleReview
cmsWidgetName="VehicleReviewWidget" cmsWidgetName="VehicleReviewWidget"
@ -89,6 +90,25 @@ import { applicationConfig } from "@/constants/application-config";
defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
const ALLOWABLE_CART_ITEMS = [
{
partType: "FRONT WIPER",
isRemovable: true,
},
{
partType: "REAR WIPER",
isRemovable: true,
},
{
partType: "RAIN DEFENSE",
isRemovable: true,
},
{
partType: "RECYCLE FEE",
isRemovable: false,
}
]
export default { export default {
name: "paymentMethod", name: "paymentMethod",
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
@ -131,7 +151,7 @@ export default {
...resultMap.wipers, ...resultMap.wipers,
...clonedGlassParts, ...clonedGlassParts,
]; ];
console.log("Available Line Items", availableLineItems);
const pricingResults = await baseMixin.methods.dispatchStoreAction( const pricingResults = await baseMixin.methods.dispatchStoreAction(
storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA, storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
{ {
@ -257,7 +277,7 @@ export default {
damageInfo() { damageInfo() {
return this.$store.getters.damage; return this.$store.getters.damage;
}, },
storeLineItems() { orderLineItems() {
return this.$store.getters.lineItems; return this.$store.getters.lineItems;
}, },
serviceLocationInfo() { serviceLocationInfo() {

View file

@ -33,7 +33,7 @@ import paymentMethod from "@/layouts/payment-method/payment-method";
const routes = [ const routes = [
{ {
path: "/payment-method", // This is a temporary route for testing. path: "/payment-method", // This is a temporary route for testing.
name: "payment-method", name: "root",
component: paymentMethod, component: paymentMethod,
}, },
{ {