diff --git a/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue b/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue
index 9cb256f5d..4240e3514 100644
--- a/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue
+++ b/src/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons.vue
@@ -91,6 +91,7 @@ export default {
answer.SubText = "+$" + this.wipersPrice;
answers.push(answer);
}
+
if (this.showAddRainDefense) {
const answer = getAnswer("RainDefenseModal", this.answersCmsData);
answer.SubText = "+$" + this.rainDefensePrice;
diff --git a/src/fmg-components/cart/cart.vue b/src/fmg-components/cart/cart.vue
index 7107e64e8..cca06cbca 100644
--- a/src/fmg-components/cart/cart.vue
+++ b/src/fmg-components/cart/cart.vue
@@ -7,12 +7,14 @@
@click="toggleClass()">
Amount Due{{ amountDue }}
+ >{{ currencyFormatter.format(amountDue) }}
- {{ packagePrice }}
+ {{
+ currencyFormatter.format(packagePrice)
+ }}
@@ -35,7 +37,7 @@
{{ lineItem.price }}
@@ -45,9 +47,15 @@
>{{ recycleFee }}
- Subtotal$320
- Sales tax$1
- Amount due$321
+
+ Subtotal{{ currencyFormatter.format(subTotal) }}
+
+
+ Sales tax{{ currencyFormatter.format(salesTax) }}
+
+
+ Amount due{{ currencyFormatter.format(amountDue) }}
+
@@ -76,28 +84,16 @@ export default {
return {
isActive: false,
packageWithVAPS: false,
- amountDue: this.getAmountDue(),
+ currencyFormatter: new Intl.NumberFormat("en-US", {
+ style: "currency",
+ currency: "USD",
+ }),
};
},
methods: {
toggleClass: function (event) {
this.isActive = !this.isActive;
},
- getPackagePriceString(packageName) {
- const formattedPriceFloat = parseFloat(this.getPackagePrice(packageName)).toFixed(2);
- return (this.isInsuranceSelected ? "As little as $" : "$") + formattedPriceFloat;
- },
- getPackagePrice(packageName) {
- let priceFloat = this.isInsuranceSelected
- ? 0
- : baseMixin.methods.getTierOnePackagePrice(
- baseMixin.methods.filterOutFees(this.availableLineItems)
- );
-
- priceFloat += this.getVapsPrice(packageName);
-
- return priceFloat;
- },
getVapsPrice(packageName) {
const vapsItems = this.getVapsLineItemsForSelectedPackage(packageName);
@@ -157,19 +153,24 @@ export default {
this.isRepair,
this.vaps
);
+
return tier;
},
packagePrice() {
- let packagePriceString;
- if (this.packageLevel.length > 0) {
- packagePriceString = this.getPackagePriceString(this.packageLevel);
- }
- return packagePriceString;
- // return (packagePriceString.length > 0) ? packagePriceString : "Test String";
+ let packagePrice = this.isInsuranceSelected
+ ? 0
+ : baseMixin.methods.getTierOnePackagePrice(
+ baseMixin.methods.filterOutFees(this.availableLineItems)
+ );
+
+ packagePrice += this.getVapsPrice(this.packageLevel);
+
+ return packagePrice;
},
displayedPackageLineItems() {
const displayedPackageLineItems = [];
const packageLineItems = this.getVapsLineItemsForSelectedPackage(this.packageLevel);
+
// TODO Determine if we could get the same list from this.lineItems?
packageLineItems?.forEach((item) => {
let price = item.sellingPrice + item.kitPrice + item.laborAmount;
@@ -181,6 +182,7 @@ export default {
};
displayedPackageLineItems.push(packageLineItem);
});
+
return displayedPackageLineItems;
},
displayedNonPackageLineItems() {
@@ -229,6 +231,9 @@ export default {
const supportingItems = this.lineItems?.supportingItems;
return supportingItems?.length > 0 ? supportingItems : [];
},
+ removeLinkText() {
+ return "Remove"; // TODO: get from CMS
+ },
recycleLabel() {
return "Recycling";
},
@@ -244,6 +249,29 @@ export default {
// }
return true;
},
+ subTotal() {
+ let subTotal = 0;
+
+ this.lineItems.forEach((lineItem) => {
+ subTotal +=
+ (lineItem.kitPrice ?? 0) +
+ (lineItem.laborAmount ?? 0) +
+ (lineItem.sellingPrice ?? 0);
+ });
+
+ return subTotal;
+ },
+ salesTax() {
+ let salesTax = 0;
+ this.lineItems.forEach((lineItem) => {
+ salesTax += lineItem.salesTax;
+ });
+
+ return salesTax;
+ },
+ amountDue() {
+ return this.subTotal + this.salesTax;
+ },
},
components: {
textBlock,
diff --git a/src/helpers/service-package-helper.js b/src/helpers/service-package-helper.js
index 089e2e596..cab883cc6 100644
--- a/src/helpers/service-package-helper.js
+++ b/src/helpers/service-package-helper.js
@@ -39,12 +39,14 @@ export function getAvailablePackages(glassToReplace, availableLineItems, isRepai
isRepair,
packageNames.TIER_ONE
);
+
let tierTwoVaps = getPackageContents(
glassToReplace,
availableLineItems,
isRepair,
packageNames.TIER_TWO
);
+
let tierThreeVaps = getPackageContents(
glassToReplace,
availableLineItems,
@@ -87,9 +89,11 @@ export function getPackageContents(glassToReplace, availableLineItems, isRepair,
if (shouldFrontWipersBeAvailable(glassToReplace, availableLineItems, isRepair, targetTier)) {
vaps.push(partTypeStrings.FRONT_WIPER);
}
+
if (shouldRearWipersBeAvailable(glassToReplace, availableLineItems, isRepair, targetTier)) {
vaps.push(partTypeStrings.REAR_WIPER);
}
+
if (shouldRainDefenseBeAvailable(glassToReplace, availableLineItems, isRepair, targetTier)) {
vaps.push(partTypeStrings.RAIN_DEFENSE);
}
@@ -107,6 +111,7 @@ export function shouldFrontWipersBeAvailable(
partTypeStrings.FRONT_WIPER,
availableLineItems
);
+
const isFrontWindshieldTask =
isRepair || containsGlassPieceWithLocation(glassLocations.WINDSHIELD, glassToReplace);
diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue
index 8ca99c2a5..731017d18 100644
--- a/src/layouts/payment-method/payment-method.vue
+++ b/src/layouts/payment-method/payment-method.vue
@@ -139,7 +139,7 @@ export default {
const resultMap = await settleAllPromises(promiseResultMap);
- const glassParts = (await store.getters.order.lineItems.glassParts) ?? [];
+ const glassParts = store.getters.order.lineItems.glassParts ?? [];
const availableLineItems = [
resultMap.rainDefense,
@@ -156,7 +156,24 @@ export default {
"payment-method",
false
);
- const lineItems = store.getters.lineItems;
+
+ const lineItems = store.getters.order.lineItems;
+
+ const combinedLineItems = [...glassParts, ...lineItems.supportingItems, ...lineItems.vaps];
+
+ const taxedLineItems = await baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.TAX_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
+ {
+ billToAccountNumber: "87291",
+ providerNumber: store.getters.order.serviceLocation.provider.providerNumber,
+ appointmentType: store.getters.order.serviceLocation.appointmentType,
+ serviceLocationState: store.getters.order.serviceLocation.state,
+ serviceLocationZipCode: store.getters.order.serviceLocation.zipCode,
+ pricedLineItems: combinedLineItems,
+ },
+ "payment-method",
+ false
+ );
const cartItems = [...glassParts, ...lineItems.supportingItems, ...lineItems.vaps]; // TOBEREMOVED BY AJC IN CSR-1384
@@ -166,7 +183,7 @@ export default {
vm.setCmsContent(resultMap.cmsContent);
vm.availableLineItems = pricedAvailableLineItems;
- vm.lineItems = lineItems;
+ vm.lineItems = taxedLineItems;
});
},
data() {
diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js
index df03693ee..c33715c2b 100644
--- a/src/mixins/base-mixin.js
+++ b/src/mixins/base-mixin.js
@@ -88,6 +88,7 @@ export default {
lineItem.partType != partTypeStrings.RAIN_DEFENSE
);
});
+
let totalPrice = this.getTotalPriceOfAllLineItemsAndChildParts(lineItemsToPrice);
return totalPrice;
},
diff --git a/src/store/index.js b/src/store/index.js
index 4b383a546..852bb1570 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -2175,14 +2175,13 @@ export const actions = {
pageNameToLog,
}
) {
- const flattenedLineItemsWithChildParts =
- getFlattenedArrayOfLineItemsWithChildParts(pricedLineItems);
-
- const lineItemsWithOnlyPriceInfo = flattenedLineItemsWithChildParts.map((lineItem) => ({
+ // const flattenedLineItemsWithChildParts =
+ // getFlattenedArrayOfLineItemsWithChildParts(pricedLineItems);
+ const lineItemsWithOnlyPriceInfo = pricedLineItems.map((lineItem) => ({
partNumber: lineItem.partNumber,
- laborAmount: lineItem.laborAmount,
- kitPrice: lineItem.kitPrice,
- sellingPrice: lineItem.sellingPrice,
+ laborAmount: lineItem.laborAmount ?? 0,
+ kitPrice: lineItem.kitPrice ?? 0,
+ sellingPrice: lineItem.sellingPrice ?? 0,
}));
const pricedLineItemsFormattedForRequest =
@@ -2531,13 +2530,15 @@ function addPricesToLineItems(lineItems, pricingLineItems) {
lineItem.laborAmount = pricedLineItem.laborAmount;
lineItem.sellingPrice = pricedLineItem.sellingPrice;
lineItem.kitPrice = pricedLineItem.kitPrice;
+ lineItem.salesTax = pricedLineItem.salesTax;
});
return pricedLineItems;
}
function addTaxesToPricedLineItems(lineItems, taxingLineItems) {
- lineItems.forEach((lineItem) => {
+ const taxedLineItems = deepClone(lineItems);
+ taxedLineItems.forEach((lineItem) => {
let lineItemIndex = taxingLineItems.findIndex(
(taxingLineItem) => taxingLineItem.partNumber === lineItem.partNumber
);
@@ -2547,10 +2548,10 @@ function addTaxesToPricedLineItems(lineItems, taxingLineItems) {
}
let taxedLineItem = taxingLineItems.splice(lineItemIndex, 1)[0];
- lineItem.SalesTax = taxedLineItem.SalesTax;
+ lineItem.salesTax = taxedLineItem.salesTax;
});
- return lineItems;
+ return taxedLineItems;
}
function getArrayOfAllLineItems(lineItems) {