diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index d0155b0d2..33fe5b34d 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -231,28 +231,45 @@ export default { // Pricing // Only fire for completed orders? - if (hasSubmittedOrder) { - const lineItems = order.lineItems ?? {}; - const combinedLineItems = [ - ...(lineItems.glassParts ?? []), - ...(lineItems.supportingItems ?? []), - ...(lineItems.vaps ?? []), - ...(lineItems.promos ?? []), - ]; + const lineItems = order.lineItems ?? {}; + const combinedLineItems = [ + ...(lineItems.glassParts ?? []), + ...(lineItems.supportingItems ?? []), + ...(lineItems.vaps ?? []), + ...(lineItems.promos ?? []), + ]; + + const isPricingAvailable = + combinedLineItems.length > 0 && + combinedLineItems.every( + (lineItem) => + isDefined(lineItem.kitPrice) && + isDefined(lineItem.laborAmount) && + isDefined(lineItem.sellingPrice) + ); + const isTaxAvailable = + isPricingAvailable && + combinedLineItems.every((lineItem) => isDefined(lineItem.salesTax)); + + if (isPricingAvailable) { const subtotal = baseMixin.methods .getTotalPriceOfAllLineItemsAndChildParts(combinedLineItems, false) .toFixed(2); + payload.priceSubTotal = parseFloat(subtotal); + } else { + payload.priceSubTotal = ""; + } + + if (isTaxAvailable) { const total = baseMixin.methods .getTotalPriceOfAllLineItemsAndChildParts(combinedLineItems, true) .toFixed(2); payload.priceTotal = parseFloat(total); - payload.priceSubTotal = parseFloat(subtotal); } else { payload.priceTotal = ""; - payload.priceSubTotal = ""; } // Recalibration