diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index 214b6111e..ffb3d2353 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -35,7 +35,7 @@ :isNoComp="isNoComp" :isExpandedOnLoad="false" :isMSRFeeApplicable="isMSRFeeApplicable" - @itemRemoved="reTaxItemsOnOrder" /> + @itemRemoved="evaluatePromosAndTaxItemsOnOrder" /> 0; + const hasActivePromos = this.lineItems.promos.length > 0; + if (hasInactivePromos || hasActivePromos) { + await this.revalidatePromos(); + } this.lineItems = await baseMixin.methods.dispatchStoreActionWithLogging( storeActions.TAX_ORDER_ITEMS_AND_SAVE_SERVER_DATA, { diff --git a/src/layouts/payment/payment.spec.js b/src/layouts/payment/payment.spec.js index ad98814d2..1b36d0644 100644 --- a/src/layouts/payment/payment.spec.js +++ b/src/layouts/payment/payment.spec.js @@ -319,7 +319,6 @@ describe("payment.vue", () => { ); // Assert - expect(vmMock.availableVaps).not.toBeUndefined(); expect(vmMock.lineItems).not.toBeUndefined(); expect(vmMock.setCmsContent).toBeCalled(); diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 992795321..b8e481174 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -42,7 +42,7 @@ { vm.setCmsContent(resultMap.cmsContent); - vm.availableVaps = taxedVaps; - vm.lineItems = lineItems; + vm.lineItems = deepClone(store.getters.order.lineItems); vm.$nextTick(() => { if (vm.$refs.cart) { diff --git a/src/mixins/analytics-mixin.js b/src/mixins/analytics-mixin.js index fbaccb113..ef5735bc3 100644 --- a/src/mixins/analytics-mixin.js +++ b/src/mixins/analytics-mixin.js @@ -200,94 +200,6 @@ export default { await this.logPageView(analyticsPageEvents.ENTRY); }, - // This sends session data to the session logging endpoint on the analytics service. - // From there, it uses aws kinesis data stream, DigitalConsumer-Session-Data-Stream, - // and aws FireHose stream, DigitalConsumer-Session-Firehose, to push data to an - // S3 bucket, safelite-dev-digitalconsumer-session-data-us-east-2/1. - // This bucket data is then picked up by snowflake for analytics use. - async pushFmgSessionData() { - const hasSubmittedOrder = baseMixin.methods.hasSubmittedOrder(); - const submittedOrder = baseMixin.methods.getSubmittedOrder(); - const order = hasSubmittedOrder ? submittedOrder : store.getters.order; - - const hasSubmittedApplicationUser = baseMixin.methods.hasSubmittedApplicationUser(); - const submittedApplicationUser = baseMixin.methods.getSubmittedApplicationUser(); - const applicationUser = hasSubmittedApplicationUser - ? submittedApplicationUser - : store.getters.applicationUser; - - const isEarlyBird = order?.lineItems?.supportingItems?.find( - (lineItem) => lineItem.partType == partTypeStrings.EARLY_BIRD - ); - - const promoCodes = Array.isArray(order?.lineItems?.promos) - ? order?.lineItems?.promos - .map((item) => item.promoCode) - .filter((code) => code) - .join(", ") - : null; - - const glassProducts = order?.damage?.glassToReplace?.map( - (part) => `${part.glassLocation}-${part.glassName}` - ); - - var sessionData = {}; - sessionData.currentPage = getPageNameFromRouter(); - sessionData.sid = getSessionIdValue(); - sessionData.deviceId = getDeviceIdValue(); - sessionData.fmgSessionId = applicationUser?.savedSessionId; - sessionData.userId = getUserIdValue(); - sessionData.carId = order?.vehicle?.carId; - sessionData.vehicleYear = order?.vehicle?.year; - sessionData.vehicleMake = order?.vehicle?.make; - sessionData.vehicleModel = order?.vehicle?.model; - sessionData.vehicleStyle = order?.vehicle?.style; - sessionData.hasVin = order?.vehicle?.vin ? true : false; - sessionData.cashOrInsuranceAccountType = order?.payment?.isInsurance - ? "Insurance" - : "Cash"; - sessionData.damageType = order?.damage?.isRepair ? "Repair" : "Replace"; - sessionData.productType = glassProducts; - sessionData.eon = order?.eon; - sessionData.referralNumber = order?.referralNumber; - sessionData.referralSequenceNumber = order?.referralSequenceNumber; - sessionData.referralDate = order?.referralDate; - sessionData.workOrderNumber = order?.workOrderNumber; - sessionData.workOrderId = order?.workOrderId; - sessionData.isPia = order?.payment?.isPia ?? false; - sessionData.piaType = order?.payment?.piaType; - sessionData.parentAccountNumber = order?.payment?.parentAccountNumber; - sessionData.settledTenderAmount = order?.settledTenderAmount; - sessionData.recalRequired = containsRecalParts(order?.lineItems); - sessionData.recalType = getRecalPartNumbers(order?.lineItems?.glassParts); - sessionData.serviceZipCode = order?.serviceLocation?.provider?.address?.zipCode - ? order?.serviceLocation?.provider?.address?.zipCode - : order?.serviceLocation?.zipCode; - sessionData.providerCtu = order?.serviceLocation?.provider?.address?.zipCodeCtu - ? order?.serviceLocation?.provider?.address?.zipCodeCtu - : order?.serviceLocation?.zipCodeCtu; - sessionData.appointmentDate = `${order?.schedule?.date} ${order?.schedule?.startTime}`; - sessionData.serviceType = order?.serviceLocation?.appointmentType; - sessionData.promoCodes = promoCodes; - sessionData.hasTechnicianNotes = order?.serviceLocation?.techNotes ? true : false; - sessionData.paymentMethod = order?.payment?.piaType; - sessionData.isTextingOptedIn = order?.customer?.isSmsOptIn ? true : false; - sessionData.isEarlyBird = isEarlyBird ? true : false; - sessionData.insuranceCo = order?.policy?.insuranceCompanyName; - sessionData.deductible = order?.policy?.currentDeductible; - sessionData.isVerified = order?.payment?.insuranceCoverage?.isVerified ?? false; - sessionData.isNoComp = order?.policy?.isNoComp; - sessionData.isItac = order?.policy?.isItac; - sessionData.subTotalPrice = getSubTotal(order?.lineItems); - sessionData.totalPrice = getAmountDue(order?.lineItems, true); - - await baseMixin.methods.dispatchStoreAction( - storeActions.LOG_FMG_SESSION_DATA, - sessionData, - false - ); - }, - pushOrderToDataLayer() { // helper check for if an object is defined (but maybe falsey) const isDefined = (x) => x !== null && x !== undefined;